[syslinux] Cannot chain to another PXE server on the same subnet

Jeffrey Hutzelman jhutz at cmu.edu
Sat Mar 8 14:48:36 PST 2014

On Fri, 2014-03-07 at 19:19 -0500, Gene Cumm wrote:

> Interesting, 16 different vendor-specific servers are specified.
> Vendor (option 43; PXE) sub-option 8 is a list of type (2B), count
> (1B), IPv4 (4B * Count) (each is 7 bytes since count is only 1 in this
> situation).

Yeah, that's expected.  The spec is unfortunately not very clear on
this, but what's going on is that the menu option contains a list of
(type, description), where each of the types is supposed to be unique.
The PXE client is supposed to display all of the descriptions and have
the user pick one.  It then looks up that type in the server list, picks
one of the servers listed for that type, and sends it a PXE (DHCP)
request containing a pxe-boot-item option containing the selected type.
The server then responds with an appropriate next-server and filename,
or with something more complicated like MTFTP parameters.

Omitting a type from the list means that the client can choose _any_ PXE
server, which depending on the discovery type probably includes just
broadcasting the request.  So if a server like Altiris wants to make
sure requests for one of its menu items actually come back to it, then
it needs to include an entry for that item in the boot server list,
naming that server.

We actually used to handle selecting from multiple netboot installers
this way.  I had a perl script that would take menu options in
human-readable form, including the TFTP server and filename to boot, and
would spit out the needed option values for the DHCP server, including a
hunk of code that switched on the pxe-boot-item option to send the
correct filename.  It was a pain to maintain, though, so I developed
PXECHAIN.COM so I could move all the menu stuff into PXELINUX, which has
been much nicer.

-- Jeff

More information about the Syslinux mailing list