ずっと前からやるつもりで先延ばしになっていた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。
