Xen 3.0 上で virt-install + kickstart での CentOS 5.1 インストールに失敗したがゆえにいろいろ学ぶ修行

発端

Xen 3.0 on CentOS 5.1 の virt-install + kickstart と戯れる毎日。今日も不可解な現象に遭遇。インストール中に「virtualization パッケージグループを入れろって言われたけど、そんなのないよ」と言われてしまう。そんなはずはないのに。
とりあえず、無視してインストールしてみた。インストールは通常に進んだように見えたが、リブート後に「invalid kernel」とか言われちゃう。

domU イメージの調査

検閲Tech: Dom0からDomUのイメージファイルをディスクデバイスとして扱う様々で、正直何をやっているのかわからないところもあるけど。あとでいろいろ調べないとなあ。

ループバックデバイスの空いているところに domU のイメージをマッピング

# losetup -f
/dev/loop0
# losetup /dev/loop0 /var/lib/xen/images/daicon.img

マッピングされたデバイスをマウント。

# mkdir -p /mnt/vmfs
# kpartx -a /dev/loop0
# mount /dev/mapper/loop0p1 /mnt/vmfs

まずは Xen 対応の Linux が起動されているのかチェック。

grep title /mnt/vmfs/etc/grub.conf
title CentOS (2.6.18-53.el5)

... まあ、そうだよね。仮想化パッケージグループ (virtualization) 入ってないんだから。

いざとなったら、/mnt/vmfs/boot/ の中身を、他の domU からコピってしまおう、ということでとりあえず別の道を探すことに。

アンマウントは

# umount /dev/vmfs
# kpertx -d /dev/loop0
# losetup -d /dev/loop0

で。

GUI による kickstart ファイル設定ツールの利用

system-config-virt-kickstart に問題の kickstart ファイルを読み込ませてみて、別名でセーブ。それを使ってインストール。これも失敗。
でも、デフォルトで設定される値とかがわかって面白かった。

インストール中の仮想端末の利用

インストール中の仮想端末 2 とかを使って、netstat 見たり、mount 見たり、ping 打ってみたり。いくつか kickstart ファイルの不備を見つけた。

が、それを直しても virtualization が見つからない、という現象は解消せず。

パッケージグループ内のパッケージを指定してインストール

とりあえず、kickstart ファイルで指定するのを、パッケージグループ virtualization ではなくて、その中のパッケージ個々を指定するようにしてみた。
まずは、中身の調査*1

# awk -v i=1 'j>0{print $0} /Virtualization/{k++} k>0&&/packagelist/{j+=i;i=-10}' /export/CentOS_5.1_Final/repodata/comps.xml 
      <packagereq type="mandatory">kernel-xen</packagereq>
      <packagereq type="default">gnome-applet-vm</packagereq>
      <packagereq type="default">libvirt</packagereq>
      <packagereq type="default">virt-manager</packagereq>
      <packagereq type="mandatory">xen</packagereq>
    </packagelist>

で、kickstart ファイルを変更。

# @virtualization
kernel-xen
libvirt
gnome-applet-vm
virt-manager
xen

ついでにTipsAndTricks/KickStart - CentOS Wikiで発見した、cmdline オプションを指定してインストール。

これによってインストールが成功した。

とはいえ、virtualization パッケージグループがこけた理由はわからずじまい。気持ち悪いな。

vnc で接続したときに設定画面ぽいのが出たら

~/.vnc/xstartup をチェック。normal desktop だったらアンコメントしてね、って書いてある 2 行をアンコメントする。
SESSION_MANAGER って環境変数を無効にしてからプロセスを xinitrc に変更しちゃうんだね。

*1:もちろん、こんなコマンドを打ったわけじゃなく、エディタで開いたんだけど。