PXE ブートと kickstart ファイルで CentOS 5.1 をインストールする修行、解決編
まる一日以上つぶしたが、ようやく抜けた。整理しておく。
なお、一般的にどうやればいいの? 的な情報は先人達がいい記事を書いているので、それらを見るよろし。
先人達
他にもいろいろあるし、更新もされていくだろうから、適当な語でググるのがいいだろう。
環境
DHCP サーバの設定
とりあえず、Xと同じブロードキャストセグメント内には、S以外の DHCP サーバがいないほうがいい。今回はSが NIC 2枚だったので、他のマシンとつながっているほう(eth1)は ifdown で落として、もう一方(eth0)は L2SW 越しにXとつないだ。/etc/sysconfig/dhcpd に
DHCPDARGS=eth0
と書いておいたので、たぶん、eth1 を落とす必要はなかったろう。試行錯誤中に成功にたどり着いたので試していない。eth1 を上げた場合は試していない。
詳しくは PXE の規格を読むべきだが、今回、いちばん詰まったところは
filename "/linux-install/pxelinux.0"; #option dhcp-class-identifier "PXEClient"; next-server 192.168.129.120; host earth { hardware ethernet xx:xx:xx:xx:xx:xx; fixed-address 192.168.129.121; }
における next-server の欠如。最初の tftp アクセスが DHCP サーバに行ったので、その後の pxelinux の tftp アクセスもそのままアクセスに行くと考えてしまったが、普通に考えて DHCP サーバと tftp サーバが同一である保証はないし、pxelinux がアクセスしに行く tftp サーバの所在は示す必要があろう(ほんとか)。
ここを突破するのにCentOS5をネットワークブートからインストールする(ウノウラボの記事に補足)の記事が参考になった*1。多謝。
ちなみに、↑の設定の dhcp-class-identifier を生かしたら dhcpd のエラーが発生した。
tftp-server の設定
こいつが悪いのかといろいろ調べたが、特に難しい設定はなさそうだ。
pxelinux 用の設定
ネット上には、pxelinux が読み込む設定ファイルのパスを pxelinux.cfg/default にする、と解説している記事が多いが、ここは MAC アドレスか IP アドレスベースの設定ファイルを置いておくのが吉だろう。無駄に待たなくて済むし。
少なくとも今回使用した syslinux 3.11 の pxelinux.0 は MAC アドレスベースの設定ファイル(pxelinux.cfg/01-xx-xx-xx-xx-xx-xx*2)を最初に読みにくるので、それにしておけばいいんじゃないだろうか。
設定ファイルの内容は 検閲Tech: DRACでリモートからCentOS 5.1をAnaconda Kickstartで完全自動PXEインストール・その1 に書かれているものそのまま(http が nfs になっているけど)。
default xento5 label xento5 kernel vmlinuz append load initrd=initrd.img devfs=nomount ksdevice=eth0 ks=nfs:192.168.129.120:/var/ks/toriniku_ks.cfg
多謝
そんなものかな。
それにしても、PowerEdge の電源ボタンをぽちっとな、と押してあとは自動でインストールが進むのを見るのは心地よい。人が付き添っていなくてもインストールできるところがウリなのに、じっくり見入ってしまった。久々に叫びたくなるほど嬉しくなった、そんな午後。