CentOS5 の Xen に CUI環境で windows をのっける


CentOS5 の Xen に 「CUI環境で」 windows をのっけます
GUI環境でインストールするための方法は巷にいっぱいあると思うのでそちらをどうぞ。

まず大前提として、windows カーネルのソースをいじれないわけですから、
完全仮想化するため、
CPUがVTに対応していることが必要です

cat /proc/cpuinfo

で flags のところに vmx とあれば VT 対応です。
また、同時にマザーボードBIOSでVT化の設定ができ、
VT化設定してあることが必要です

さらに、CentOS5のインストール時に仮想化を設定しておかなければなりません
私の場合はこれに付け加え、LVMでwindows用のボリュームを10G用意しました

インストール完了後は

yum update

として最新のパッケージをゲットしました

さて、Xenの設定です
virt-install を使う方法もありますが、
私の環境では正常に動作しなかったため手作業で行っています
(動かなかったのはx86_64のときにlib64を使わないためと予想しているが未確認)

ファイルベースのXenを使う場合はHDDとなるファイルを作成します
LVにインストール場合はとばしてだいじょぶです

dd if=/dev/zero of=/var/lib/xen/images/win.img bs=1024 count=10240

↑10GのXen GuestのHDDとなるファイルを作成しました

Xenディレクトリに移動してhvmの設定ファイルのサンプルをコピーします

cd /etc/xen
cp xmexample.hvm win

これをちょちょっといじります

vi win

変更点は以下のとおり

  1. memory = 128 -> memory = 256
  2. name = "ExampleHVMDomain" -> name = "win"
  3. disk = [ 'file:/var/images/min-el3-i386.img,hda,w', ',hdc:cdrom,r' ] -> disk = [ 'phy:/dev/mapper/VolGroupXX-LogVolYY,hda,w', 'file:/tmp/win_install.iso,hdc:cdrom,r', ]
  4. #boot="cda" -> boot="d"
  5. #vnclisten="127.0.0.1" -> vnclisten="0.0.0.0"
  6. #localtime=0 -> localtime=1
  7. #keymap='ja' -> keymap='ja'

  1. メモリ容量の設定
  2. DomainUの名前の設定
  3. DomainUのディスクデバイスの設定 LVMを設定してる。ファイルベースのXenの場合は disk = [ 'file:/var/lib/xen/images/win.img,hda,w', 'file:/tmp/win_install.iso,hdc:cdrom,r', ] cdromデバイスにはwindowsのインストールCDのISOイメージ
  4. CDROMからブートするようにしてあげてる
  5. ここが今回の肝。CUI環境ではVNCでもSDLでもローカルから起動中のGuestにアクセスすることができない そのためローカル以外から見れるようにしてあげなくてはダメ そこでこの値を、アドレス指定なし(0.0.0.0)に設定することによって外部のwindowsなどのGUI端末からVNCで接続できるようになるのだ!!!!!!!!!!
  6. DomainUのBISOの時計?をDomain0と同じにする
  7. キーボードマッピングを日本語キーボードにする


ここで1ヶ所はまった
LVをDomain0でマウントしたまま使おうとした
当然無理なので、umount ではずしてあげて fstab の該当LVをコメントアウト

さて、この状態で

xm create /etc/xen/win

としてあげるだけでGuestとして起動する
あとはwinなり、GUILinuxなりのVNCViewerでDomainUが動いているIPアドレスに(192.168.1.XXX とか)に接続してあげるだけ
windowsのインストール画面が起動してるのだ!!!!!!!

windowsのインストールが完了したら
通常運用のための設定をします

vi /etc/xen/win
  1. disk = [ 'phy:/dev/mapper/VolGroupXX-LogVolYY,hda,w', 'file:/tmp/win_install.iso,hdc:cdrom,r', ] -> disk = [ 'phy:/dev/mapper/VolGroupXX-LogVolYY,hda,w', phy:/dev/.cdrom,hdc:cdrom,r', ]
  2. boot="d" -> boot="cd"


あと個人的にxenで設定されているvncマウスポインタがずれたりして使い勝手が悪いので、
インストールしたwindowsでネットワークを設定してあげてVNCServerをインストールして
そっちのVNCを使っている
そうなると、

vi /etc/xen/win

vnc=0

としてあげるとセキュリティ上すこしやさしい。