WARNING: This is unsupported, it has never been tested by BMC and is only here for educational purposes. The exact procedures to define the needed DHCP logic will vary depending on DHCP server version and vendor.
As such a step by step “How-To” guide for this topic is outside of the scope of BMC support. If detailed procedures are required, one should consult with DHCP vendor for assistance.
Speaking generally, the work involved would be to configure appropriate DHCP Class and Scope policy options to create the following logic for devices that need to PXE network boot (such as workstations that would be captured or deployed), e.g.:
- If DHCP client is UEFI 64-bit then offer:
- DHCP Option 66 = OSD Boot Listener IP address for scope
- DHCP Option 67 = bootx64.efi
- Else If DHCP client is UEFI 32-bit then offer:
- DHCP Option 66 = OSD Boot Listener IP address for scope
- DHCP Option 67 = bootia32.efi
- Else If DHCP client is VOIP then offer:
- DHCP Option 66 = VOIP tftp server for scope
- DHCP Option 66 = VOIP boot file name
- Else DHCP client must be a legacy bios, offer:
- DHCP Option 66 = OSD Boot Listener IP address for scope
- DHCP Option 67 = pxeboot.
The following ressources could help one to set this up:
-
Introduction to DHCP Policies-
https://wiki.fogproject.org/wiki on BIOS and UEFI Co-Existing-
Using DHCP to Boot BIOS & UEFI
Once the needed DHCP logic is configured, it can be tested and verified using Wireshark network captures and reviewing the bootp.dhcp information:
64-bit UEFI client DHCP Discovery packet:
DHCP Server offer in reply to above request:
The appropriate DHCP option (67) value will be dependent on what (if anything) was in the DHCP Discover Option (93) from the client:
- Client Option (93) EFI x86-64
- This is 64 bit UEFI
- Offer DHCP Option (67) = bootx64.efi
- Client Option (93) EFI x86
- This is 32 bit UEFI client
- Offer DHCP Option (67) = bootia32.efi
- Client Option (93) Missing or 0
- This is Legacy BIOS
- Offer DHCP Option (67) = pxeboot.0
Once the needed DHCP options are configured, ensure that each OSD Network Boot Listener is configured similar to the screen shot below: