Xenの完全仮想化でWindows2000をインストールする

ずっと前からやるつもりで先延ばしになっていたXenの完全仮想化によるWindowsのインストールに挑戦。ただしWindowsのメディアがWindows2000しかないのでこれを使う。

仮想サーバの作成はCLIからvirt-installコマンドを打てばいい。最初に準仮想化と完全仮想化のどちらを使うかと聞かれるので、完全仮想化を選択し、あとはディスクファイル名、サイズ、メモリサイズ、グラフィックの使用/不使用くらいを答えるだけ。

[root@ml115 ~]# virt-install 
Would you like a fully virtualized guest (yes or no)?  This will allow you to run unmodified operating systems. yes
 What is the name of your virtual machine? win2k
 How much RAM should be allocated (in megabytes)? 256
 What would you like to use as the disk (path)? /var/lib/xen/images/win2k
 Would you like to enable graphics support? (yes or no) yes
 What is the virtual CD image, CD device or install location? /dev/cdrom
 

Starting install...
Creating domain...
Unable to connect to graphical console; vncviewer not installed.  Please connect to localhost:5901
Domain installation still in progress.  You can reconnect 
to the console to complete the installation process.
[root@ml115 ~]# 

後半のほうでvncviewerがいないと言われているが、このサーバはXが動いていないので当然。ちゃんとXが動いているサーバではここでvncviewerが起動してそのままインストール画面が表示されるらしい。

とりあえずいったんxm destroy win2kで仮想サーバを落とし、おちついて生成された定義ファイルを確認する。なぜかCDROMの設定が入っていなかったので、disk=に'phy:/dev/cdrom,hdc:cdrom,r'を追加した。またvncunusedも0に変えた。

[root@ml115 ~]# cat /etc/xen/win2k
name = "win2k"
uuid = "22d8eb91-c658-4410-e170-5871be362e40"
maxmem = 256
memory = 256
vcpus = 1
builder = "hvm"
kernel = "/usr/lib/xen/boot/hvmloader"
boot = "c"
pae = 1
acpi = 1
apic = 1
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
device_model = "/usr/lib64/xen/bin/qemu-dm"
sdl = 0
vnc = 1
vncunused = 0
disk = [ "file:/var/lib/xen/images/win2k,hda,w",'phy:/dev/cdrom,hdc:cdrom,r' ]
vif = [ "mac=00:16:3e:2d:3a:4b,bridge=xenbr0,type=ioemu" ]
serial = "pty"

うちの環境では、OSセットアップも含めてGUI作業はXが動いているFedora8ノートから行う。Xenの標準設定ではvncはローカルホストからしか接続できないようになっているので、/etc/xen/xend-config.sxpのvnc-listenの(vnc-listen '127.0.0.1')を(vnc-listen '0.0.0.0')に修正する。service xend reloadで設定を読みなおせばOK。

xm create win2k boot=dで仮想サーバを起動する。boot=dオプションはCD-ROMから起動することを表す。次にFedora8ノートからvncviewerで接続をする。接続先番号は仮想マシンのIDなので、xm listコマンドで調べる。その先はいつものWindowsインストール方法でOK。