2010/08/30

VirtualBoxでのCentOSインストールの自動化

Mac(Mac mini; MacOS X 10.6.4)で動いているVirtualBoxで、kickstartの仕組みを使ってCentOSのインストールを自動化しようとしてみました。

ただ手続きが多いので、基本的な動きを確認するためにVMを起動すると自動でCentOSのインストールが開始するところまでを確認しました。

全体の流れ

Kickstartを自動で開始するディスクの作成

mkisofsコマンドをmacportなどで導入すればMacでも可能そうでしたが、面倒なのでここだけはlinux(Ubuntu 10.04 LTS)で作業しています。

$ sudo mount -o loop CentOS-5.5-x86_64-netinstall.iso /mnt/iso
$ mkdir centos55netinst
$ cd  centos55netinst

/mnt/iso以下はread-onlyなので、作成したディレクトリにコピーを作成します。

$ rsync -av /mnt/iso/. .

自動的にKickstartを開始するようにisolinux.cfgファイルを編集します。

$ vi isolinux/isolinux.cfg

isolinux/isolinux.cfgファイル

default linux
prompt 1
timeout 10
display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
label linux
  kernel vmlinuz
  append initrd=initrd.img ks=hd:fd0:/ks.cfg
label local
  localboot 1
label memtest86
  kernel memtest
  append -

isolinux.cfgだけを変更したISOイメージを ../centos55netinst.img に作成します。

$ sudo mkisofs -R -J -no-emul-boot -boot-load-size 4 -boot-info-table -o ../centos55netinst.img -c isolinux/boot.cat -b isolinux/isolinux.bin .

mkisofsのオプションは使い方によって、 -T , -p といったオプションを工夫しても良いかもしれません。

ks.cfgファイルの準備

一度は手動でCentOSを入れると配置される /root/anaconda-ks.cfg ファイルをベースにしました。

サーバにするために不要なものをいろいろ省くと次のようになります。

ks.cfgファイル

# Kickstart file automatically generated by anaconda.
install
url --url http://rsync.atworks.co.jp/centos/5.5/os/x86_64
lang en_US.UTF-8
keyboard us
network --device eth0 --bootproto dhcp --hostname centos.vb.localdomain
rootpw --iscrypted $1$./9drDbb$nWXlnh/h4517xgxRZBTsS/
firewall --enabled --port=22:tcp
authconfig --enableshadow --enablemd5
selinux --permissive
timezone --utc Asia/Tokyo
bootloader --location=mbr --driveorder=sda
text
halt
# 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=sda --initlabel
part /boot --fstype ext3 --size=100 --ondisk=sda
part pv.2 --size=0 --grow --ondisk=sda
volgroup VolGroup00 --pesize=32768 pv.2
logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=512 --grow --maxsize=1024

%packages
@base
@core
@network-server
@server-cfg
@text-internet
@web-server
keyutils
trousers
fipscheck
device-mapper-multipath
openssh-server

起動すると自動的にパーティションの削除から開始するため、意図せずにディスクの内容を削除してしまう可能性がそれなりにある点に注意してください。

フロッピーイメージの作成

Mac上でフロッピーイメージを作成するには、いくつかの方法がありましたが、今回は自動化するためにコマンドラインで出来る方法を採用しました。

カレントディレクトリにks.cfgがあると仮定して、floppy.imgを作成し、その中にks.cfgをコピーするところまでを試しています。

$ dd if=/dev/zero of=floppy.img bs=1024 count=1440
$ hdiutil attach -nomount floppy.img | while read dev
do
  newfs_msdos -f 1440 -v centos55 $dev
  hdiutil detach $dev 
done
$ hdiutil mount floppy.img | while read dev fs
do
  cp ks.cfg $fs
  hdiutil detach $dev
done

さいごに

作成したファイルを使って、VirtualBoxのインスタンスを起動すると自動的にインストールが完了しました。

とはいえ、インスタンスの設定ではいくつか必要な操作があります。

  • 起動順から「フロッピー」を削除
  • 「フロッピーコントローラ」の追加
  • 「フロッピーコントローラ」直下のks.cfgを含むfloppy.imgの追加

あとはVirtualBoxにインスタンスの構成を行なって、カスタマイズしたks.cfgを作成すれば自動的にインスタンスを増やす事は何とかなりそうです。

0 件のコメント: