2007/11/14

Xen DomUインストールでAnaconda Kickstartを使う

RHELやCentOSをインストールしたことのある人は、インストーラAnacondaのお世話になっているはずだ。Anacondaによるインストールでは通常、対話的にインストールパラメータを指定していく。
これはこれでユーザに優しい仕組みだが、同じ設定で何台もOSをインストールしたり、少しづつインストールパラメータを変えながら繰り返しインストールしたりする場合には、かえって煩雑で不便だ。それを解消する方法がKickstartだ。
Kickstartのもっとも簡単な利用方法は、設定ファイルks.cfgをフロッピーディスクに入れておき、これをインストールディスク起動時に読み込ませる方法だろう。インストールディスクからの起動時、boot:プロンプトが表示されたら、次のように入力する(未検証)
boot: linux ks=floppy
詳しくは、Stray Penguinの記事を参照して欲しい(先達はあらまほしきことなり。ありがたや)

さて、本題。では、XenのDomUをインストールするときにはどうすればいいのか?DomUのインストーラ、virt-installプログラムのオプション--extra-argsオプションを使ってAnacondaにパラメータを渡せばよい。例えば、
  • ローカルレポジトリ: http://centos.repository.localdomain/centos/5/os/i386
  • Kickstart設定ファイル: http://centos.repository.localdomain/centos/5/DomU-ks.cfg
を元を使用する場合、以下の様に実行する。
# virt-install --name=node01 --uuid=`uuidgen` --ram=256 --vcpus=1 \
--file=/dev/VolGroup00/LogVolNode01 \
--nographics --paravirt \
--location=http://centos.repository.localdomain/centos/5/os/i386 \
--extra-args='ks=http://centos.repository.localdomain/centos/5/DomU-ks.cfg'

さて、ここまでKickstartの設定ファイルks.cfgの内容については触れてこなかった。詳しくは、マニュアルを参照して欲しいが、実際に例を見てみるのが早い。普通にCentOSやFedora、RHELをインストールすると、そのときのインストールパラメータが、Kickstart設定ファイルの形式で、/root/anaconda-ks.cfgに保存されている。自分が対話的に指定した内容とこれを照らし合わせながら眺めてみると、直感的に理解できるはずだ。

LVMを利用している場合には、
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
#clearpart --all --drives=xvda
#part /boot --fstype ext3 --size=100 --ondisk=xvda
#part pv.100000 --size=0 --grow --ondisk=xvda
#volgroup VolGroup00 --pesize=32768 pv.100000
#logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=272 --grow --maxsize=544
#logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
の様なコメントアウトされた部分が見つかる。コメントを読むと、そのままでは動かないような記述だが、ディスク全体を初期化する(clearpart --all)ような場合や、パーティションを変更しない場合は、問題なく動作する。必要な部分をコメントアウトして使う。

ちょっと予告: 上の例の中で利用したローカルレポジトリ環境(参考)や、これ利用してPXEインストールする環境
(参考)の構築は結構手間なのだが、Cobblerというツールを利用すると簡単にできるようだ。検証でき次第、ここで報告したい。

0 件のコメント: