DHCPに触らずにPXE
できた。4011/udpは待ち受けなくてもいいらしい。67/udpに飛んできたDHCPDISCOVERに対して、Vendor Optionsのtag 6(PXE_DISCOVERY_CONTROL)に8(第3ビットが1)を指定して、filenameとsiaddrにTFTPサーバーのアドレスを指定したDHCPOFFERを返すと、動いた。
とりあえずIntelのNIC(PRO/1000)とVMwareで動いた。他のNICはまだ試してない。…と言っても、どのNICに積んであるPXEの実装も、実は全部Intelのものだったりして!
3comのNICがない。あと試せるのはnForceとMarvell Yukonか。nForceはPXE対応してたっけ?
※追記
nForceなマザーボードに載っているMarvell Yukonに実装されたNVIDIA Boot Agentでブートに成功。…チップはMarvellでPXE担当はNVIDIA。オンボードなNICは一筋縄ではないらしい。
Option 67でブートファイル名を指定するときのオプション長は、\0の分を入れないといけない。