SCCM 2012 – Importing and Managing Drivers for OSD

There are two main sets of drivers to worry about. WinPE drivers, and the target OS drivers. If your computer can’t boot WinPE, or WinPE can’t talk to the disk or network card, not much will get done. Conversely if WinPE lays down an image and reboots to it and the OS doesn’t have disk or network drivers, any subsequent task sequence steps will fail because your PC won’t be able to contact the SCCM server.

Here’s how to manage drivers in SCCM:

Driver Organization

We need two folders: first, a place to put drivers downloaded from the OEM’s website and second, a place for SCCM to store it’s driver databases (called ‘Driver Packages’).

I created the following folder structure on my SCCM site server:

  • source$\
    • driversource
    • driverpackages
    • applications
    • images
    • ossource
    • …etc

Driversource is where we will put downloaded OS drivers. For example:

  • source$\driversource\
    • Win7\
      • Dell Optiplex 9010
        • <a bunch of folders, INF files, etc.>
      • Dell Optiplex 990
        • <a bunch of folders, INF files, etc.>
      • Lenovo X1C
        • <a bunch of folders, INF files, etc.>
    • WinXP\
      • HP xw4300
        • <a bunch of folders, INF files, etc.>
      • HP xw4600
        • <a bunch of folders, INF files, etc.>

Driverpackages is a folder that SCCM will manage. Messing with stuff in this folder will break things. SCCM will make folders subfolders with GUID’s for each driver included in the package.

In the following example folder structure, I would have created the source$ share, the driverpackages folder, the OS folders, and the make\model folders. However, SCCM creates and manages the GUID-named folders.

  • source$\driverpackages
    • Win7
      • Dell Optiplex 9010
        • {idsfbsg-srgsrtg-4564w65mklsfsfgs}
    • WinXP
      • Dell Optiplex 990
        • {83453q-efsdfgsgs-45545yerthdfgssdfg}

Step-By-Step – OS Drivers

  1. Create a folder in .\source$\driverpackages\<os>\<model>.
  2. Create a folder in .\source$\driversource\<os>\<model>.
  3. Download the OEM drivers, extract them, and put the extracted files in the .\driversource\… folder.
  4. Open SCCM Console -> Software Library -> Operating Systems -> Drivers.
  5. Right-click ‘Drivers’ and choose ‘Import Driver’.
  6. On the ‘Locate Driver’ screen, enter the unc of your downloaded source drivers. This should look like: \\sccm-server\source$\driversource\<os>\<model>.
  7. On the ‘Driver Details’ screen, add a category to make it easier to clean up after bad or accidental imports later. I always use the Make + Model + OS (ex: “Dell Optiplex 9010 Win7”).
  8. On the ‘Add Driver to Driver Packages’ screen, click ‘New Package’.
  9. On the ‘Create Driver Package’ screen, enter a name and path. The name of the driver package should match the category for clarity. The path of the driver package should be the folder .\source$\driverpackages\<os>\<model> created in a previous step.
  10. On the ‘Add Driver to Boot Images’ screen, do not choose to add any drivers to the boot image at this time.
  11. Finish the import wizard. It will take some time for the drivers to finish importing.

Step-By-Step – Boot Image Drivers

Next, we need to add the network and sata drivers to the boot images so that WinPE can access the HDD and NIC. Without this step, it’s likely that WinPE will attempt to load then immediately reboot because it cannot reach the SCCM server.

  1. Navigate to SCCM Console -> Software Library -> Operating Systems -> Driver Packages.
  2. Right-click your new driver package and choose ‘Show Members’.
  3. Right-click the headers of the viewing pane (The bar showing column names like “Icon”, “Name”, “Provider”, etc.) and add the ‘Content Source Path’ field.
  4. Sort the list by driver ‘class’, then highlight all drivers with the classes ‘SCSIAdapter’, ‘Net’, and ‘hdc’, but only those which are for the x86 architecture. You can usually tell the architecture by the content source path.
  5. Right-click the highlighted drivers -> Edit -> Boot Images.
  6. Add your selected drivers to the x86 boot images listed. Be careful, because adding x86 drivers to an x64 boot image, or vice versa can break the boot image. Also, ensure that the checkbox labeled ‘Update the distribution points’ is checked before hitting ‘OK’.

Now, you should be able to PXE boot your target computer. You can verify that the nic drivers work by pressing F8 in WinPE to open a command prompt, then trying to ping an ip address. To verify disk drivers, in the WinPE command prompt run the command ‘diskpart’ then enter ‘List Disk’.

Step-By-Step for Win7+

Next, we need to get the OS drivers into the task sequence.

First, we need to find out what your target computer thinks it’s model name is.

  1. Open PowerShell on the target system.
  2. Execute the following command, and copy down the answer somewhere safe. We need the response that this command gives to properly form the WMI query in the Task Sequence.
    (gwmi win32_ComputerSystem).Model

Next, let’s actually edit the task sequence.

  1. Navigate to SCCM Console -> Software Library -> Operating Systems -> Task Sequences.
  2. Right-click your desired task sequence and choose ‘Edit’.
  3. Select a position after ‘Apply OS Image’ but before ‘Setup Windows and ConfigMgr’ and choose Add -> Drivers -> Apply Driver Package.
  4. On the new TS action, click ‘Browse’ and select the driver package that was just created in the previous section.
  5. Click the ‘Options’ tab of the new TS action.
  6. Click ‘Add Condition’ -> Query WMI.
  7. On the ‘WMI Query Properties’ screen, add the following WMI query. Replace the words ‘Latitude e4300’ from the example query below with the output of the GWMI command in powershell from a previous step. The quotes and % sign should -stay in- the query.
    select * from Win32_ComputerSystem where Model like "Latitude e4300%"
  8. Click OK to close the TS Edit Window and save the TS.
  9. Right-click the TS and choose, ‘Distribute Content’, then complete the wizard to distribute the driver package to your distribution points.

For Win7, you should now be good to go! For XP, there are a couple more steps.

Step-By-Step for WinXP

XP Requires 3 sets of drivers: WinPE, OS Drivers, and OS Mass Storage drivers. The above steps will walk you through completing WinPE and OS Drivers. The subsequent steps will cover mass storage drivers.

  1. Follow the instructions for the WinPE and Win7 sections, then come back here.
  2. Complete the instructions at the following blog post. It is an excellent write-up of the process for finding the correct mass-storage driver and including it in the task sequence. Identifying Windows XP Mass Storage Drivers in Windows PE with Devcon

And that’s it! Good luck out there.

2 thoughts on “SCCM 2012 – Importing and Managing Drivers for OSD

  1. Pingback: Table of Contents | windowsmasher

  2. I blog often and I genuinely appreciate your information. The article has really peaked my interest. I’m going to bookmark your site and keep checking for new details about once a week. I subscribed to your RSS feed too.|

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s