RFC 4578 DHCP PXE Options November 2006 2. Option Definitions There are three DHCP options [5] defined for use by PXE clients. 2.1. Client System Architecture Type Option Definition The format of the option is: Code Len 16-bit Type +----+-----+-----+-----+ | 93 | n | n1 | n2 | +----+-----+-----+-----+ Octet "n" gives the number of octets containing "architecture types" (not including the code and len fields). It MUST be an even number greater than zero. Clients that support more than one architecture type MAY include a list of these types in their initial DHCP and PXE boot server packets. The list of supported architecture types MAY be reduced in any packet exchange between the client and server(s). Octets "n1" and "n2" encode a 16-bit architecture type identifier that describes the pre-boot runtime environment(s) of the client machine. As of the writing of this document, the following pre-boot architecture types have been requested. Type Architecture Name ---- ----------------- 0 Intel x86PC 1 NEC/PC98 2 EFI Itanium 3 DEC Alpha 4 Arc x86 5 Intel Lean Client 6 EFI IA32 7 EFI BC 8 EFI Xscale 9 EFI x86-64 This option MUST be present in all DHCP and PXE packets sent by PXE- compliant clients and servers. ipxe.org DHCP option 93 Client architecture 0 Standard PC BIOS 6 32-bit EFI 9 64-bit EFI You could use this to determine which version of iPXE to provide to a particular client. For example, in /etc/dhcpd.conf: option client-arch code 93 = unsigned integer 16; if exists client-arch { if option client-arch = 0 { filename "bin/undionly.kpxe"; } elsif option client-arch = 6 { filename "bin-i386-efi/ipxe.efi"; } elsif option client-arch = 9 { filename "bin-x86_64-efi/ipxe.efi"; } } kubuntu.org dhcp-boot=pxelinux.0 dhcp-match=set:efi-x86_64,option:client-arch,7 dhcp-boot=tag:efi-x86_64,bootx64.efi Known client architectures Type Architecture Name Reference 0x00 0x00 x86 BIOS [RFC5970][RFC4578] 0x00 0x01 NEC/PC98 (DEPRECATED) [RFC5970][RFC4578] 0x00 0x02 Itanium [RFC5970][RFC4578] 0x00 0x03 DEC Alpha (DEPRECATED) [RFC5970][RFC4578] 0x00 0x04 Arc x86 (DEPRECATED) [RFC5970][RFC4578] 0x00 0x05 Intel Lean Client (DEPRECATED) [RFC5970][RFC4578] 0x00 0x06 x86 UEFI [RFC5970][RFC4578] 0x00 0x07 x64 UEFI [RFC5970][RFC4578] 0x00 0x08 EFI Xscale (DEPRECATED) [RFC5970][RFC4578] 0x00 0x09 EBC [RFC5970][RFC4578] 0x00 0x0a ARM 32-bit UEFI [RFC5970] 0x00 0x0b ARM 64-bit UEFI [RFC5970] 0x00 0x0c PowerPC Open Firmware [Thomas_Huth] 0x00 0x0d PowerPC ePAPR [Thomas_Huth] 0x00 0x0e POWER OPAL v3 [Jeremy_Kerr] 0x00 0x0f x86 uefi boot from http [Samer_El-Haj-Mahmoud] 0x00 0x10 x64 uefi boot from http [Samer_El-Haj-Mahmoud] 0x00 0x11 ebc boot from http [Samer_El-Haj-Mahmoud] 0x00 0x12 arm uefi 32 boot from http [Samer_El-Haj-Mahmoud] 0x00 0x13 arm uefi 64 boot from http [Samer_El-Haj-Mahmoud] 0x00 0x14 pc/at bios boot from http [Samer_El-Haj-Mahmoud] 0x00 0x15 arm 32 uboot [Joseph_Shifflett] 0x00 0x16 arm 64 uboot [Joseph_Shifflett] 0x00 0x17 arm uboot 32 boot from http [Joseph_Shifflett] 0x00 0x18 arm uboot 64 boot from http [Joseph_Shifflett] 0x00 0x19 RISC-V 32-bit UEFI [Dong_Wei] 0x00 0x1a RISC-V 32-bit UEFI boot from http [Dong_Wei] 0x00 0x1b RISC-V 64-bit UEFI [Dong_Wei] 0x00 0x1c RISC-V 64-bit UEFI boot from http [Dong_Wei] 0x00 0x1d RISC-V 128-bit UEFI [Dong_Wei] 0x00 0x1e RISC-V 128-bit UEFI boot from http [Dong_Wei] 0x00 0x1f-0xff 0xff Unassigned