CentOS 5.2のXen環境にDomain-U Debian(sid)を構築してみた。
ディスクはイメージファイルではなく、論理ボリューム区画を割り当てている。
論理ボリューム区画にしてみたのは、将来ディスク領域が不足したときDomain0で割り当てを増やし(lvextend)、DomainUでファイルシステムをオンラインリサイズ(ext2online)できないものかと考えたから。
vg00はCentOSセットアップ時に作成したボリュームグループ。
# lvcreate -L 96M -n debian_boot vg00 # lvcreate -L 1024M -n debian_swap vg00 # lvcreate -L 8192M -n debian_root vg00 # mke2fs -j /dev/vg00/debian_boot # mke2fs -j /dev/vg00/debian_root # mkswap /dev/vg00/debian_swap
# mkdir /mnt/debian # mount /dev/vg00/debian_root /mnt/debian # mkdir /mnt/debian/boot # mount /dev/vg00/debian_boot /mnt/debian/boot
debootstrapコマンドをインストール。rpmパッケージ管理外のファイルが/usr/binや/usr/lib直下に配置されるが良しとする。
# cd /usr/local/src # wget -N http://ftp.debian.org/debian/pool/main/d/debootstrap/debootstrap_0.3.3.2_all.deb # yum -y install binutils # ar -x debootstrap_0.3.3.2_all.deb # cd / # zcat /usr/local/src/data.tar.gz | tar xvp
debootstrapコマンドで論理ボリューム上にDebianをインストール。
# /usr/sbin/debootstrap --arch amd64 sid /mnt/debian http://ftp.jp.debian.org/debian
セットアップのためインストールしたDebianにchrootする。
# chroot /mnt/debian # mount -t proc proc /proc
# /etc/fstab: static file system information. # /dev/sda1 /boot ext3 ro,nosuid,nodev 0 2 /dev/sda2 / ext3 defaults 0 1 /dev/sda3 none swap sw 0 0 proc /proc proc defaults 0 0
# aptitude install linux-image-xen-amd64
h0:12345:respawn:/sbin/getty 38400 hvc0 x0:12345:respawn:/sbin/getty 38400 xvc0
ちなみにDebian sidの場合、hvcもxvcも/etc/securettyには定義済み(以下、抜粋)。
# Standard hypervisor virtual console hvc0 # Oldstyle Xen console xvc0
boot=/dev/sda
default=0
timeout=5
#splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Debian (2.6.26-1-xen-amd64)
root (hd0,0)
kernel /vmlinuz-2.6.26-1-xen-amd64 ro root=/dev/sda2 xencons=xvc console=xvc0
initrd /initrd.img-2.6.26-1-xen-amd64
kernelパラメータにXen用コンソール定義、xvcを追加している。
# cd /boot/grub # ln -s grub.conf menu.lst
(hd0) /dev/sda
/etc/xen/debianで作成
name = "debian"
uuid = "4917533f-38ac-4650-a342-dd468650b2d3"
maxmem = 384
memory = 384
vcpus = 1
bootloader = "/usr/bin/pygrub"
disk = [ 'phy:vg00/debian_boot,sda1,w',
'phy:vg00/debian_root,sda2,w',
'phy:vg00/debian_swap,sda3,w' ]
vif = [ "mac=00:16:3e:27:ea:aa,bridge=xenbr0" ]
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'
uuidはuuidgenを使って生成。
vifのMACアドレスは『19.22. MAC アドレス生成の為のスクリプト作成』に掲載されているmacgen.pyスクリプトを用意して生成。
最初の目的であるファイルシステム拡張がおこなえるかどうかは後日。