2009/02/27

引き続き、Ubuntu 8.04なXenにVine Linux 4.2を導入してみる (後半)

xen-create-imageコマンドからのVine4.2イメージの作成環境を構築するために必要な作業は以下の流れで行ないます。

  1. Vine4.2用の/etc/xen-tools/xen-tools.confの準備
  2. /usr/lib/xen-tools/vine42.dディレクトリともろもろセットアップスクリプトの配置

Vine4.2用の/etc/xen-tools/xen-tools.confの準備

"xen-create-image"コマンドを使って導入しますが、どうも"--dist"オプションを指定してもちゃんと動いてくれないので、原因は調べずにVine用のxen-tools.confファイルを別に準備します。

$ cp /etc/xen-tools/xen-tools.conf /etc/xen-tools/xen-tools.vine.conf
変更した点はdistributionに"vine42"を加えて、install-methodに"debootstrap"に変えて"rinse"を指定しています。
$ diff xen-tools.conf xen-tools.vine.conf 
83c83
< install-method = debootstrap
---
> install-method = rinse
133c133
< dist   = etch     # Default distribution to install.
---
> dist   = vine42   # Default distribution to install.
ここまでで、"xen-create-image"コマンドはrinseを呼び出してディスクイメージを作成してくれるようになります。

/usr/lib/xen-tools/vine42.dディレクトリともろもろセットアップスクリプトの配置

rinseのセットアップでは具体的なサーバー名やら、IPアドレスやらの設定はしてくれません。そのため具体的なサーバーインスタンスの情報を設定するためのスクリプトが/usr/lib/xen-tools/ 以下に各ディストリビューション毎に分けられています。
とりあえずfedora-core-6.dをディレクトリ毎コピーしてきて、順番にyum関連の処理をapt-getで置き換えるといった変更をしていきます。

20-setup-yum -> 20-setup-apt

yumではなくapt-getを使うのですが、元々がRedHat Linuxの系統ですから、内部構造はfedoraと似ているので、20-setup-yumを20-setup-aptに変更して進めていきます。

43c43
< chroot ${prefix} /usr/bin/yum update
---
> chroot ${prefix} /usr/bin/apt-get update
でも、ここでupdateする必要性がわからないんですよね。 元々のイメージがrinseとrpmstrapのどちらで導入されたかわからないから、 何か前提があるのかなぁ…。

35-setup-users

このファイルでは、現在このXen dom0が稼働しているUbuntu 8.04の/etc/passwdと/etc/shadowの中から"--accounts"オプションで指定したユーザーについて、ゲストOSの/etc/passwd, /etc/shadowに内容をコピーするところです。 いまのところ使っていないので、ここはスルーします。

55-create-dev

いろいろ細かいところにツッコミを入れていると先にすすまないので、例としてひとつだけ。一連のスクリプトの中には間違いが沢山あります。 大抵はどうでも良いので修正していませんが、これはないと困るデバイスファイルを作っているところです。
まだこの時点ではrpm2cpioで展開されただけなので、シンボリックリンクは正確に張られていません。rinseの方で"apt-get upgrade"なんかをちゃんとやっていなかったせいではありますが…。そのため"/dev/MAKEDEV"はまだ存在しないはずで、"/sbin/MAKEDEV"を実行するようにします。 また$iを展開させたいのに、シングルクオートで囲ってしまっているところをダブルクオートに変更します。

45,47c45,47
< chroot ${prefix} /bin/sh -c 'cd /dev && ./MAKEDEV console'
< chroot ${prefix} /bin/sh -c 'cd /dev && ./MAKEDEV null'
< chroot ${prefix} /bin/sh -c 'cd /dev && ./MAKEDEV zero'
---
> chroot ${prefix} /bin/sh -c 'cd /dev && /sbin/MAKEDEV console'
> chroot ${prefix} /bin/sh -c 'cd /dev && /sbin/MAKEDEV null'
> chroot ${prefix} /bin/sh -c 'cd /dev && /sbin/MAKEDEV zero'
50c50
< chroot ${prefix} /bin/sh -c 'mknod /dev/xvda$i b 202 $i'
---
> chroot ${prefix} /bin/sh -c "mknod /dev/xvda$i b 202 $i"

60-copy-host-files

続いて/etc/hostsファイルをコピーしているのかと思いきや、sudoパッケージを導入しています。とりあえずファイル毎なくなってもらいます。

$ sudo rm 60-copy-host-files

70-install-ssh

なぜかopenssh-serverとpasswdパッケージを明示的に導入しています。 うーん、なんでだろう。なので、ここは消してしまいます。

$ sudo rm 70-install-ssh

99-clean-image

単純にyumを置き換えます。

44c44
< chroot ${prefix} /usr/bin/yum clean all
---
> chroot ${prefix} /usr/bin/apt-get clean

ここまでの結果を確認

"xen-create-image"コマンドで新しいdomUを作成します。

$ sudo xen-create-image --config /etc/xen-tools/xen-tools.vine.conf --hostname xen68 --ip 192.168.1.68 --arch i386

General Information
--------------------
Hostname       :  xen68
Distribution   :  vine42
Partitions     :  swap            128Mb (swap)
                  /               4Gb   (ext3)
Image type     :  sparse
Memory size    :  128Mb
Kernel path    :  /boot/vmlinuz-2.6.24-23-xen
Initrd path    :  /boot/initrd.img-2.6.24-23-xen

Networking Information
----------------------
IP Address 1   : 192.168.1.68 [MAC: xx:xx:xx:xx:xx:xx]
Netmask        : 255.255.255.0
Broadcast      : 192.168.1.255
Gateway        : 192.168.1.1


Creating partition image: /home/xen/domains/xen68/swap.img
Done

Creating swap on /home/xen/domains/xen68/swap.img
Done

Creating partition image: /home/xen/domains/xen68/disk.img
Done

Creating ext3 filesystem on /home/xen/domains/xen68/disk.img
Done
Installation method: rinse
Done

Running hooks
Done

No role scripts were specified.  Skipping

Creating Xen configuration file
Done
All done


Logfile produced at:
  /var/log/xen-tools/xen68.log
次に起動してみます。
$ sudo xm create -c /etc/xen/xen68.cfg
Using config file "/etc/xen/xen68.cfg".
Started domain xen68
                    [    0.000000] Linux version 2.6.24-23-xen (buildd@crested) (gcc version 4.2.3 (Ubuntu 4.2.3-2ubuntu7)) #1 SMP Mon Jan 26 03:09:12 UTC 2009 (Ubuntu 2.6.24-4.6-generic)
[    0.000000] Command line: root=/dev/xvda2 ro 2 console=xvc0
....
とりあえず無事にログインできて成功しました。

0 件のコメント: