FC5+Xen+Slackware

coLinux実験の勢いに乗って、Fedora Core 5に含まれているXenの実験をしてみました。ホストOSとしては、最新のXen3.0が含まれているFedora Core 5を選択しました。

取り合えず、Linux World 5月号に掲載されている「Linux OS別 Xen導入ガイド」を参考にして、ゲストOSとしてFC5をyumでインストールする方法を試してみました。ところが、どうもレポジトリにうまくアクセスできないようなので、路線変更。
# 記事中に書かれているようにyumの設定ファイルを記述すれば良いのかもしれません。

ということで、ゲストOSとして、coLinuxの実験のためにインストールしたslackwareを流用することを試みてみました。slackwareとFC5を別のマシンにインストールした都合上、dumpコマンドを使った吸い出したファイルシステムをscpでコピーして、restoreコマンドでイメージファイルに書き出すという方法を取りました。
# おそらくddでイメージ吸い出し+scpでコピーでも問題ないと思いますが、転送時間削減とdump/restoreコマンドを試してみるという観点から、この方法を取りました。

以下は使ったコマンドのメモ。

ファイルシステムのダンプ:

# dump -0zf slackware-root.dump /dev/hdaX
  • -0オプションで、フルバックアップ (ダンプレベル0) を指定。
  • -fオプションで、出力先のファイル名を指定。
  • -zオプションで、バックアップファイルの圧縮を指定。

ファイルシステムのリストア: 出力先のディレクトリをカレントディレクトリとして、以下のコマンドを実行。

# restore -rf slackware-root.dump
  • -rオプションで、ファイルシステム全体の展開を指定。
  • -fオプションで、バックアップファイルのファイル名を指定。

この後、前述のLinux World記事を参考にして、ホストOS (domain0) からゲストOSのディスクイメージをマウントして、以下の変更を加えました。

  • /etc/fstab を書き換えて、/dev/hda1 をルートディレクトリをしてマウントするように変更。
  • ホストOS上のXen domainU用のカーネルモジュールを、/lib/modules/ にコピー。

さらに、以下のようなXen設定ファイルを作成。

name = "vm_slack"
memory = "256"
kernel = "/boot/vmlinuz-2.6.16-1.2080_FC5xenU"
ramdisk = "/boot/initrd-2.6.16-1.2080_FC5xenU.img"
disk = ['file:/tmp/xen/slack-root.img,hda1,w']
vif = ['']
root = "/dev/hda1 ro"

これで xm create を実行したところ、とりあえずゲストOSが起動することまでを確認しました。ネットワークの設定は後日行いたいと思います。

coLinuxVMwareのようにWindows上でLinuxが動くような技術と比較すると、Xenは面白みが今ひとつ少ないかもしれません。