・Domain0はGentoo
・DomainUにCentOS
という組み合わせも実現できました!
前回と同様、GentooでのXen環境は完成しているという前提で話を進めます。
(下準備については前回記事を参照してください)
まずはCentOSで使うファイルシステムを作成します。
Gentooやubuntuの時と違い、どうも/bootないと駄目っぽいので、/ に6GB、/boot に128MB、swap に512MBという構成にしました。
lvcreate -L6G -ndomU_cent_root rootvg
lvcreate -L128M -ndomU_cent_boot rootvg
lvcreate -L512M -ndomU_cent_swap rootvg
lvcreate -L128M -ndomU_cent_boot rootvg
lvcreate -L512M -ndomU_cent_swap rootvg
ファイルシステムはOSの導入時にフォーマットされるため、ここではLVを作るだけでOKです。
続いてvirtinstをインストールします。
…が、依存関係で一緒に導入されるlibvirtが、最新版(0.4.4 - 2008/07/16時点)だとうまく動きません。0.4.2だとうまく動くので、パッケージのmaskをしておきます。
echo ">app-emulation/libvirt-0.4.2" >> /etc/portage/package.mask
また、virtinstは普通にemergeしようとするとエラーになってしまうので、FEATURESを指定して以下のように実行します。(ついでにUSEフラグにlvmとxenもセットしていますが必須かどうかイマイチ不明…)
FEATURES="-sandbox" USE="lvm xen" emerge -av virtinst
そしたらインストール…と行きたいところなのですが、Xenの設定がデフォルトのままだとインストールコマンドであるvirt-installが正常に動作しません。Xenの設定ファイルである/etc/xen/xend-config.sxpの以下のエントリを変更します。
#(xend-unix-server no)
↓ 変更
(xend-unix-server yes)
↓ 変更
(xend-unix-server yes)
変更を反映するためにサーバを再起動します。
virt-installでCentOSのインストールを開始します。
virt-install -n cent5 -r 256 -f /dev/rootvg/domU_cent_boot -f /dev/rootvg/domU_cent_swap -f /dev/rootvg/domU_cent_root -b xenbr0 -p --nographics -l http://ftp.iij.ad.jp/pub/linux/centos/5/os/i386/
debootstrap(ubuntu)の時とは違い、実マシンに普通にインストールするときと同じインストーラが実行されます。なのでXenであることを特に意識せずにインストールを進めればOKです。デフォルトだとCentOSはファイルシステムにLVMを使おうとしますが、せっかくファイルシステムを3つ用意したのでLVMは使わない構成に変更します。(LVM on LVMというのも何だか効率が悪そうなので) LVM on LVMが気にならないのであれば、用意するファイルシステムを1つだけにしてディスクの構成はインストーラ任せにしてしまうのもありだと思います。
インストール時にgrubを導入するのを忘れないようにしてください。DomUなのにgrub?という気がするのですが、Gentooやubuntuのように(というよりもvirt-installの仕様だと思いますが)カーネルをDom0側に持ってきてXenからブート!という芸当が出来ません。(いや、出来ないんじゃなくて『しなくていい』と言うべきなのでしょうか) pygrubという専用のブートローダを使うためにもgrubをインストールしておく必要があります。(/bootが必要なのもこの辺の事情だと思われます)
インストールが完了したらリブートします。OSの初回起動時に"Setup Agent"なるものが起動しますが、どれも実行せずにexitしてください。実行してしまうとツール自身を終了できずに後続処理が行えなくなってしまいます。
無事にCentOSのログイン画面が出たら、rootでログインしてshutdownします。ただ、どういうわけだかshutdownしてもDomUが残ってしまうため、shutdown完了後にDom0側から強制的に削除します。
xm delete cent5
Xenの設定ファイルを記述します。
memory = 256
name = "cent5"
vif = ['mac=00:16:3e:00:00:02, bridge=xenbr0']
disk = ['phy:rootvg/domU_cent_boot,xvda,w', 'phy:rootvg/domU_cent_swap,xvdb,w', 'phy:rootvg/domU_cent_root,xvdc,w']
nographic = 1
bootloader = "/usr/bin/pygrub"
name = "cent5"
vif = ['mac=00:16:3e:00:00:02, bridge=xenbr0']
disk = ['phy:rootvg/domU_cent_boot,xvda,w', 'phy:rootvg/domU_cent_swap,xvdb,w', 'phy:rootvg/domU_cent_root,xvdc,w']
nographic = 1
bootloader = "/usr/bin/pygrub"
ファイル名は/etc/xen/cent5としましょう。(何でもいいんですが)
全ての準備が整いました。CentOSを起動しましょう。
xm create -c cent5
"CentOS on gentoo"環境のできあがり♪
ちなみにvirt-installを使うと、ファイルシステムは独自のフォーマットになるみたいです。なので普通にDom0からファイルシステムをマウントして使ったり出来ません。あ、もちろんDomUから見ればext3なり何なりの普通のファイルシステムですが。仮想ディスク(この場合論理ボリューム)に対してvirt-installがパーティションの定義をしてしまうため、せっかくのLVMの良さ(ボリュームの拡張が出来る)が生かし切れないのが残念なところ。LVM on LVMにすれば実現できなくもないのですが、あまり美しくないですよね。このあたりはもう少し良い方法を追求してみたいところです。
以下のサイトの情報を参考にさせていただきました。
(ありがとうございました!)
Xen特集 準仮想化ドメインの設定 VA Linux Systems Japan
http://www.valinux.co.jp/contents/tech/techlib/xen/xen_sp_0703.html
Gentoo Forums :: View topic - [Solved] xen - amd64 - virtinst emerge (sandbox error)
http://forums.gentoo.org/viewtopic-p-5105322.html?sid=f91b27d9d6dd4e9548759d6de7985959
[Xen-users] Virt-install not working - ama...@ncsu.edu - com.xensource.lists.xen-users - MarkMail
http://markmail.org/message/pwn3bfvhq4tmnbbw#query:virtinst%2Fcli.py%20getconnection+page:1+mid:hioyhr5u5q7bxf2s+state:results
libvirt - Wikipedia
http://ja.wikipedia.org/wiki/Libvirt