How To Manage Device Drivers When Deploying OS Images Via Microsoft SCCM
Written by Neil Harrison, Microsoft Premier Field Engineer
If you ever had to deploy an OS image to different varieties of end-user hardware then you’ll know the frustrations that can occur when dealing with the multitude of drivers that may come in to play. Using Microsoft System Center Configuration Manager (ConfigMgr) for OS deployments will save IT staff a lot of time and effort when it comes to dealing with these driver issues since we no longer have to include drivers as part of the OS image itself. This means that we can have one image for multiple hardware types and not have to worry about pre-loading hundreds of drivers to satisfy all situations.
In this post, I’ll discuss how to import drivers into the SCCM Driver Catalog and how I choose to organize these for easier management. In my next post, I’ll discuss how to utilize these drivers along with the options available to us when deploying an OS image.
Note: In order for a driver to be accessible to a client, it must be included in a driver package on a distribution point which is also accessible to the client.
Here are the steps I use to get drivers imported into ConfigMgr
- Consolidate new drivers in to one shared location. The first thing we need to do is consolidate our drivers for our new hardware into a shared location that can be accessed by the Import Wizard (the SMS Provider will need read access to this). The drivers must exist on a share as the New Driver Import wizard requires the driver files to be accessible through UNC.
- Create new folder(s) based on Manufacturer (if necessary) . Under the Drivers node of OSD (Operating System Deployment), create a new folder for the hardware manufacturer if one does not already exist. I choose to organize my drivers by Manufacturer as that is how I find things easiest to manage, but it’s important to note there is no right or wrong answer as to how to organize your driver catalog. For example, I may also choose to add additional subfolders under the manufacturer for CPU architecture (x86 vs. x64) to organize things even further. The important thing is to do whatever makes sense for you and your organization but I find this method usually works well for me. However, I try not to create folders based on a specific model and this is because ConfigMgr only lets us import driver definitions once into the catalog even though these may apply to more than one model.
- Start the Import New Driver Wizard. Right-click the Drivers node under Operating System Deployment and start the Import New Driver Wizard.
- Enter the location of the drivers. The first screen of the Import New Driver Wizard is going to ask if we want to import all of the drivers at a specific UNC path or just import a specific driver by locating its .inf or txtsetup.oem file. In this example, I put all of my drivers in one location so I just need to enter the UNC path from Step 1.
- Select which drivers to import. On the Driver Details screen we can now see all of the drivers found at the UNC path from Step 4 as well as those found in any subfolders. By default, all of the new drivers have been selected for us but we may choose to selectively choose drivers if we don’t want to import all of these. We can also add a category to the drivers that are about to be imported, but this is optional.
- Choose our driver package. On the Driver Package screen we can choose to add the drivers to one or more packages that already exist, or we can choose to create a new package. In this example, we’re adding drivers for a model we did not previously have setup so we choose to create the New Package.
- Create a new driver package (if necessary). Unlike our folders in the Driver Catalog I choose to add my drivers to packages based on Model, not Manufacturer. This makes sense as we can add drivers to multiple packages and we can later choose to target specific packages at specific hardware using Task Sequences (discussed in my next post). On the New Driver Package screen, we enter a Name for the package, an optional comment/description and a driver package source location. The driver package source location is where the source files will be copied to and later used as a source location for distribution points.
- Add drivers to our boot image. The next screen allows us to add these drivers to the WinPE boot images we have defined. We only need to do this for network or mass storage drivers as these are critical for the system to boot properly with WinPE. In this case, we downloaded x64 drivers so I’ll choose to add these to the Boot Image now even though we could do this later on as well.
One thing to mention about adding drivers to boot images is that we want to add drivers which match the version of WinPE we are using. For example, if we are running ConfigMgr R2 we should have WinPE 3.0 images (Windows 7). Therefore, even though we may be deploying an XP OS later in the Task Sequence, we still need to add Windows 7 drivers to this boot image.
If we’re not sure, the version of WinPE can be seen by viewing the properties of the boot image under the Boot Images node in OSD.
9. Complete the Wizard. We then complete the wizard by reviewing the Summary and clicking Finish.
10. Distribute our package. Right-click the driver package you created during this wizard and select Manage Distribution Points which will start the Manage Distribution Points Wizard. Use this wizard like you would for any other software package and add the driver package to the necessary distribution points.
Now that we’ve successfully imported our new hardware drivers we’re ready to begin thinking about deploying an OS image to this hardware.
As usual, the System Center Configuration Manager online documentation is excellent and inside they have great information on How to Manage the Driver Catalog.