What is PXE Booting?

In computing, the Preboot eXecution Environment, PXE (most often pronounced as /ˈpɪksiː/ pixie) specification describes a standardized client–server environment that boots a software assembly, retrieved from a network, on PXE-enabled clients. On the client side it requires only a PXE-capable network interface controller (NIC), and uses a small set of industry-standard network protocols such as DHCP and TFTP.

How is PXE Booting handled in UFIT?

PXE Server-side: The PXE server stores a “boot image” in a specific directory.

DHCP Server-side: The DHCP server helps guide the end-user to the PXE server.

Client-side: The client reaches out to the DHCP server, which guides the client to the PXE server. Once the client receives the “boot image” they are able to successfully PXE boot and load the operating system.

How to configure PXE Booting in UFIT

PXE Server-side: The PXE server must be configured with a boot file and have network access to reach the DHCP servers (128.227.30.234, 128.227.30.238). If you are unsure of the ability of your PXE server to reach the DHCP servers please email ICT-Network@mail.ufl.edu.

DHCP server-side: Please submit a ticket or email ufit-ict-infrastructure-reliability-service@mail.ufl.edu. The ICT-Monitoring Infrastructure team will assist you in configuring PXE for your subnet. Specific instructions are listed below.

Client-side: Once PXE has been configured on the PXE server-side and the DHCP server-side the client should need only select the boot option from their menu to load the boot image.

PXE Booting Specifics

PXE booting should *only* be configured through Infoblox, UFIT’s DDI (DNS, DHCP, IP Address Management) solution, unless it is absolutely necessary that an 'ip-helper' statement is used. A corner-case in which this would be necessary is for Apple products which use Netboot. 

Within Infoblox, certain subnets will require BOOTP/PXE options. The following explains how to configure these options in Infoblox:

For PXE Booting to One Server

BOOTP/PXE for one server can be configured at the shared network and network levels, respectively

Depending on the server, some, if not all of these IPv4 DHCP options must be configured:

In the IPv4 DHCP Options tab, under "Custom DHCP Options"...

  • vendor-encapsulated-options(43) -- (This is a hexadecimal number specific to the vendor of the server)
  • vendor-class-identifier(60) -- (i.e. PXEClient)
    o tftp-server-name(66) -- (i.e. 10.241.x.x)
  • bootfile-name(67) -- (i.e. boot/wdsmgfw.efi)

OR
In the "IPv4 BOOTP/PXE" tab...

  • Boot File -- (i.e. boot/wdsmgfw.efi
  • Next Server -- (i.e. 10.241.x.x)
  • Boot Server -- (This should usually match the next server)

For PXE Booting to Multiple Servers

For PXE booting to multiple servers within one subnet, you will need to create DHCP IPv4 Option Filters:

In the Data Management>DHCP>IPv4 Filters tab:

  • Create an IPv4 Option Filter. Leave "Apply this filter as a global DHCP class" unchecked
  • Name the filter

Use the following options for type:

For Legacy PXE Clients
  • Rules: vendor-class-identifier(60) -- substring equals -- 0,20 -- PXEClient:Arch:00000
  • Rules: vendor-class-identifier(60) -- substring equals -- 0,4 -- MSFT
  • DHCP Options: bootfile-name(67) -- (i.e. BStrap\\X86pc\BStrap.0)
  • DHCP Options: tftp-server-name(66) -- (i.e. 10.241.x.x)
  • DHCP Options: vendor-encapsulated-options(43) -- (This is a hexadecimal number specific to the vendor of the server)
  • BOOTP: Boot File: (i.e. BStrap\\X86pc\BStrap.0)
  • BOOTP: Next Server: (i.e. 10.241.x.x)
  • BOOTP: Boot Server: (i.e. 10.241.x.x)
For UEFI x64 PXE Clients
  • Rules: vendor-class-identifier(60) -- substring equals -- 0,20 -- PXEClient:Arch:00007
  • Rules: vendor-class-identifier(60) -- substring equals -- 0,20 -- PXEClient:Arch:00008
  • Rules: vendor-class-identifier(60) -- substring equals -- 0,20 -- PXEClient:Arch:00009
  • DHCP Options: vendor-class-identifier(60) -- PXEClient
  • DHCP Options: vendor-encapsulated-options(43) -- ff
  • BOOTP: Boot File: (i.e. BStrap\\X86pc\BStrap.0)
  • BOOTP: Next Server: (i.e. 10.241.x.x)
  • BOOTP: Boot Server: (i.e. 10.241.x.x)
For UEFI x86 PXE Clients
  • Rules: vendor-class-identifier(60) -- substring equals -- 0,20 -- PXEClient:Arch:00006
  • HCP Options: vendor-class-identifier(60) -- PXEClient
  • DHCP Options: vendor-encapsulated-options(43) -- (This is a hexadecimal number specific to the vendor of the server)
  • BOOTP: Boot File: (i.e. BStrap\\X86pc\BStrap.0)
  • BOOTP: Next Server: (i.e. 10.241.x.x)
  • BOOTP: Boot Server: (i.e. 10.241.x.x)

Note: A few characters need manual escaping when you configure a DHCP boot file name, in order to keep the dhcpd.conf file consistent. If you do not use appropriate escape characters, then it might lead to a non working boot file name.

The following characters require manual escaping
  • '\t'- Tabulation character
  • '\r'- Carriage return
  • '\n'- New line
  • '\b'- Bell
  • '\xYY'- YY hex-number (a-f, 0-9)

For example, if you set the ‘Boot File’ to: '\x86\topdir\subdir\file.img'

You might need to enter \x and \t as the manual escape characters: '\\x86\\topdir\subdir\file.img'

You can also specify all \ as the manual escape character: '\\x86\\topdir\\subdir\\file.img'

For any and all issues related to PXE please email ufit-ict-infrastructure-reliability-service@mail.ufl.edu.