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コマンドの準備
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
Debianインストール
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作成
# /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
kernelイメージインストール
# aptitude install linux-image-xen-amd64
/etc/inittabにXen用コンソール定義追加
以下を追加。ラベルは重複しないものを適当に割り当てた。
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/grub/grub.conf作成
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を追加している。
/boot/grub/menu.lst作成(grub.confにシンボリックリンク)
# cd /boot/grub
# ln -s grub.conf menu.lst
/boot/grub/device.map作成
(hd0) /dev/sda
DomainU設定ファイル作成
/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スクリプトを用意して生成。
最初の目的であるファイルシステム拡張がおこなえるかどうかは後日。
参考サイト