Thursday, March 14, 2013

PXE Boot with SCCM 2012 SP1 and Server 2008 R1

We recently upgraded to SCCM 2012 SP1 from RTM.  The Upgrade to SP1 required going to PE4 boot images. This isn't supposed to be a problem on Server 2008 R1, at least in theory the WDS service in that version supports PE4 based PXE boot.

Well unless its a SCCM boot image being controled by the SCCM infrastructure.  It doesn't work out of the box.  BUT it does work with some effort.

After sending the new Boot images to the distribution point we began to see errors mounting them and then extracting the needed boot files.  A little internet searching by one of my co-workers reveiled an article on the matter that almost worked.

http://jackychuasce.blogspot.de/2012/07/how-to-troubleshooting-pxe-service.html

However the solution near the bottom of the article almost worked, but not quite.  It got me thinking though, which lead to the following process which solves the problem.

  1. Get WDS installed (it it isn't already) on the DP either by adding the the role Manually, or Checking the option for PXE the support in the DP properties
  2. Add the PXE supprt on the DP if it isn't enabled yet
  3. Once the DP has been configured for PXE (Check the SMSPXE.log to see if its active, and look to see if the \Remoteinstall\SMSBoot folder has been created) go ahead and distribute the boot images to the server, make sure to send both x86 and x64 boot images.

    Once the boot images have been distributed this is where you you need to start playing some tricks to get the PE4 boot files loaded to support PXE boot for SCCM 2012 SP1.
  4. In \Remoteinstall create a folder called "SMSTempBootFiles"
  5. Restart the WDS service, it should create two subdirectories that have the same name as the Package IDs of your SCCM boot images
  6. Go to the \remoteinstall\smsimages directory, the subdirectories for the boot images should exist there as well. Verify they exist there.
  7. Install the ADK http://www.microsoft.com/en-us/download/details.aspx?id=30652
    You only need to do this on one server, the goal is to use the tools within to mount the images and extract some content.
  8. Once the ADK is installed open the Start->Programs->Windows Kits->Windows ADK->Deployment and Imaging Tools Environment Command Prompt
  9. If this server was an Integrated PXE server before the SP1 upgrade go to the \remoteinstall\smsboot\x86 and x64 directories and clear the contents.  If you do not some of the boot files will not be replaced with the PE4 content.
  10. In a scratch directory on the server create two Subdirectories "Mountx86" and "Mountx64"
  11. In the "Deployment and Imaging Tools Environment" Command Prompt use ImageX to mount the respective images to the mount directories you created:
    imagex /mount M:\RemoteInstall\SMSImages\PS100003\boot.PS100003.wim 1 m:\mountx86
    imagex /mount M:\RemoteInstall\SMSImages\PS100004\boot.PS100004.wim 1 m:\mountx64
  12. Go to each mount directory and copy the "Windows" directory out to \remoteinstall\SMSTempBootFiles in the respective subdirectory for each boot image
    Example: copy m:\mountx86\windows to \remoteinstall\smstempbootfiles\PS100003
    Note: put a copy of these "Windows" directories someplace central and you can just copy them to the correct place on your other DPs, skipping steps 7, 8, 9, 10
  13. Restart WDS and it will load the boot files into \remoteinstall\smsboot\x86 and x64
The root cause of the problem is that it can't get the boot images mounted to extract the needed boot files.  Manually coping them there works around the problem.