PXE

仕事で使いそうなので、専用のサーバーを作る。
久しぶりにやってみるとはまる。且つOSのバージョンが運が悪くて時間がかかった。備忘録ついでに。

rpmであるかないか確認して、なければyumで入れておく。
tftp-server
dhcp-server
syslinuxはバージョンではまることが多い。fedora6なんかではデフォで入っているものが上手く機能せず(且つyumで入れるものも機能しない。)多く時間ロスになる。自分で入れた方が確実。
http://www.kernel.org/pub/linux/utils/boot/syslinux/RPMS/i386/
たまにmtoolsが必要と言われるが、それはyumで入れてOK。3.53以上が良いみたい。
http://memolet.blog22.fc2.com/blog-entry-786.html

centosのisoを取ってくる。
http://www.centos.org/

以上で準備は完了。後は設定。

tftp
vi /etc/xinetd.d/tftp

service tftp
{
(省略)
disable = no ←「yes」を「no」に変更
(省略)
}

xinetd を再起動
service xinetd restart

tftp用のディレクトリを掘る
cd /tftpboot
mkdir linux-install
cd linux-install
mkdir pxelinux.cfg
cd pxelinux.cfg
vi default

(内容)
default centos5

label centos5
kernel vmlinuz
append load initrd=initrd.img devfs=nomount


ディレクトリにイメージを展開。
# mkdir /mnt/iso
# mount -t iso9660 -o loop /tmp/centos.iso /mnt/iso

# cp /mnt/iso/images/pxeboot/vmlinuz /tftpboot/linux-install
# cp /mnt/iso/images/pxeboot/initrd.img /tftpboot/linux-install


dhcpの設定
vi /etc/dhcpd.conf

(内容)
subnet 192.168.0.0 netmask 255.255.255.0 { ←自分の環境に合わせる
(省略)
filename "/linux-install/pxelinux.0"; ←追加
}

(内容2 詳しくは)
ddns-update-style interim;
ignore client-updates;

subnet 192.168.0.0 netmask 255.255.255.0 {

option routers 192.168.0.1; ←デフォルトゲートウェイ
option subnet-mask 255.255.255.0; ←ネットマスク

option domain-name "example.jp"; ←ドメイン
option domain-name-servers 192.168.1.1; ←DNSサーバ

option time-offset -18000; # Eastern Standard Time

range dynamic-bootp 192.168.0.128 192.168.0.255; ←割り当てるIPアドレスの範囲
default-lease-time 21600; ←クライアントが期限を求めない場合の割り当て期間(秒)
max-lease-time 43200; ←クライアントが期限を求めた場合の最大割り当て期間(秒)

}
に加筆する。

dhcpの再起動。
service dhcpd restart

NFSの設定
vi /etc/exports
(内容)
/mnt/iso 192.168.0.0/255.255.255.0(rw,async)

NFSの再起動
service nfs restart

恒常的にPXEサーバーにするならセキュアなネットワーク上で
chkconfig --level 345 nfs on
chkconfig --level 345 dhcpd on
にする。ルーターDHCPコリジョンするので外しておく。

これでサーバーの作成はおしまい。
クライアントはPXE対応のものをネットワークに接続してBIOSで「ネットワーク・LAN」を一番上に上げておく。
後は自動で起動していくはず。
bootのプロンプトが出たら
vmlinuz initrd=initrd.img
と入力するとイメージがロードされる。言語を選択してNFSを選択。NFSサーバーのIPを入力・NFSディレクトリを/mnt/isoにすれば自動でGUIインストールが開くようになる。後はDVDなどのディスクからのインストールと同じ。

クラスタを作成したりするときに便利かもしれない。CPUだけ使う場面ならディスクレスも良い選択しかもしれない。その場合はPXEサーバーをRAIDなり、サービスをDRBDで冗長化しておくと便利かもしれない。(個人的にはディスクを持っている方が好きだけれど。)

出展はここ。いつもながら過去の先人達に感謝。
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/710pxeserver.html
http://mitty.jp/pc/networkboot/