I ran into this scenario recently while at a client’s site, working with SCCM to create a server build task sequence.
Let’s say you have SCCM installed, including a CAS, multiple Primary Sites and Secondary Sites, and many Distribution / Management Points. However, despite having Distribution Points in your environment, you do not have them PXE-enabled. Instead, you are using a standalone Windows Deployment Services (WDS) server to handle/manage the PXE-boot process.
Now, the second part of the scenario. In SCCM, we have MDT installed and integrated. Therefore, we are using not the “normal” Boot Images created by the installation of SCCM, but rather the MDT Boot Image.
So, to sum up: SCCM Distribution Points without PXE enabled, using the MDT Boot Image, and using WDS standalone.
So, here’s the issue. IF you take the MDT Boot Image from SCCM, and upload it into WDS as a Boot Image, you encounter an issue. When you system PXE Boots, everything seems to be OK, and the boot image starts to load. First it will show “Initializing hardware devices…”, then it will show “Windows is starting up…”. Finally, it will show “Preparing network connections…”, and then BAM! Nothing! And the system will restart, just to repeat the same process over again.
If you enable Command Line support in the Boot Image, you can press F8 and be able to check the Log files to see what’s going on. So, if you press F8, and navigate to X:\SMSTSLog\, you will see a .Log file called “SMSTS.log”. Open it in Notepad (by typing “notepad” in the command line, since we don’t have the CMTrace.exe utility available to us). In the Log file, scroll to the bottom, and you should see a entry that says: “Failed to download PXE variable file. Code(0x00000001).”
Now, if you search online for a solution, most posts will mention checking drivers (usually NIC drivers). But in my case my VM was getting an IP Address, therefore it’s not a NIC driver issue.
Well, thanks to some of my co-workers, they pointed me to the following website: http://www.deployvista.com/Blog/JohanArwidmark/tabid/78/EntryID/54/Default.aspx. This article refers to an older version of SCCM, but is still applicable with SCCM 2012. Additionally, for applicability/clarity, the information taken from the above listed article has been re-written/worded, and includes screenshots.
When you add the Distribution Point (DP) role to a system managed by SCCM, and enable the “PXE support for client’s” option, SCCM will install (if not already installed as a Role/Feature) the Windows Deployment Services (WDS) server role. This makes is difficult to co-exist with other Boot Images, like the MDT Lite Touch boot image, on independent/standalone WDS servers.
With SCCM, you can generate WinPE Boot Images for Operating System Deployment (OSD). However, the issue is using a standalone WDS system which is not managed by SCCM to provide the PXE boot option on the network, with an SCCM DP server where the OSD content exists (and where the boot image refers to).
SCCM Boot Media Information
When an SCCM generated Boot Media is used, there are additional configuration files contained within the ISO, most importantly the TSMBootStrp.ini and Variables.dat files. These files are present within the SCCM generated boot media, but not actually contained within the .WIM file itself. The issue is further complicated due to the fact that you cannot add an ISO boot media file into WDS, but rather, require a .WIM file.
The solution is to extract the contents of the SCCM generated boot media ISO file, and add the missing configuration files into the Boot Image .WIM file. After these files have been added into the Boot Image, this .WIM file can be added into WDS, and thus made available to PXE boot.
Modifying a WinPE Boot Image (WIM) File to Include SCCM Boot Media Files for Standalone WDS
This section provides step-by-step instructions on how to extract SCCM Boot Media content, and insert/inject it into a Boot Image .WIM file.
Create SCCM Boot Media
Launch the SCCM Console, and navigate to Software Library > Operating Systems > Task Sequences.
Right-click on the Task Sequences section heading, and choose Create Task Sequence Media.
On the Select Media Type page, choose Bootable Media, then click Next.
On the Media Management page, choose Dynamic Media, then click Next.
On the Media Type page, choose CD/DVD Set, provide a location and filename, then click Next.
Note: The path does not need to be a UNC patch, and can be a local drive (i.e. C:\). Also, the Filename provided must end with the “.ISO”.
On the Security page, select the ‘Enable Unknown Computer Support’ option. You can also choose to password protect the media, but this is not required. Accept all other default selections as-is, then click Next.
On the Boot Image page, click Browse and select the appropriate Boot Image, and Distribution Point. Then click Add and select an available Management Point. Once all 3 fields have been entered, click Next.
On the Customization page, accept the defaults, and click Next.
On the Summary page, review the selections made, and then click Next.
On the Completion page, click Close.
You should now have an .ISO file at the location you specified during step 5.
Extract SCCM Boot Media ISO Contents
At the location of your ISO file, use a ZIP program (i.e. 7zip), and extract the contents of the .ISO file. This should create a folder, with the same name of your ISO file, containing all the files (i.e. C:\SCCMBootMedia\).
Note: Ensure that you make note of where the ISO extracted folder contents is located, as this will be needed in the next section.
Mount Boot Image WIM File and Inject SCCM Boot Media Files
To be able to complete this step of the process, you must have the Windows Automated Installation Kit (AIK) installed. It is important to note that this tool is not compatible with Windows XP, and therefore must be installed/used on a newer Operating System (i.e. Windows 7/8.x). This document will not detail on how to install the AIK, as this is a straightforward process.
Note: For Windows 8.x, the AIK has been changed/re-named to the “Windows Assessment and Deployment Kit (ADK)”.
Important: For simplicity, it is recommended to copy your Boot Image (.WIM) file to the same location that you extracted the SCCM Boot Media (.ISO) to.
Start this part of the process by launching the Deployment and Imaging Tools Environment.
Within the command prompt, type the following command:
ImageX /MountRW <index#>
Example: ImageX /MountRW C:\BootImage.WIM 1 C:\BootImageMountLocation
This will now allow you to explore (and thus add) the content contained within the Boot Image WIM file, from the Mount Location you specified, via File Explorer.
Navigate to the location that you extracted the SCCM Boot Media ISO file, and copy the \SMS\Data folder into the WIM Mount Location.
Example: C:\SCCMBootMedia\SMS\Data to C:\BootImageMountLocation\SMS\
Return to the Deployment and Imaging Tools Environment command prompt, and type the following command to unmounts the image (WIM) file, and commit the changes applied (i.e. the files copied into the directory).
ImageX /UnMount /Commit
Example: ImageX /UnMount /Commit C:\BootImageMountLocation
Copy the updated Boot Image .WIM file (which should now have an updated timestamp) to the WDS server, launch the Windows Deployment Services console, select the Boot Images folder, and click Action > Add Boot Image.
On the Image File page, click Browse, and navigate to the modified .WIM file that was copied to the server, then click Next.
On the Image Metadata page, provide an Image Name and Image Description, then click Next.
On the Summary page, review the information presented, then click Next.
On the Task Progress page, once the operation has completed, click Finish.
Back in the WDS console, under Boot Images, you will now see your Boot Image listed which will be used for PXE booting.
Now when you PXE boot your system, and boot into WinPE, your system will be able to communicate with SCCM, and continue the rest of the process (running Task Sequences).
As always, if this post helped you in any way, and you would like to show your appreciation, please rate it and comment on it. Also, feel free to contact me (via the About Me page) with requests for future articles.