2011年1月28日金曜日

RedHat Linux 全自動インストール

IT業界悲しいかな、私が好きなDebianでシステム構築を行う事はまずなく、
現地の環境はLinuxと言えばほぼ100% RedHat Linuxです。
職場で当然扱っているわけですが、RedHat Linuxの全自動インストールの検証に少し携わったので
掲載してみようかと思います。

全自動インストールの方法は複数あります。
1. DVD1枚のみで全自動インストール
2. DVDなしでPXE Bootからネットワークインストール
3. DVDもネットワークもなくローカルディスク(パーティション)から別のディスク(パーティション)へインストール

2. のネットワークインストールはさらに詳細に分かれて
2.1. NFSインストール
2.2. httpインストール
2.3. ftpインストール

というのがあります。
用途に応じて最適な手法を選択すればいいと思います。
全ての手法を書ききるのはちょっと大変なので、今回は簡単な
1枚のDVDだけで全自動インストールについて書いてみます。今回はRedHat Linux ES 5.5 64bitで検証しましたが
おそらく32bitでも、多少のバージョン違いでも出来ると思います。

作業はLinuxサーバ上で実施します。
RedHat Linuxをインストールした時に、/root/ディレクトリ直下に
anaconda-ks.cfg というファイルが出来上がるのですが
このファイルさえあれば、作業に使うLinuxサーバはDebianだろうがUbuntuだろうがCentOSだろうがFedoraだろうが構いません。

では早速簡単な手順を紹介・・・。
概ね @ITの記事 の通りでいいのですが、この記事にも間違った部分がありちょっと躓きました。

まずRedHatのDVDの.isoイメージファイルまたはDVD本体を用意し
適当なディレクトリへmountします。

mount -v -t iso9660 -o loop,ro rhel-server-5.5-i386-dvd.iso /media/


物理的なDVDメディアをサーバに挿入している場合はこんな感じ↓
mount -v -t iso9660 -o ro /dev/cdrom /media/

環境に応じて適宜読み替えてください。

mountしたら、lsやdf等のコマンドで正常にmount出来ている事を確認します。

確認できたら、ディスクの中身を作業用ディレクトリへ全部コピーします。
mkdir -v /tmp/redhat
cp -vpr /media/* /tmp/redhat/
cp -vp /media/.discinfo /tmp/redhat/

最後の /media/.discinfo ファイルもコピーすることを忘れないように気をつけてください。
/media/* で指定しても bash は * を解釈する際に
.(ドット)から始まる隠しファイルを無視します。
この .discinfo ファイルが RedHatのインストーラディスクであるという定義がなされてある為
このファイルをコピーし忘れると インストールメディアが見つかりません とエラーを吐かれて自動インストールに失敗します。
躓いていたポイントが、この .discinfo ファイルのコピー漏れでした。

コピーが終わったら RedHat インストール時に /root/ に生成される anaconda-ks.cfg を
作業用ディレクトリへコピーします。
cp -vp anaconda-ks.cfg /tmp/redhat/isolinux/ks.cfg

ファイル名は anaconda-ks.cfg のままでもいいのですが、長いので ks.cfg についでにリネームしつつコピーしています。

次に、どういう設定でRedHatをインストールしたいかの定義をks.cfgに記述します。
ks.cfgはただのテキストファイルなので vi 等のエディタで編集可能です。
vim /tmp/redhat/isolinux/ks.cfg

ks.cfgの詳細についてはRedHatのサイト等を参考にします。

次にks.cfgを起動時に読み込ませる為にisolinux.cfgファイルを編集します。
vim /tmp/redhat/isolinux/isolinux.cfg


default linux
prompt 1
timeout 600
display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
label linux
kernel vmlinuz
append ks=cdrom:isolinux/ks.cfg initrd=initrd.img

要点は
--
append ks=cdrom:/isolinux/ks.cfg initrd=initrd.img
--
とks.cfgの場所を/tmp/redhat/からみての
相対パスで指定している事と
--
default linux
・・・<中略>
label linux
--
のように、default行とlabel行が同じ文字列で、そのlabelにks.cfgのパスを記述する事です。

最後に/tmp/redhat/ の中身を全て1つの.isoイメージファイルに固めて、出来上がりとなります。
固めるコマンドは下記
cd /tmp/redhat/
mkisofs -r -l -J -o /tmp/autoRedHat.iso -b isolinux/isolinux.bin  -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table .

-o オプションで出力先.isoイメージファイルを指定します。
その他のオプションはBootable ISOイメージを作成する際に必要なオプションだと思われます。
最後の
--
-boot-info-table
--
の後に半角スペースを1個空けて .(ドット) を打つのを忘れないように気をつけて下さい。
最後の .(ドット)でカレントディレクトリ(つまり /tmp/redhat/ )をISOイメージに
固めるソースディレクトリに指定しています。

しばらく待つと /tmp/autoRedHat.iso ファイルが出来上がります。
このファイルをDVDへ iso 焼きして、サーバの光学ドライブに挿入し、DVDからBootすると
ks.cfg で定義した通りに全自動でRedHatのインストールが走ります。

以上~

0 件のコメント:

コメントを投稿