When a client boots from the network over PXE in a Microsoft SCCM environment, the following procedure takes place:
- The PXE client broadcasts an EXTENDED DHCPDISCOVER package (containing the DHCP option 60) from port 68 and both, the DHCP and the WDS/PXE server in the same broadcast domain receive the discover on port 67.
- The DHCP server broadcasts a DHCPOFFER package from port 67, offering the client a free IP address. The client receives this offer on port 68.
- The WDS/PXE server broadcasts an EXTENDED DHCPOFFER package from port 67 (containing DHCP option 60 incl. the IP address of the PXE server). The client receives this offer on port 68.
- The PXE client broadcasts a DHCPREQUEST package from port 68, requesting the acknowledgement of the IP offer. The server receives this request on port 67.
- The DHCP server broadcasts a DHCPACK package from port 67, acknowledging the requested IP address. The client receives the acknowledgement on port 68, knowing now that it can use this IP.
- The PXE client uni casts an EXTENDED DHCPREQUEST package (containing the DHCP option 60) from port 68 to the WDS/PXE server. The server receives this request on port 4011.
- The WDS/PXE server uni casts an EXTENDED DHCPACK package (containing the DHCP option 60 and the boot file name path to download the NBP via TFTP). The client receives this acknowledgement on port 68 and starts downloading the boot image via the TFTP protocol from the known location.
When running PXE during a SCCM OS deployment, the WDS/PXE server forwards the EXTENDED DHCPDISCOVER to the “ConfigMgr PXE service point” component, which is implemented on the WDS/PXE server as an additional PXE provider (“SMSPXE”). The SMSPXE provider talks to the central SCCM management point to receive additional information about the client which is currently running the PXE boot:
- SMSPXE executes a “LookupDevice” to verify based on the MAC address of the PXE client, if the client is known. The result “Device found in the database” is expected.
- SMSPXE executes a “GetBootAction” to verify, if the client has an advertisement which is enabled for PXE boot. The result “Found optional [mandatory] advertisement” is expected. Note: “GetBootAction” will not be executed at all, when there are no boot images installed on the “SMSPXEIMAGES$” share of the WDS/PXE server.
- SMSPXE sends the EXTENDED DHCPOFFER package. Note: the DHCPOFFER will NOT be sent, when the above prerequisites are not fulfilled. This will results in a failed PXE boot on the client.
Troubleshooting PXE boot issues
When the PXE boot fails during a SCCM OS deployment, the following points can be checked:
- Is PXE boot activated on the client and does the “DHCP…/” message appear on the screen?
- Does the WDS/PXE server receive the EXTENDED DHCPDISCOVER (WDS service is running, port 67 is open and receives broadcasts) and does the smspxe.log file log the action “LookupDevice” for the client’s MAC address?
- Are the PXE boot loader files available on the PXE server in the folder “C:\Windows\Temp\PXEBootFiles”? If not, the following error may be reported during PXE boot: PXE-T01: The specified file was not found, PXE-E3B: TFTP Error – File not found. Note: In some cases the WDS may have problems in copying the boot loader files to that folder while starting and as a result, the service cannot start at all. When this happens, a helping workaround is to rename (or delete if possible) the “PXEBootFiles” folder and restart the WDS service.
- Is the PXE device listed in the SCCM database with the correct MAC address and does the smspxe.log file log the action “Device found in the database” ? Note: To force the WDS/PXE server to check the SCCM database against a MAC address with each PXE request, it is needed to set the registry value “CacheExpire” to “1” (“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\PXE“). Else the WDS/PXE server will use cached information for the “LookupDevice” action which will be refreshed by default only once per hour.
- Are both default boot images (x64 and x86) replicated to the WDS/PXE server and does the smspxe.log log the action “GetBootAction“?
- Does the PXE device has a “PXE enabled” advertisement which advertises a task sequence having a boot image assigned and does the smspxe.log log the action “Found optional [mandatory] advertisement“?
- Does the WDS/PXE server send the EXTENDED DHCPOFFER and does the client start downloading the boot image?
- Does the SCCM “Network Access Account” have access to the “SMSPXEIMAGES$” share and the folder “[SMSDRIVE]:\RemoteInstall\SMSIMAGES” on the WDS/PXE server and is the boot image package up to date (“Update Distribution Point”)?