[syslinux] Suggested update to the Wiki page on PXElinux (UEFI-related stuff in ISC dhcpd.conf)

Ady Ady ady-sf at hotmail.com
Thu Nov 7 16:42:44 PST 2019

> Dear gentlemen,
> here goes the documentation fix I was talking about :-)
> The Wiki page on PXElinux, specifically the chapter on UEFI at the end
> of that page:
>   https://wiki.syslinux.org/wiki/index.php?title=PXELINUX#UEFI
> ...contains a few examples of ISC DHCPd configuration.
> The stumbling block for me was the syntax of these "if" scopes:
> if option architecture-type = 9 {
>  filename "path/to/EFIx64/syslinux.efi";
> }
> That "if" clause just never matched in my case.
> I'm running ISC dhcpd v4.3.5-3+deb9u1 .
> I later found out that it's the "integer literal" that is spelled 
> wrong. What works is the following syntax:
> if option architecture-type = 00:09 {
>  filename "path/to/EFIx64/syslinux.efi";
> }
> I.e., specified as two bytes.
> Source:
> https://community.theforeman.org/t/uefi-dhcpd-conf/9793/3
> And you don't even need to use classes in dhcpd.conf.
> You can just nest these "if scopes" directly into a subnet, or even
> configure them global.
> if substring (option vendor-class-identifier, 0, 9) = "PXEClient" {
>  next-server;
>  ignore-client-uids true;
> ...
>  if option architecture-type = 00:09 {
>   filename "pxelinux/6.git/efi64/syslinux.efi";
>  }
> ...
> }
> I have included the "ignore-client-uids" option for the PXE clients.
> This is because a large number of HW models from different TW vendors
> leave the DMI UUID = GUID = CID at the BIOS maker default, typically
> 0:0:2:0:3:0:4:0:5:0:6:0:7:0:8:0:9 (AMI). If we need to diskless-boot
> several such machines in a lab, e.g. for OS deployment, we would
> otherwise have bad luck (IP address collision).
> Back to the topic: note that apart from the architecture-type DHCP
> option (#93 = 16b integer), the client architecture tends to also be
> mentioned by the PXE client stacks in the vendor-class-identifier option
> (#60 = string). Example from tcpdump:
> Vendor-Class Option 60, length 32: "PXEClient:Arch:00007:UNDI:003016"
> That option is a "string" type - and indeed you can try to search for
> the particular architecture as a substring, like this:
> if substring (option vendor-class-identifier, 15, 5) = "00007" {
>  filename "pxelinux/6.git/efi64/syslinux.efi";
> }
> Source:
> https://wiki.fogproject.org/wiki/index.php/BIOS_and_UEFI_Co-Existence
> I hope this helps someone who comes after me...
> Frank Rysanek
The dhcpd.conf examples in the wiki page were modified from "nn:nn" to 
"decimal" format by HPA in 2016 (quoting HPA: "UEFI - clean up 
dhcpd.conf examples").

Please note that several other sites (e.g. the FOG wiki) also use 
simple decimal notation for these types of examples. Whether the 
decimal notation is actually invalid, or at least problematic, I don't 
really know.

If during the next few days there are no new emails objecting the 
suggested change, I'll revert the dhcpd.conf examples in the PXELINUX 
wiki page back to "nn:nn" format. Although feedback from GeneC and from 
HPA regarding this matter would be particularly interesting, comments 
from anyone are very much appreciated.

Other than that simple change, I'd like to know what other changes you 
are proposing, specifically.

Alternative ways to do things can be welcomed. Please consider that 
this wiki page is about PXELINUX (not about dhcpd.conf) and that these 
are only examples, not complete docs about dhcpd.conf. Perhaps a small, 
partial snippet or phrase located in an adequate place within the page 
might be enough. Sometimes, linking to other (trustworthy) resources, 
and/or linking to an email in this Mailing List, might be better.


More information about the Syslinux mailing list