Thursday, 10 July 2014

SCCM 2012 R2 PXE Boot: The details below show the information relating to the PXE boot request for this computer. Please provide these details to your Windows Deployment Services Administrator so that this request can be approved. The Boot Configuration Data for your PC is missing or contains errors. File: \boot\bcd Error Code: 0xc000000f


SCCM 2012 R2 PXE Boot is failing, the target device gets an IP address from DHCP and appears to make a connection although it fails with the error The details below show the information relating to the PXE boot request for this computer. Please provide these details to your Windows Deployment Services Administrator so that this request can be approved.

 
I opened the SMSPXE.log file from the location below, this may vary in your environment.
 
 
The Configuration Manager Trace Log Tool which can be downloaded and installed from here http://www.microsoft.com/en-us/download/details.aspx?id=36213 is an excellent way to read log files.
 
After some research on the following errors I decided to remove the PXE services from the Distribution Point.
 
You will notice from Server Manager than WDS is present on the local server, the following process is going to uninstall WDS.
 
From the Configuration Manager Console click on Administration and Distribution Points, and right click on the local distribution point that is causing issues in the site you are in, and select Properties.
 
 
From the Properties page, click on the PXE tab, and untick the box Enable PXE support for clients. The following warning will be displayed PXE and Multicast are no longer enabled on this distribution point. Do you want Configuration Manager to remove Windows Deployment Services from this distribution point? in this instance click Yes.
 
Allow a few minutes and check back in Server Manager you will notice WDS is no longer installed.


In this deployment of SCCM the boot images were generally untidy so I decided to remove them all by right clicking on them individually and selecting Delete.

 
Accept the warning message about removing the boot images.
 
Now the Boot Images pane shows No Items found.

The next stage is to rename (or delete but as this is a production system I prefer to rename) the RemoteInstall folder that can be found on the SCCM installation partition.


Navigate back to the Properties of the Distribution Point and renable PXE support for clients by ticking the box, SCCM will display the following warning about configuring UDP ports for your DHCP scope options. None of this has been changed so we can click Yes.
 
 
Ensure Allow this distribution point to respond to incoming PXE requests, Enable unknown computer support and Require a password when computer use PXE are all ticked. Remember to set a password that will be displayed after a client does the inital PXE boot.
This particular SCCM server has multiple Network Adapters, therefore I elected to click Respond to PXE requests on specific network interfaces, this is done by specifying the MAC Address of the interface you want clients to PXE to.
 
The getmac command can be used from Command Prompt to display all the physical addresses available to the server.
 

The next stage is now to import the boot images into the SCCM again, distribute the content, reconnect them with Task Sequences and attempt to PXE boot again. On completion of doing this the client sucessfully PXE booted. The initial error The details below show the information relating to the PXE boot request for this computer. Please provide these details to your Windows Deployment Services Administrator so that this request can be approved was resolved.
Now it appears there is corruption in the boot images themselves, after the client is PXE booted using F12, it displays the following error The Boot Configuration Data for your PC is missing or contains errors. File: \boot\bcd Error Code: 0xc000000f and the device reboots itself.
 
 
The first task was to delete all of the old Boot Images again from SCCM, to clear out any legacy issues. The second is to regenerate the images from scratch.
To regenerate the images open an Administrative - Deployment and Imaging Tools Environment from the SCCM server, this is installed as part of the ADK - Deployment Tools. Use the following commands to generate each of the new boot images, please note that both the architectures are required for this to work.
Copype.cmd amd64 C:\WinPE\x64
Copype.cmd x86 C:\WinPE\x86
 
These commands generates a WIM file in C:\WinPE\%architecture%\media\sources, these WIM files must be imported into SCCM. As SCCM only supports UNC paths for images imports share the C:\WinPE folder, giving Full Control Share Permissions and Read & execute, List folder contents and Read to the Authenticated Users principal on the NTFS/Security tab.
Open the Configuration Manager console and navigate to Software Library and then Boot Images. Click the Add Boot Image icon from the ribbon.
 
In the Path field, enter the full UNC path to the newly generated WIM file. This must be done twice, once for both x86 and x64. The Boot Image field should be set to 1 - Microsoft Windows PE (x64) click Next.
 
Name the image accordingly.

 
The repeat this process for both architectures and they should appear in the list of boot images.
 
When PXE was disabled and renamed at the beginning of this guide, the RemoteInstall folder was recreated. This was why the original RemoteInstall folder was renamed at the beginning. You will notice it is emtpy at present.
 
If this folder remains empty you will receive the following error The specified file was not found. TFTP Error - File Note Found this is because the DHCP server on the network is configured to point to this directory.
 
If you check the configuration of the DHCP server, under Scope Options you will see Option 67 Bootfile Name is configured as SMSBoot\x64\wdsnbp.com and are we know this folder is empty. Please note this can be changed to SMSBoot\x86\wdsnbp.com if required. Although the x86 folder must be populated also.
 
In SCCM 2012 you can populate these folders by right clicking and selecting Properties from the Boot Image repository. Click on the Data Source tab, and tick the Deploy this boot image from the PXE-enabled distribution point.


Ensure you do this for both x86 and x64, and click the Update Distribution Points from the ribbon.

 
This will populate the RemoteInstall\SMSBoot folder for the particular architecture.
 
Check back and you will notice the folder has been populated with the required files, notice wdsnbp.com is present which is the exact file DHCP option 67 is configured to point to.
 
Because all of the original boot images have since been deleted, but the orignal Task Sequences have not we now need to go back and retrospectively reconnect each Task Sequence with a valid boot image.
From the Configuration Manager console, browse to Software Library\Task Sequences and right click on a valid Task Sequence and select Properties.
 
From the Properties page click Advanced and ensure Use a boot image: is ticked. The Browse button can be used to browse the available boot images. Select the correct architecture and click OK.
 
 
Click OK and Distribution Content once again.
Attempt to PXE boot, and now it works!