CentOS 5.7 の syslinux PXE でタイムアウトが動かない問題

結論:CentOS 5.7 の syslinux 3.11 は古くて timeout が正常動作しない。4.05に更新しましょう。

サーバとか弄る機会が多い環境にいるので、CDとかUSBとか使わずにネットワークブートでいろいろできたら便利だよね。ってことでPXEサーバを構築していてぶつかった罠。

PXE設定ファイル中の timeout が働かない。
pxelinux.cfg/default

timeout  30

3 秒タイムアウトにしたつもりなのに 3 秒過ぎても何も起きずメニューのまま。

調べてみると thr3ads.net - Syslinux - Does not auto boot after time out (Mar 2011) というとで、syslinuxが古くて腐ってたらしい。

centos syslinux rpm」でググって http://pkgs.repoforge.org/syslinux/ で見つけた syslinux-4.05-1.el5.rfx.i386.rpmwget して

# yum install syslinux-4.05-1.el5.rfx.i386.rpm

で Update されるので、pxelinux.0やmemdisk、menu.c32をTFTPDの所定の場所にコピーしておしまい。
注意すべきは syslinux が展開される場所が /usr/lib/syslinux から /usr/share/syslinux に変わってること。