XenでWindowsを動かす

ちと思うところがあって、Windows Terminalの実験をしたくなる。

とりあえずRDPでリモートデスクトップが動いて、ノートにつながる。まるっきり普通に動いて、WMPやらGoogle Earthなんかも普通に使えることがわかり、「RDP使えるじゃん」と納得する。

次は、リモートデスクトップじゃないWindows Terminalを試そうと思って、Windows 2003 Serverの評価版を落として来る。180日間の限定とゆーことだけど、試せりゃいいんだからこれで十分だ。

ところが、これを入れるマシンがない。この前まで動かしていたXeonのサーバがあることはあるが、あれはうるさいし電気を食う。玄関の外に設置しようと、一応サーバが置けるくらい古本を片付けるのだが、電気を食うのは今さら嫌だ。

「そんな時はVMで」と思うのだが、このマシンはどうやってもVMWareが入らない。カーネルがAMD64なのがいけないのか、Debianがいけないのか、VMWareのインストーラにバグがあるのか知らないが、とにかく入らない。入らないから使えない。

ノートに接続してる間に、Xが腐れてしまったので、Xを再起動した。そこでふと「落ちたついでにXen入れちゃえ」ということを思いつく。VMでないと面倒臭い仕事がいくつかあるので、それらもひっくるめてXenでやれたらいいなと思いついたわけだ。

とりあえずdebから入れて、今までの環境はDomain0にする。本当は普段使いはDomainUにして、Domain0はコントロールだけにする方がいいらしいし、サーバはそう設定したのであるが、デスクトップはそうしない方が扱いが楽そうなので、Domain0を普段使いにし、 DomainUは「実験で起動するVM」ということで設定する。

ブートすると、今までの環境がすんなりDomain0として起動してくれた。

# xm dmesg

してみると、dmesgの中には

VXMON is done

なんてメッセージが出ていた。つまり、HVMドメインが使えるよということだ。これは使わない手はないなと思い、「Windows ServerをXenの上で動かす」ことにする。これでちゃんと動けば、ブツクサとうるさいVMWareの設定に悩む必要がなくなる。

あれこれ悩むのも面倒臭いので、普通のRAW形式のイメージを使うことにした。

# dd if=/dev/zero of=/home/ogochan/win.img bs=1024M count=40

これで40GB確保。そして、

# cat > windows.conf
name="windows"
kernel="/usr/lib/xen-3.0.3-1/boot/hvmloader"
builder="hvm"
memory="512"
device_model="/usr/lib/xen-3.0.3-1/bin/qemu-dm"
vif=['type=ioemu,bridge=xenbr0']
disk=['file:/home/ogochan/win.img,ioemu:hda,w','phy:/dev/hdc,hdc:cdrom,r']
boot="d"
sdl=1
localtime=1

などと打ち込んでwindows.confを作る(本当にcatで入れた)。

この設定だと、WindowsはSDLの窓が開いて、そこにデスクトップが表示される。

そこで、

# xm create windows.conf

とやると、SDLの窓が開き、CDドライブからデカい音が出ながら、「俺ここで上がるの普通だよね」という顔をしながら、Windowsのインストーラが起動した。って、本当はVMが起動するまでにしょーもない間違い(スペルミスとかパス間違いとか)があったのだが、特別にハマることもなく修正するだけで、何事もないかのように起動してしまった。

GNOMEのオートマウントに若干の邪魔をされつつも、普通にWindowsが入って、特別に遅さを感じることもなく動いてしまった。VMWareが入らないで何日もハマっていたのが嘘のようだ。

後はまぁチョイチョイとWindows TerminalやらRDPの設定をしてやって、設定ファイルを

boot="c"
sdl=0
vnc=1

と変更してWindows VMを再起動して、RDPでつないでやると、まるっきり普通に動いてしまった。VMをSDLのままで動かさないのは、終了させた時に油断するとマウスをつかんだまま死んでくれるのと、VMのSDLを消してしまうとVMまで消えてしまうという悲しいことが起きるから。

まー、そんなわけで、「LinuxをWindows Terminalとして使う」ということも「XenでWindowsを動かす」ということも、何ら問題なくできることが判明。

あとはWindowsのアプリケーションが何食わぬ顔でXの中にいてくれればなぁ。今だと「ターミナルの窓の中」なんだよね。