・Domain0はGentoo
・DomainUにubuntu
という組み合わせがやっと実現できました!
苦労話はチラシの裏にでも書くとして、さっそく手順を。
GentooでのXen環境は完成しているという前提で話を進めます。
まずは下準備。
ubuntuのカーネルはPAE対応なので、XenおよびGentooのカーネル(Dom0/DomU両方)もPAE対応にしておく必要があります。XenはUSEフラグにpaeを指定して、
USE="pae" emerge -av app-emulation/xen
とすればOK。
カーネルに関しては、CONFIG_HIGHMEM64Gを有効にします。
Processor type and features --->
High Memory Support --->
(X) 64GB
High Memory Support --->
(X) 64GB
カーネルの再構築をして、再起動すれば準備完了です。
(既にPAE対応の環境であれば上記作業は不要です)
それでは、いよいよubuntuの導入です。
基本的には以下のサイトを参考にさせていただきました。
Domain-Uの導入(Ubuntu 8.04) - MRK Laboratory
http://www.mrk.jp/wiki/index.php/Domain-U%E3%81%AE%E5%B0%8E%E5%85%A5(Ubuntu_8.04)
まずはubuntuで使うファイルシステムを作成します。
構成はあまり深く考えず、/ に6GB、swap に512MBとしました。
私の場合はLVMを使っているので以下のコマンドで作成します。
lvcreate -L6G -ndomU_ubuntu_root rootvg
mkfs.ext3 /dev/rootvg/domU_ubuntu_root
lvcreate -L512M -ndomU_ubuntu_swap rootvg
mkswap /dev/rootvg/domU_ubuntu_swap
mkfs.ext3 /dev/rootvg/domU_ubuntu_root
lvcreate -L512M -ndomU_ubuntu_swap rootvg
mkswap /dev/rootvg/domU_ubuntu_swap
続いてdebootstrapをインストールします。
emerge -av dev-util/debootstrap
debootstrapでベースとなるシステムのセットアップをします。
mount /dev/rootvg/domU_ubuntu_root /mnt
debootstrap --arch=i386 hardy /mnt http://archive.ubuntulinux.org/ubuntu/ /usr/share/debootstrap/scripts/gutsy
debootstrap --arch=i386 hardy /mnt http://archive.ubuntulinux.org/ubuntu/ /usr/share/debootstrap/scripts/gutsy
うまくいったらubuntuの環境にchrootします。
chroot /mnt
この時、
id: cannot find name for group ID 11
というエラーが表示されますがとりあえず気にしないことにします。
/etc/apt/source.listを以下のとおり修正します。(太字が追加部分です)
deb http://archive.ubuntulinux.org/ubuntu hardy main universe
そうしたらwgetをインストールします。
apt-get update
apt-get install wget
apt-get install wget
次にXen対応のカーネルをインストールします。
公式リポジトリのカーネルだとネットワーク接続がうまく行かないので、以下のサイトで公開されているカーネルをインストールします。
Index of /~hiranotaka
http://www.il.is.s.u-tokyo.ac.jp/~hiranotaka/
wget http://www.il.is.s.u-tokyo.ac.jp/~hiranotaka/linux-image-2.6.24-16-xen_2.6.24-16.30zng1_i386.deb
dpkg --install linux-image-2.6.24-16-xen_2.6.24-16.30zng1_i386.deb
dpkg --install linux-image-2.6.24-16-xen_2.6.24-16.30zng1_i386.deb
Xenでパフォーマンスの問題を引き起こすtlsはOFFっておきましょう。
mv /lib/tls /lib/tls.disabled
Xenの仮想コンソールに対してgettyが立ち上がるようにしておきます。
sed 's/tty1/xvc0/' /etc/event.d/tty1 > /etc/event.d/xvc0
ついでにネットワークの設定もしておきます。
編集すべきファイルは/etc/network/interfacesです。
内容は環境に合わせて適当に変更してください。auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.10
netmask 255.255.255.0
gateway 192.168.0.1
/etc/fstabも書いておきましょう。
完了したら、ubuntuの環境から出ます。/dev/sda1 / ext3 noatime 0 1
/dev/sda2 none swap sw 0 0
exit
そうしたらubuntuのカーネルとinitramfsをDom0のファイルシステムにコピーします。
cp /mnt/boot/vmlinuz-2.6.24-16-xen /boot/ubuntu.vmlinuz-2.6.24-16-xen
cp /mnt/boot/initrd.img-2.6.24-16-xen /boot/ubuntu.initrd.img-2.6.24-16-xen
cp /mnt/boot/initrd.img-2.6.24-16-xen /boot/ubuntu.initrd.img-2.6.24-16-xen
そしてubuntu用のファイルシステムをumountします。
umount /mnt
Xenの設定ファイルを記述します。
kernel = "/boot/ubuntu.vmlinuz-2.6.24-16-xen"
ramdisk = "/boot/ubuntu.initrd.img-2.6.24-16-xen"
memory = 512
name = "xen-ubuntu"
vif = ['mac=00:16:3e:00:00:01, bridge=xenbr0']
disk = ['phy:rootvg/domU_ubuntu_root,sda1,w', 'phy:rootvg/domU_ubuntu_swap,sda2,w']
root = "/dev/sda1 ro"
ramdisk = "/boot/ubuntu.initrd.img-2.6.24-16-xen"
memory = 512
name = "xen-ubuntu"
vif = ['mac=00:16:3e:00:00:01, bridge=xenbr0']
disk = ['phy:rootvg/domU_ubuntu_root,sda1,w', 'phy:rootvg/domU_ubuntu_swap,sda2,w']
root = "/dev/sda1 ro"
ファイル名は/etc/xen/ubuntuとしましょう。(何でもいいんですが)
全ての準備が整いました。ubuntuを起動しましょう。
xm create -c ubuntu
"ubuntu on gentoo"環境のできあがり♪
文中でご紹介したサイトの他、以下のサイトも参考にさせていただきました。
(ありがとうございました!)
一人前のプログラマを目指す日記:xen - livedoor Blog(ブログ)
http://blog.livedoor.jp/matssaku/archives/cat_10014130.html
Yoichi's diary(2008-05-24)
http://yoichi.geiin.org/d/?date=20080524
Bug #204010 in xen-3.2 (Ubuntu): “networking not working”
https://bugs.launchpad.net/ubuntu/+source/xen-3.2/+bug/204010




