KVM上にVirtIOドライバを使うWindows 7をインストールする

準仮想化ドライバであるVirtIOを使うことでWindows仮想マシンのIOが速くなるか試してみたかったので、KVM上にVirtIOドライバを使うWindows 7をインストールしてみました。

凖仮想化とは、全ての命令をソフトウェアエミュレーションする完全仮想化に対して、ゲストOSなどにある程度修正を加えて、物理ハードウェア上で動かすのに近い形で動作させる仮想化のことです。Windowsの場合はカーネル自体には修正を加えれられないので、準仮想化ドライバであるVirtIOを使うことで準仮想化を実現できます。

環境

  • ホストOS: Ubuntu 14.04 64bit
  • ゲストOS: Windows 7 64bit
  • ハイパーバイザ: qemu-kvm 2.0.0
  • ドライバ: virtio-win-0.1-74.iso

インストール

kvmvirt-managerのインストール

$ sudo apt-get install qemu-kvm qemu-system libvert-bin virt-manager

libvirtdグループに入っていないと仮想マシンの操作ができないみたいですが、上のコマンドを実行するだけで現在のユーザーをlibvirtdグループに追加してくれるので、ログインし直してグループの設定を反映させます。

Windows用のVirtIOドライバをダウンロード

Vistaより新しい64bit版Windowsでは通常デジタル署名されたドライバしかインストールできません。
幸いFedoraプロジェクトでデジタル署名されたドライバを公開してくれているので、それを使います。
公式ページ WindowsGuestDrivers/Download Drivers - KVMLatest VirtIO drivers for Windows from Fedora からドライバが入ったisoファイルをダウンロードできます。

仮想マシンの作成

virt-managerを起動して、通常と同じように仮想マシンを作成します。
最後の画面でCustomize configuration before installにチェックを入れておきます。

f:id:itiut:20140602233341p:plain

設定画面が開くので、ディスクの設定でDisk busVirtioに、NICの設定でDevice modelvirtioに設定してインストールを開始します。

f:id:itiut:20140602233342p:plain

f:id:itiut:20140602233343p:plain

Windowsのインストール

インストールを進めると、初めはドライバが無いためディスクが認識されません。

f:id:itiut:20140602233344p:plain

Load driverを押すと次のような画面になります。

f:id:itiut:20140602233345p:plain

仮想マシンの設定画面からCDROMの設定を開き、Windowsのインストールisoファイルをダウンロードしておいたドライバのisoファイルに変更した後、仮想マシンの画面に戻ります。

f:id:itiut:20140602233346p:plain

Browseを押すとドライバを探す画面になるので、CDROMの中からインストールするWindowsにあったバージョンとアーキテクチャのディレクトリを選択します。

f:id:itiut:20140602233348p:plain

ドライバが見つかったので、全て選択してNextを押してインストールします。

f:id:itiut:20140602233349p:plain

ドライバのインストールが終わるとディスクが認識されます。

f:id:itiut:20140602233350p:plain

ここではWindows cannot be installed to this disk.と出てきて先に進めなくなっていますが、CDROMをWindowsインストーラisoファイルに変更し直せば先に進むことができます。

f:id:itiut:20140602233351p:plain

後は普通にインストールするだけです。

インストールして少し使ってみて思ったのですが、KVMにはVMwareVirtualBoxにはあるディスプレイの解像度の自動調整機能とかは無いんでしょうか。ググってもよくわかりませんでした。