アシアルブログ

アシアルの中の人が技術と想いのたけをつづるブログです

kvmでwindows7を入れてみました

kvmwindows7を入れてみました

仮想化といえば、VMWareXenが有名ですが、
今回は割と新しいkvmを使用したいと思います。

kvmと言っても切替器ではなく、KernelbasedVirtualMachineのkvmです。

kvmとは
http://ja.wikipedia.org/wiki/Kernel-based_Virtual_Machine

要は、軽量でシンプルな仮想化システムです。
kvm自身では何もできないので、フロントエンドとしてqemuを使用します。

ぐだぐだ書いてもおもしろくないので、百聞は一見にしかず。ぜひ試してみてください。

0・前提条件
カーネルは2.6.20以降が必要
AMD-V、IntelVTなどの仮想化機構が必要
・~/vm/ にvmのディスクイメージを入れます
・~/win7.iso がwindows7のDVDイメージです

1・kvmのインストール
kvmqemu-utilsをインストールします。
Debian系使っていることを前提とすれば、


$ sudo apt-get install kvm qemu-utils

以上。簡単ですね。

2・ディスクイメージの作成
これはqemu-utilsのqemu-imgを使用して以下コマンドで作成します。


## qcow2で ~/vm/win7.img に 30GBで作成
$ qemu-img create -f qcow2 ~/vm/win7.img 30G


または、ddであらかじめスペースを確保する方法もあります。
(最初から領域を確保するので、若干ディスクアクセスが早くなるかもしれません)


$ dd if=/dev/zero of=~/vm/win7.img bs=1024 count=$((20 * 1024 * 1024))


3・起動
windowsをインストールします


$ sudo kvm -hda ~/vm/win7.img -cdrom ~/win7.iso -boot d -m 1024 -monitor stdio

この一行で仮想マシンが起動します。
(後はwindowsのインストールを道なりに進むだけですので割愛します)

4・その他
・ネットワーク
起動オプションにの-redirでホストの任意のポートにゲストの任意のポートをマッピング出来るので、
例えば以下のようにして起動すると、rdesktopで接続出来ます。


$ sudo kvm -hda ~/vm/win7.img -m 1024 -monitor stdio -redir tcp:3389::3389


・USBデバイス
VMPlayerのようにワンクリックでとはいきませんが、コンソールで以下のようにすれば接続できます。


# -usbオプションをつけてkvmを起動
# ホストのデバイスを確認
(qemu) info usbhost
【省略】
    Class 00: USB device 04fe:000d, HHKB Professional JP
  Device 1.5, speed 1.5	Mb/s
    Class 00: USB device 0458:0048, Wireless Keyboard  &	Mouse
  Device 1.6, speed 480	Mb/s  	      	      	      	      	<= これを追加   
    Class 00: USB device 1307:0163, Flash Disk

# usb_addで追加 
(qemu) usb_add host:1307:0163

# 仮想マシンに接続中のデバイス確認
(qemu) info usb 
  Device 0.2, Speed 480	Mb/s, Product Flash Disk

なお、/proc/bus/usb/devicesがないといわれる場合には以下を実行してマウントしておきます。


$ sudo mount -t	usbfs none /proc/bus/usb



使用感としては、思ったよりサクサク動いています。
kvmを使わないqemuの場合は実用に耐えうるスピードではありませんでしたが、kvmを使用するとほぼネイティブと言ってもいいくらいのスピードですね。
ただし、グラフィック系はあまり速くないので、rdesktopでつないだ方が結果として快適かもしれません。
出来て間もないため、サーバー用途にはまだ不安が残りますが、テスト用マシンなどの用途には実用的かと思います。