15 January 2017

(Ubuntu) KVMのインストール

CanonのドキュメントスキャナーDR-150を、VMWare上のWindows XPで動作させようとすると、エラーとなる。解決手段として、KVM上のWindows XPで動作させるため、Ubuntu 16.04にKVMの関連ソフトをインストールし、VMWareのWindows XPを移植した。

パッケージのインストール

$ sudo apt-get install kvm qemu-kvm libvirt-bin virt-manager bridge-utils

パッケージのインストール時に、自動的にkvm用のネットワーク・ブリッジがインストールされる。 これまでeth0だった識別名が自動的に変更され(ここでは enp1s0 となっている)、ブリッジvirbr0が新たに作られる。

# ifconfig 
enp1s0    Link encap:イーサネット  ハードウェアアドレス 40:61:86:f1:f0:07  
          inetアドレス:192.168.1.11  ブロードキャスト:192.168.1.255  マスク:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:219063 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:223890 エラー:0 損失:2 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:1000 
          RXバイト:175680333 (175.6 MB)  TXバイト:151089791 (151.0 MB)
 
lo        Link encap:ローカルループバック  
          inetアドレス:127.0.0.1  マスク:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  メトリック:1
          RXパケット:720420 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:720420 エラー:0 損失:0 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:1 
          RXバイト:5706177846 (5.7 GB)  TXバイト:5706177846 (5.7 GB)
 
virbr0    Link encap:イーサネット  ハードウェアアドレス 00:00:00:00:00:00  
          inetアドレス:192.168.122.1  ブロードキャスト:192.168.122.255  マスク:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  メトリック:1
          RXパケット:293060 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:220730 エラー:0 損失:0 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:1000 
          RXバイト:157216373 (157.2 MB)  TXバイト:88603913 (88.6 MB)

KVMの設定ファイル、作業ディレクトリ

kvm-qemuの設定ファイルは、 /etc/libvirt ディレクトリに格納されている。 今後、新たに作る仮想マシン(ゲストOS)毎の設定は /etc/libvirt/qemu ディレクトリ内にxmlファイルとして格納される。 たとえば次のような感じに格納されることになる。

$ ll /etc/libvirt/qemu/
合計 24
drwxr-xr-x 3 root root 4096  1月 14 22:15 ./
drwxr-xr-x 6 root root 4096  1月 14 20:13 ../
-rw------- 1 root root 4828  1月  1 11:52 Lubuntu16.04.xml
-rw------- 1 root root 4000  1月 14 22:15 WindowsXP.xml
drwxr-xr-x 3 root root 4096  1月 14 20:13 networks/

別のところから仮想マシン(ゲストOS)を移動してくる場合は、このディレクトリにxmlファイルを格納した後に、virshコマンドで

$ virsh define /etc/libvirt/qemu/new_os.xml

仮想マシン(ゲストOS)の実体ファイル類は /var/lib/libvirt ディレクトリ内に格納される。

ログオンユーザをlibvirtdグループに追加

$ gpasswd -a user libvirtd

VMWare上のWindowsでの下準備

qemuのディスクコントローラの認識に失敗し、起動時にブルースクリーンが表示されるのを抑止するため、まずVMWare上のWindowsを起動し、あらかじめ次のレジストリ値を反映しておく。

82371SB_PIIX3_IDE_controller.reg
Windows Registry Editor Version 5.00
 
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_8086&dev_7010]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"

VMWareのディスクイメージを、qemu形式に変換する

VMWareの仮想ディスクが「1ファイル」形式の場合は、次のコマンドのみで変換できる。

$ qemu-img convert -f vmdk WinXP.vmdk -O qcow2 WinXP.qcow2.img

VMWareの仮想ディスクが(xxxx-s001.vmdk, xxxx-s002.vmdk ... のように)複数のファイルに分かれている場合は、まず1つのファイルに合体させてから変換する。

$ qemu-img convert -f vmdk WinXP_dsk.vmdk -O vmdk WinXP.vmdk
$ qemu-img convert -f vmdk WinXP.vmdk -O qcow2 WinXP.qcow2.img

仮想マシンマネージャー virt-manager で仮想マシンの新規作成

VMWareの仮想ディスクから変換作成したqemu形式の仮想ディスクを用いて、新しい仮想マシンを作成する。

仮想マシンマネジャーの「新しい仮想マシンの作成」で「既存のディスクイメージをインポート」を選択

20170115-newvirtos01.jpg

次のステップで、既存のストレージパスを設定するため「参照」ボタンを押し、ファイル選択画面では「ローカルを参照」ボタンを押してファイルを選択する

20170115-newvirtos02.jpg

仮想マシン起動前に、仮想デバイスの設定を行う

20170115-virtconfig.jpg

■ USBタブレット

スーパーバイザ側(Ubuntu)とゲストOS(Windows)でマウスカーソルを行き来できるようにするため、「USB タブレット」がデバイスとして追加されていること。 (画面上では、タブレットと表記されている)

■ サウンド

Windows XPの標準ドライバで対応できる「ac97」を選択する。

■ ビデオ

「QXL」を選択すると、パフォーマンスが上がるらしい…。 QXL用のドライバはSPICEのダウンロードページより、Windows QXL driverをダウンロードしてインストールする。