トップ «前の日記(2005-08-03 (Wed)) 最新 次の日記(2005-10-04 (Tue))» 編集 RSS feed

継続にっき

2004|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|12|
2006|01|03|05|06|08|09|10|12|
2007|01|02|03|05|07|12|
2008|10|
2009|01|05|12|
2010|04|05|11|
2011|01|09|12|
2012|02|03|05|09|12|
2013|02|03|
2014|05|09|
2015|12|
2017|09|

2005-09-01 (Thu)

))) Xen 2.0.x

今月末には3系が出そうって中で、若干遅きに失した感があるけどXenを入れてみた。 ホストがFC4とCentOS 4.1の二通り、ゲストはCentOS 4.1という環境。

ホスト(FC4)ホスト(CentOS 4.1)
xen-2-20050823xen 2.0.7
kernel-xen0-2.6.12-1.1447_FC42.6.11-xen0(CentOS 4.1のカーネルコンフィギュレーションをベースとしたカスタムカーネル)
kernel-xenU-2.6.12-1.1447_FC42.6.11-xenU(同上)

Xen、Xen0、XenUの準備

Fedora Core 4
# yum -y install xen kernel-xen0 kernel-xenU
# mkdir /var/{lib,run}/xenstored                                            # (*1)
CentOS 4.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
xen0
# 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)

  • X86 Processor Configuration
    • Bus options (PCI, PCMCIA, EISA, MCA, ISA)
      • PCI Hotplug Support
        • SHPC PCI Hotplug driver
    • /dev/cpu/microcode - Intel IA32 CPU microcode support
  • Device Drivers
    • Character devices
      • IPMI
        • IPMI Poweroff
# 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
xenU
# 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アドレスなどの自動設定を可能にするため、次の設定を有効にする。

  • Device Drivers
    • Networking support
      • Networking options
        • IP: kernel level autoconfiguration
# 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

補足

*1
次のエラーを防ぐ。ただ他の動作レポートを見てみてもこんな事を書いている人はいないので何か根本的に違っているような気はする。
Exception connecting to xenstored: (2, 'No such file or directory')
Trying again...
*2
単純にoldconfigをするとXenゲスト用の設定となってしまうのでxen0用の設定を入れておく
*3
コンパイル中に次のエラーが出るのを防ぐ
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.)
*4
modules_install時の次のWarningを防ぐ
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
*5
bootパーティションが別になっており、ルートパーティションが/dev/sda2になっているときの設定。 bootパーティションが分けられていなければ「module /boot/vmlinuz-2.6-xen0」のようになる。
*6
modules_install時に次のWarningが出るのを防ぐ (https://www.redhat.com/archives/fedora-cvs-commits/2005-May/msg00664.html)
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
*7
ata_piixがらみでエラーが出たので/etc/modprobe.confの次の行を一時的にコメントアウトした
alias scsi_hostadapter ata_piix
*8
Development Toolsを最初から使うことが分かっている場合にはそれも指定すべき。 あとで入れようとしても依存関係の制約で素直には入らない。
*9
FC4のみ。kernel-xenU-2.6.12-1.1447_FC4は「IP: kernel level autoconfiguration」が有効でないため。
*10
FC4上なら「kernel="/boot/vmlinuz-2.6.12-1.1447_FC4xenU"」で、かつramdiskの設定は不要。

))) Inferior Gauche Mode

scratchバッファっぽくGaucheを使えるようになる。 ちょこちょこっと書きたいときに大変便利。


2004|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|12|
2006|01|03|05|06|08|09|10|12|
2007|01|02|03|05|07|12|
2008|10|
2009|01|05|12|
2010|04|05|11|
2011|01|09|12|
2012|02|03|05|09|12|
2013|02|03|
2014|05|09|
2015|12|
2017|09|
トップ «前の日記(2005-08-03 (Wed)) 最新 次の日記(2005-10-04 (Tue))» 編集 RSS feed