When you want to deploy a Windows image via SCCM you require a WinPE boot image first. At most of my customers I have to rebuild the WinPE boot image to make sure it works correctly for all of their hardware. In this blog I will explain how you can easily create a WinPE boot image via SCCM.
WinPE boot image starting points:
- Reduce the total available boot images within SCCM (This will reduces maintenance tasks afterwards)
- One WinPE (x86) boot image
- One WinPE (x64) boot image
- Make sure that the WinPE boot images contain all required drivers so all default hardware is supported
Step 1 (Optional)
Download and install the latest Windows Assessment and Deployment Kit (ADK).
Download link: Windows Assessment Deployment Kit
SCCM requires the following features from the Windows ADK.
- Deployment Tools
- Windows Preinstallation Environment (Windows PE)
- User State Migration Tool (USMT)
Step 2 (Optional)
When the new ADK is installed you need to update the boot files in SCCM. (Note: If you perform an SCCM upgrade after you updated the Windows ADK you can skip this step)
- Copy the x86 winpe.wim from C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\en-us\ to the OSD folder of your SCCM environment \\<site-server\SMS_<site-code>\OSD\boot\i386
- Copy the x64 winpe.wim from C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\x64\en-us\ to the OSD folder of your SCCM environment \\<site-server\SMS_<site-code>\OSD\boot\x64
Delete the old boot.wim and rename the winpe.wim to boot.wim.
Reboot your server or restart the SMS Agent Host services to load the new Window ADK version.
Update all boot images by Updating the Distribution Points.
Select the “Reload this boot image with the current Windows PE version from the Windows ADK” option.
In this step we will be downloading and preparing the WinPE driver packages so we can add these to SCCM in the next step. I usually create a WinPE boot image based on the WinPE boot packages from the bigger hardware vendors like Dell, HP, Lenovo and VMware (VMware is only required for the virtual network drivers). If you add these WinPE driver packages to your boot image you can boot most hardware that is currently available.
Download the driver packs from here:
Dell : Dell Driver Packs
HP : HP Driver Packs
Lenovo: Lenovo Driver Packs
My personal preference goes to the Dell driver packages because I think Dell does a better job if it comes to driver management. In theory it shouldn’t matter from which vendor you download the WinPE driver packages because both vendors use the same Intel and Broadcom drivers.
I have downloaded the current WinPE 10 and WinPE 5.x cabs from the Dell website. If you need support for older hardware you can also download the WinPE 4.x, 3.x or 2.x cabs.
Extract the driver cabs and copy them to your SCCM driver source location.
In my case that will be \\<SCCM Source Share>\Drivers\Sources\WinPE\<WinPE Version>\<Platform>\<Cab Version>
If you require VMware drivers to support your virtual machines you need to install the VMware Tools drivers on a virtual machine and copy the entire contents of the C:\Program Files\Common Files\VMware\Drivers\ folder to your driver source location.
Before we will start importing the WinPE drivers I want to explain some SCCM behavior first. The default behavior of SCCM is that when you try to import a driver that already exists in SCCM it will just append whatever category you have defined to that existing driver. So by default you can’t import duplicate drivers. This means that you can’t create stand-alone driver packages and after a while drivers will be part of multiple categories.
I don’t prefer to manage driver via categories in SCCM. I prefer to create a stand-alone driver packages for each hardware model.
We can create a standalone driver package as follows:
- Create a bat file inside the driver source root folder and copy the below script and add it into the batch file. Name it for example “OptiPlex3050.bat”
1234@ECHO OFFfor /f "tokens=*" %%G IN ('dir /ad /b /s') DO (echo. > "%%G\%~n0.txt")
- Run the batch file and it will create a “OptiPlex3050.txt” file inside each folder.
- Because each folder has an additional .txt file the file hash of each folder will be different and therefore SCCM thinks its a different driver. So now we can start importing the drivers. 🙂
Now that we have prepared the driver packages we are ready to start importing the WinPE drivers packages.
- Right click Drivers and select Import Drivers
- Locate the driver location
- Enable “Hide the drivers that are not in a storage or network class (for boot images)”
- Assign a driver category
- Create a new driver package and define the new driver package source location.In my case that will be \\<SCCM Source Share>\Drivers\Packages\WinPE\<WinPE Version>\<Platform>\<Cab Version>
- Add the drivers to the a boot image. (Note: It is easier to add the drivers to a boot image at a later stage)
- Repeat this step for all drivers packages.
- Move the imported drivers to the target sub folder under the Drivers branch.
- Deploy the driver packages to the distribution points and move them to the target sub folder under the Driver Packages branch.
At this point we can start creating a new boot image. (I will always leave the default Boot images default and create two new boot images.)
- Right click on the Boot Images branch and select Add Boot Image
- Browse to the source location of the boot.wim file.The default location of the boot.wim file is: \\<SCCM Server>\SMS_<SiteCode>\OSD\boot\<Platform>\boot.wim
Note: you do not need to make a copy of the boot.wim file. SCCM will create a new boot.<ImageID>.wim file.
- Give the new boot image a name.
In this step we will be adding the WinPE drivers to the new boot image(s).
- Select the drivers you want to add to the boot image. (In this case I will add all Windows 10 WinPE (x64) drivers to the WinPE (x64) boot image.)
- Select the correct boot image
- Repeat this step for all drivers you want to add to the boot image.
In this last step I will adjust the properties of the boot image to your personal needs.
By default I will enable the following settings:
- Retrieve the properties of the new boot image and adjust the properties
- On the Customization tab: Enable the “Enable command support (testing only)” option
Note: When this option is enabled you can open a command window via the F8 key during the WinPE phase
- On the Data Source tab: Enable the “Enable binary differential replication” and “Deploy this boot image from the PXE-enabled distribution point” options
- On the Optional Components tab: Add the required additional components (In this case I added the PowerShell component)
- Save the adjusted properties
- Configuration Manager will ask you to update the distribution points: Choose Yes
SCCM will now mount the boot image and add the drivers and additional components to it
Link the the newly created boot image to the available task sequences and your done. 🙂