Linux Xen 上で Windows XP を動かす
家では MacBook をメインで使っていますが、Illustrator / Photoshop (Windows 版) で図を書いたり、Visual C++ や Office が必要な時にはわざわざ ThinkPad を起動し VNC で接続したり場所を移動したりしています。Windows XP はかなりレガシーな雰囲気が否めませんが開発事を行っていると中々手放すわけには行かない環境でもあります。
そこで自宅サーバのコア数/メモリ/ディスクに余裕を持たせ Xen で仮想化した上に Windows XP を構築し、必要なときに VNC で接続して使おうと思い立ち新しいサーバを構成したわけです。この記事では Xen 上で Windows XP を起動するまでの構成について書いています。
Xen で Windows を動作させるには準仮想化に対応した CPU が必要です。具体的には VT (Intel Virtualization Technorogy) に対応している必要がありますので、使おうとしている CPU が VT に対応しているか先に調べてください。
CPU | Xeon E3-1230 |
---|---|
OS | CentOS 5.6 final, Kernel 2.6.18-238.12.1.el5 |
Xen | 3.0.3-120.el5_6.2 |
VNCクライアントの準備
新しく構成する Windows の GUI 操作は全て VNC 経由で行いますので適当な VNC クライアントを用意してください。Windows であれば Real VNC が無料で使用できます。Mac OS X では、標準の画面共有や Chicken of the VNC と Xen VNC との相性が著しく悪いためここなどを参考にして別の VNC クライアントを使用して下さい。
インストールイメージ作成
Windows XP インストール CD の ISO イメージファイルを作成します (物理ディスクを直接差し込んで使用する場合は後述の --cdrom 値を書き換えてください)。後の作業ではこのファイルが /srv/xen/WXPFPP_JA.iso に置いてあるものとします。
リソース割り当て
リソースの割り当ては以下の様にしておきます。
名前 | amber |
---|---|
CPU | 2個 (1Core/2Thread) |
メモリ | 2GB |
ディスク | 100GB |
VNCポート | 5920 |
ディスク以外に関しては構成後に設定ファイルレベルで調整が可能なのであまり気にしなくても大丈夫です。逆にディスク容量は「後で変更が難しいもの」として必要な容量を決めて下さい。
xend の VNC 設定
ローカルホスト以外からの VNC 接続が必要になるため xend の VNC バインドアドレスを設定しておきます。/etc/xen/xend-config.sxp を開いて以下の設定を追加して下さい。またファイアウォールの設定で VNC ポート 5920 を開けます (セキュリティ上の問題があるため LAN 内の IP アドレスに限定してください)。
(vnc-listen '0.0.0.0')
仮想ノードの作成とインストール
virt-install コマンドを使用してディスクイメージと環境構成を作成します。100GB のディスクを作成するのに 1 時間近くかかりますので dd コマンドなどで作っておくのが良いかもしれません。
root@cobalt# mkdir /srv/xen/amber root@cobalt# virt-install --name=amber --ram=2048 --vcpus=2 --file=/srv/xen/amber/disk1 \ --file-size=100 --nonsparse --vnc --vncport=5920 --hvm --os-type=windows --os-variant=winxp \ --cdrom=/srv/xen/WXPFPP_JA.iso インストールを開始しています... ストレージファイルを作成中... | 100 GB 54:09 ドメインを作成中... | 0 B 00:04 (virt-viewer:3206): Gtk-WARNING **: cannot open display: Domain installation still in progress. Waiting for installation to complete.
なにやら警告が出ていますがそもそも Domain-0 には X が入っていないので無視して先へ進みます。--vncport=5920
で構成したので VNC クライアントで VNC ポート 20 へ接続すれば Windows セットアップの初期画面が表示されているはずです。
接続できない場合は --vncport で指定したポート番号が開いているか (netstat -an|grep LISTEN)、該当ポートがファイアウォールの制約に引っかかっていないかなどを確認して下さい。
