2009/03/01

Ubuntu 8.04のrinseでCentOS-5のイメージを作成する

rinseでcentosのイメージは簡単にできるだろうと思って、試したところうまく動きませんでした。CentOS-4ではURLの指定間違いなんかが報告されているようです。[Wrong server path for CentOS-4 in rinse.conf]
なにしろUbuntu 8.04で導入されるrinseのバージョンは0.9で最新版が1.5ですから、いろいろ不具合があるという事なのでしょう。[“rinse” source package in Ubuntu]
Vine Linux 4.2を導入する時にだいたい処理の流れはわかったので、動くようにしてみました。

PRMダウンロード先の変更

トラフィックを減らすためにRingサーバーにイメージの取得先を変更しています。 これは必須ではないですが、まぁ日本に住んでいるならRingサーバーにあるものは使いましょう、という事で…。
/etc/rinse/rinse.confを編集しました。

[centos-4]
mirror = http://ftp.iij.ad.jp/pub/linux/centos/4/os/i386/CentOS/RPMS/
mirror.amd64 = http://ftp.iij.ad.jp/pub/linux/centos/4/os/x86_64/CentOS/RPMS/
[centos-5]
mirror = http://ftp.iij.ad.jp/pub/linux/centos/5/os/i386/CentOS/
mirror.amd64 = http://ftp.iij.ad.jp/pub/linux/centos/5/os/x86_64/CentOS/

CentOS5用/etc/xen-tools/xen-tools.confの準備

Vine同様にdistributionにcentos-5を指定したファイル(/etc/xen-tools/xen-tools.centos5.conf)を作成します。

$ sed -e '/^#/d' -e '/^$/d' /etc/xen-tools/xen-tools.centos5.conf
dir = /home/xen
install-method = rinse
size   = 4Gb      # Disk image size.
memory = 128Mb    # Memory size
swap   = 128Mb    # Swap size
fs     = ext3     # use the EXT3 filesystem for the disk image.
dist   = centos-5     # Default distribution to install.
image  = sparse   # Specify sparse vs. full disk images.
gateway   = 192.168.1.1
netmask   = 255.255.255.0
broadcast = 192.168.1.255
kernel      = /boot/vmlinuz-`uname -r`
initrd      = /boot/initrd.img-`uname -r`
mirror = http://ftp.jp.debian.org/debian/
ext3_options   = noatime,nodiratime,errors=remount-ro
ext2_options   = noatime,nodiratime,errors=remount-ro
xfs_options    = defaults
reiser_options = defaults
serial_device = xvc0
disk_device = xvda  #default

/etc/rinse/centos-5.packagesの変更

なぜか基本的なライブラリが不足していたので、パッケージを加えました。

e2fsprogs-libs
yum-metadata-parser

この状態で以前のようにxen-create-imageを実行すると、起動はできますが、コンソールからのrootでのログインが行なえないため実質的には使えません。

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

これは/etc/shadowでrootのパスワードが設定されていないために発生します。Vineやdebianのイメージではrootはパスワードなしで作成されるため、すぐにパスワードを設定するようにしていました。

解決策1:作業用IDを手作業で作成する

作ってしまったイメージを消すのも、もったいないのでそのまま作業用IDを加えてみます。

ディスクイメージが /home/xen/domains/xen68/disk.imgにあると仮定しています。 まずはこのディスクイメージをマウントします。

$ sudo mount -o loop /home/xen/domains/xen68/disk.img /mnt
$ sudo chroot /mnt

作業用のID"user1"を加えます。実際には自分が普段使っているIDを指定しています。

# /usr/sbin/useradd -m user1
# passwd user1
# /usr/sbin/usermod -G wheel user1

最後に"visudo"を起動して、wheelグループ(%wheel) のユーザーがsudoを実行できるようにします。 次の1行を加えます。

# visudo
%wheel ALL = (ALL) ALL

xenのイメージを起動する前にイメージをアンマウントします。

# exit
$ sudo umount /mnt
これでXenを起動して無事にログインできる事を確認しました。
$ sudo xm create -c /etc/xen/xen68.cfg

解決策(?)2:xen-create-imageのaccountオプション

rinseはXen dom0が稼働しているUbuntu 8.04上のアカウントをコピーする機能自体は一応持っているので、試してみる事にしました。

$ sudo xen-create-image --config /etc/xen-tools/xen-tools.centos5.conf --accounts --hostname xen68 --ip 192.168.1.68

ログファイルは"/var/log/xen-tools/xen68.log"にあって、どうもエラーを大量に掃き出している模様です。関係ないデーモン系のユーザーIDも以降しようとして、何かうまくいっていないようです。
このまま起動してもsudoの設定はされていないので、ログインができるだけで特権ユーザーにはなる術がありませんでした。実際には解決策1と同じ事をする必要がありそうです。
大量のIDを移行したいといった要求がなければ、これを修正してどうにかする必要性はないでしょう。

わざわざrootのパスワードを外すのも嫌なので、手動で自分用のIDを作成する事で回避します。この解決策2は使えないですね…。

0 件のコメント: