[syslinux] RE: DHCP option 93 for UEFI

Spike White spikewhitetx at gmail.com
Thu Oct 2 19:24:02 PDT 2014


Ady,

There are at least 3 ways to set up your DHCP server to
differentiate between std DHCP, BIOS PXE and UEFI PXE.

Option 93 (arch) is one way.

In ISC syntax, here's 3 ways:

1. Match on VCI
class "pxe-clients" {
     match if substring (option vendor-class-identifier, 0, 9) =
"PXEClient";
     set vendor-string = substring ( option vendor-class-identifier, 0, 9);
     set vendor-class option vendor-class-identifier;
     option tftp-server-name "192.168.0.100";
     next-server 192.168.0.100;
     if option vendor-class-identifier = "PXEClient:Arch:00000:UNDI:002001"
{
        option bootfile-name "bios/pxelinux.0";
     } elsif  option vendor-class-identifier =
"PXEClient:Arch:0007:UNDI:003016" {
       option bootfile-name "efi.x64/syslinux.efi";
     } else {
       option bootfile-name "UNKNOWN_VCI";
     }
}

2. Match on arch.
…
# In initial DHCP DISCOVER packet, PXE client sets option 93 to its arch.
#    0000 == IA x86 PC (BIOS boot)
#    0006 == x86 EFI boot
#    0007 == x64 EFI boot
option arch code 93 = unsigned integer 16;
class "pxe-clients" {
     match if substring (option vendor-class-identifier, 0, 9) =
"PXEClient";
     ...
     if option arch = 00:00 {
       filename "bios/pxelinux.0";
     } elsif  option arch = 00:07 {
        filename "efi.x64/syslinux.efi";
     } else {
       filename "UNKNOWN_VCI";
       option bootfile-name "UNKNOWN_VCI";
     }

3. Subclasses
class "pxe-clients" {
     match option vendor-class-identifier;
     …
     option tftp-server-name "192.168.0.100";
     …
     next-server 192.168.0.100;
}
subclass "pxe-clients"  "PXEClient:Arch:00000:UNDI:002001" {
     option bootfile-name "bios/pxelinux.0";
}
subclass "pxe-clients"  "PXEClient:Arch:0007:UNDI:003016" {
     option bootfile-name "efi.x86/syslinux.efi";
}

Every UEFI boot client I've ever seen reports 00:07 for VCI & ARCH. Which
agrees w/ RFC 4578.  I have never tried DHCPv6 however.

Spike

>Message: 1
>Date: Thu, 2 Oct 2014 04:33:31 +0300
>From: Ady <ady-sf at hotmail.com>
>To: syslinux at zytor.com
>Subject: [syslinux] DHCP option 93 for UEFI
>Message-ID: <BLU436-SMTP29576A0456664C18857768BB90 at phx.gbl>
>Content-Type: text/plain; charset="US-ASCII"
>
>This is slightly off-topic for the Syslinux mailing list, but I think
>
>it is still pertinent and it might be helpful anyway.
>
>I am confused about some conflicting information regarding DHCP
>option
>93, Architecture Type.
>
>The UEFI specification v.2.4 Errata B, Table 179, "PXE Tag
>Definitions
>for EFI", makes reference to a table in:
>
><http://www.ietf.org/assignments/dhcpv6-parameters/dhcpv6-parameters.x
>ml#processor-architecture>
>
>which in turn makes reference (among others) to another table in:
> <http://tools.ietf.org/html/rfc4578#section-2.1>
>
>
>These two tables contain conflicting information:
>
>RFC 4578      - DHCPv6
> 7 EFI BC     -  7 x64 UEFI
> 9 EFI x86-64 -  9 EBC
>
>In addition, there is a PDF _from the UEFI Group_,
> "IPv6 Remote Boot Requirements From UEFI Forum", IETF 72, year 2008,
>
>
>which correctly reproduces the RFC 4578 (no conflict), and adds:
> 6 EFI IA32  <- used by many vendors for legacy boot of x64 machine
> 7 EFI BC   <- used by many vendors for EFI x64 boot
>
>So, I have some questions:
>
>1_ Which Architecture Type value "should" correspond to
>   (U)EFI (x86_)x64?
>
>2_ Isn't this conflicting information "messing" what vendors are
>   supposed to set/follow?
>
>3_ Is there older (U)EFI hardware following one convention and newer
>   (U)EFI hardware following another?
>
>4_ In practical terms, what would be an "adequate" way to solve this
>   matter in the DHCP configuration file for option 93,
>   Architecture Type?
>
>5_ Can/should other options be used instead of option 93 for UEFI
>   clients (e.g. "Class Identifier", option 60)?
>   Is this a practical solution for every conflicting case?
>
>6_ Since the DHCPv6 (RFC 5970) and UEFI specs claim "to be in parity"
>
>   with RFC 4578 and the PXE specs, is this some kind of typo in
>anyone
>   of the aforementioned documents?
>
>TIA,
>Ady.


More information about the Syslinux mailing list