vmwareのゲストOSでPXEブートする必要があったので。
まず、vmwareの仮想LANは、/etc/vmware/vmnetx(xは1とか8とか)にdhcpdというディレクトリがあり、その中に/usr/bin/vmnet-dhcpdの設定ファイル・dhcpd.confがあります。
vmnet-dhcpdはiscのdhcpdですが、ちょっと古いバージョンなのでRHELのdhcpdとは少々設定が異なります。以下では、vmnet1にPXEブートの設定をするものとします。
この古いバージョンではclassというディレクティブを書いてもエラーになってしまうので、以下のような設定にします。
allow unknown-clients;
default-lease-time 1800; # 30 minutes
max-lease-time 7200; # 2 hours
subnet 172.16.224.0 netmask 255.255.255.0 {
range 172.16.224.128 172.16.224.254;
option broadcast-address 172.16.224.255;
# option domain-name-servers 172.16.224.1;
option domain-name "localdomain";
filename "linux-install/pxelinux.0";
next-server 172.16.224.1;
}
#domain-name-serversの設定をコメントアウトしているのは、172.16.224.1にnamedが存在しないからです。こうしないとインストール初期に名前解決が出来ないために時間がかかってしまいます。
これで、vmware上のゲストOSのNICを”Custom: Specific virtual network”の/dev/vmnet1にしてあげることで、dhcpからIPアドレスがアサインされ、next-serverで指定されたtftpサーバ上の/tftpboot/linux-install/pxelinux.0を取得しに行きます。
pxelinux.0はsyslinuxパッケージに含まれる/usr/lib/syslinux/pxelinux.0をコピーしておきます。
次に/tftpboot/linux-install/pxelinux.cfg/defaultというファイルを作り、以下のような内容にしておきます。
default rhel4-u3 ks=http://172.16.224.1/kickstart/ks/label/rhel4-u3
label rhel4-u3
kernel rhel4-u3/vmlinuz
append initrd=rhel4-u3/initrd.img console=tty0 ramdisk_size=10000
PXEではIPアドレスから生成されたファイルをまず探しますが、無ければdefaultというファイルを見るようになっています。ファイル名はsyslinuxパッケージに含まれるgethostipコマンドで生成することが可能です。
ブートカーネルと初期RAMディスクは、/tftpboot/linux-install/rhel4-u3/というディレクトリから取得することになるので、RHEL4Update3のインストーラのディスク1のimages/pxeboot/から、vmlinuzとinitrdを当該ディレクトリにコピーしておきます。