今月末には3系が出そうって中で、若干遅きに失した感があるけどXenを入れてみた。 ホストがFC4とCentOS 4.1の二通り、ゲストはCentOS 4.1という環境。
ホスト(FC4) | ホスト(CentOS 4.1) |
---|---|
xen-2-20050823 | xen 2.0.7 |
kernel-xen0-2.6.12-1.1447_FC4 | 2.6.11-xen0(CentOS 4.1のカーネルコンフィギュレーションをベースとしたカスタムカーネル) |
kernel-xenU-2.6.12-1.1447_FC4 | 2.6.11-xenU(同上) |
# yum -y install xen kernel-xen0 kernel-xenU # mkdir /var/{lib,run}/xenstored # (*1)
# mkdir -p /usr/local/src/xen # cd /usr/local/src/xen # wget http://www.cl.cam.ac.uk/Research/SRG/netos/xen/downloads/xen-2.0.7-src.tgz # tar zxf xen-2.0.7-src.tgz # cd xen-2.0/ # chown -R root: . # make install-xen install-tools install-twisted # yum -y install kernel-sourcecode bridge-utils.i386
# make make linux-2.6-xen0-build
パッチ適用後に適当に^C
# cd linux-2.6.11-xen0 # mv .config .config.orig # cp /usr/src/linux-2.6.9-11.EL/configs/kernel-2.6.9-i686.config .config # head -24 .config.orig >> .config # (*2) # yes ''|make ARCH=xen oldconfig # sed 's/^CONFIG_SYNCLINK/# CONFIG_SYNCLINK/g' .config > .config.t # (*3) # mv -f .config.t .config # make ARCH=xen menuconfig
次の設定を無効にする(*4)
# make ARCH=xen # make ARCH=xen install modules_install # mkinitrd -f /boot/initrd-2.6.11-xen0.img 2.6.11.12-xen0 # vi /etc/grub.conf title Xen 2.0 / XenLinux 2.6 kernel /xen-2.0.gz dom0_mem=1310720 module /vmlinuz-2.6-xen0 root=/dev/sda2 ro console=tty0 # (*5) module /initrd-2.6.11-xen0.img
# make linux-2.6-xenU-build
パッチ適用後に適当に^C
# cd linux-2.6.11-xenU # mv .config .config.orig # cp /usr/src/linux-2.6.9-11.EL/configs/kernel-2.6.9-i686.config .config # yes ''|make ARCH=xen oldconfig # sed 's/^CONFIG_SYNCLINK/# CONFIG_SYNCLINK/g' .config > .config.t # mv -f .config.t .config # cat | patch -p0 -l # (*6) --- lib/kobject_uevent.c.orig 2005-07-16 17:23:51.000000000 +0900 +++ lib/kobject_uevent.c 2005-07-16 17:22:22.000000000 +0900 @@ -178,6 +178,7 @@ #ifdef CONFIG_HOTPLUG char hotplug_path[HOTPLUG_PATH_LEN] = "/sbin/hotplug"; +EXPORT_SYMBOL_GPL(hotplug_path); u64 hotplug_seqnum; static DEFINE_SPINLOCK(sequence_lock); --- drivers/char/random.c.orig 2005-07-16 17:24:47.000000000 +0900 +++ drivers/char/random.c 2005-07-16 17:26:18.000000000 +0900 @@ -880,6 +880,8 @@ (type << 4) ^ code ^ (code >> 4) ^ value); } +EXPORT_SYMBOL_GPL(add_input_randomness); + void add_interrupt_randomness(int irq) { if (irq >= NR_IRQS || irq_timer_state[irq] == 0) # make ARCH=xen menuconfig
ドメイン設定ファイルによるIPアドレスなどの自動設定を可能にするため、次の設定を有効にする。
# make ARCH=xen # make ARCH=xen install modules_install # mkinitrd -f /boot/initrd-2.6.11-xenU.img 2.6.11.12-xenU # (*7)
CentOS 4.1をベースにした3GBのディスクイメージを作成していく。
# mkdir -p /home/xen # dd if=/dev/zero of=/home/xen/dom1.img bs=1M count=1 seek=3072 # yes|mkfs.ext3 /home/xen/dom1.img # mkdir -p /mnt/xen # mount -o loop /home/xen/dom1.img /mnt/xen # cd /mnt/xen
CentOS 4.1用のyum.confを用意してetc/yum.confに配置する。 このときgpgcheckを0に設定し、$releaseverは4.1に置換しておかないとyumの実行に失敗する。
# cat > etc/fstab /dev/hda1 / ext3 defaults 1 1 none /dev/pts devpts gid=5,mode=620 0 0 none /dev/shm tmpfs defaults 0 0 none /proc proc defaults 0 0 none /sys sysfs defaults 0 0 # for i in console null zero ; do MAKEDEV -d dev/ -x $i ; done # mv /etc/yum.repos.d /etc/yum.repos.d.orig # yum --installroot=/mnt/xen -y groupinstall Base # (*8) # mv /etc/yum.repos.d.orig /etc/yum.repos.d # chroot /mnt/xen /bin/bash # mv /lib/tls /lib/tls.disabled # sed -e 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config > /tmp/tmp # mv -f /tmp/tmp /etc/selinux/config # rm -f /etc/localtime # ln -s /usr/share/zoneinfo/Japan /etc/localtime # cat > /etc/sysconfig/clock ZONE="Asia/Tokyo" UTC=false ARC=false # cat > /etc/sysconfig/i18n LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16" # cat > /etc/sysconfig/network NETWORKING=yes HOSTNAME=dom1 GATEWAY=192.168.1.1 # cat > /etc/hosts 127.0.0.1 localhost.localdomain localhost # cat > /etc/sysconfig/network-scripts/ifcfg-eth0 # (*9) DEVICE=eth0 ONBOOT=yes BOOTPROTO=static IPADDR=192.168.1.3 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 # cat > /etc/resolv.conf nameserver 192.168.1.1 # cat > /etc/sysconfig/iptables *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 --tcp-flags SYN,RST,ACK SYN -j ACCEPT COMMIT
shadowパスワードを使うようにする。
# pwconv # exit
xenU用のカーネルモジュールがないためにiptablesなどが使えないのでコピーしておく。
(FeodraCore 4) # depmod -a 2.6.12-1.1447_FC4xenU # cp -a /lib/modules/2.6.12-1.1447_FC4xenU lib/modules (CentOS 4.1) # cp -a /lib/modules/2.6.11.12-xenU lib/modules/
最後にアンマウント。
# umount /mnt/xen
# cat > /etc/xen/dom1.conf kernel = "/boot/vmlinuz-2.6.11-xenU" # (*10) ramdisk = "/boot/initrd-2.6.11-xenU.img" memory = 256 name = "dom1" disk = [ 'file:/home/xen/dom1.img,hda1,w' ] ip = "192.168.1.3" netmask="255.255.255.0" gateway="192.168.1.1" hostname="dom1" root = "/dev/hda1 ro" extra = "3"
Domain0で再起動する。
# chkconfig --add xend # /etc/init.d/xend start # xm create /etc/xen/dom1.conf -c
Exception connecting to xenstored: (2, 'No such file or directory') Trying again...
drivers/char/synclink.c: In function `mgsl_alloc_buffer_list_memory': drivers/char/synclink.c:3816: error: `isa_virt_to_bus_is_UNSUPPORTED' undeclared (first use in this function) drivers/char/synclink.c:3816: error: (Each undeclared identifier is reported only once drivers/char/synclink.c:3816: error: for each function it appears in.)
WARNING: /lib/modules/2.6.11.12-xen0/kernel/arch/xen/i386/kernel/microcode.ko needs unknown symbol sys_munlock WARNING: /lib/modules/2.6.11.12-xen0/kernel/arch/xen/i386/kernel/microcode.ko needs unknown symbol sys_mlock WARNING: /lib/modules/2.6.11.12-xen0/kernel/drivers/pci/hotplug/shpchp.ko needs unknown symbol pcibios_set_irq_routing WARNING: /lib/modules/2.6.11.12-xen0/kernel/drivers/char/ipmi/ipmi_poweroff.ko needs unknown symbol pm_power_off
WARNING: /lib/modules/2.6.11.10-xenU/kernel/drivers/input/input.ko needs unknown symbol hotplug_path WARNING: /lib/modules/2.6.11.10-xenU/kernel/drivers/input/input.ko needs unknown symbol add_input_randomness
alias scsi_hostadapter ata_piix
scratchバッファっぽくGaucheを使えるようになる。 ちょこちょこっと書きたいときに大変便利。