5

I've been using WDS for a while, and now we want to move to iPXE and chain into WDS, but due to some DHCP issues (we are not the owners and cannot configure it) I'm unable to configure the DHCP options for two boot files.

I know that WDS can somehow detect if a booting machine is UEFI or Legacy bios, but how does it do that?

If I can somehow use only that feature on a linux machine or a windows server that would be great, I just can't find any documentation online about it.

Alex Zel
  • 182

2 Answers2

2
  1. If you have no access to the DHCP infrastructure you can set a proxyDHCP server. In a DHCP + proxyDHCP scenario the DHCP server only provides IP/MASK etc while the proxyDHCP server provides the PXE specific parameters on a complementary DHCP transaction.

    1 IP address 2 Network mask 3 Additional DHCP options (if any) 4 IP address of the TFTP server that hosts the bootstrap loader 5 Boostrap loader File Name

DHCP + proxyDHCP vs PXE DHCP

DHCP + proxyDHCP vs PXE DHCP (Pic from Serva)

  1. The client announces its architecture on boot as a part of the DHCP transaction. The first packet broadcasted by the client is a DHCPDISCOVERY including the DHCP option 93 specified by RFC 4578

         Type   Architecture Name
         ----   -----------------
           0    Intel x86PC              (BIOS pre-OS environment)
           1    NEC/PC98
           2    EFI Itanium
           3    DEC Alpha
           4    Arc x86
           5    Intel Lean Client
           6    EFI IA32                 (UEFI 32 pre-OS environment)
           7    EFI BC                   (UEFI 64 pre-OS environment)
           8    EFI Xscale
           9    EFI x86-64               (UEFI 64 pre-OS environment)
    
Pat
  • 3,048
-1

When the PXE (or whatever it’s called with UEFI) client requests a DHCP lease, it provides various details (“options”) about itself, including the “Client System Architecture Type”, (option 93).

I’ve encountered the following values:

  • 7 for UEFI
  • 2 for x86

Since DHCP always uses broadcast when sending requests, you can easily discover the values you need using a packet sniffer like Wireshark.

user219095
  • 65,551