In MDT Lite Touch, there are two types of drivers to worry about when deploying Windows. There are drivers for Windows PE (the boot image) and there are drivers for the Windows Operating System that you deploy.
Driver management for the boot image is pretty straight , but driver management for the Operating Systems that you deploy is more complex. The real answer is it depends. To simplify I have broken down drivers for the Windows Operating system in to three core scenarios (see later in this post). But first, let's start with the boot image drivers.
Drivers for Windows PE (the boot image)
The boot image you use for deployment is based on Windows PE (a subset of the Windows 10 operating system). For the boot image you need at Nic and Storage drivers at minimum, but sometimes you need to add other drivers as well (such as mouse drivers for remote cards like ILO etc.)
The good thing about Windows PE is that it supports the same hardware as Windows 10, so if you are lucky you don't need to add any drivers at all to it. But in this article you find guidance if you need to add any driver. You also need to set the scratchspace in Windows PE to increase the temporary storage that is used when the Windows setup engine is injecting drivers.
To be successful with boot image drivers in MDT Lite Touch I recommend that you do the following
- Create two folders in Out-Of-Box drivers, name the folders WinPE 5.0 x86 and WinPE 5.0 x64.
- Import any needed x86 drivers into the WinPE 5.0 x86 folder, and any needed x64 drivers into the WinPE 5.0 x64 folder. Note: You should only use Windows 8.1 drivers for the boot images, even if you plan to deploy Windows 7 SP1 with MDT 2013 Lite Touch.
- Create two selection profiles, one named WinPE 5.0 x86 (where you select the WinPE 5.0 x86 folder in Out-Of-Box drivers), and one named WinPE 5.0 x64 (where you select the WinPE 5.0 x64 folder in Out-Of-Box drivers.
- Then configure the deployment share properties to use the correct selection profile. In the Windows PE x86 Components tab, in the Driver Injection area, select the WinPE x86 selection profile. Do the same for Windows PE x64 Components tab, but select the WinPE x64 selection profile.
- Also in the deployment share properties, in the Windows PE x86 Settings tab, in the Lite Touch Boot Image Settings area, set the Scratch space size to 128, do the same in the Windows PE x64 Settings tab.
Drivers for Windows Operating systems
To simplify things I recommend starting with one of three core scenarios when configuring drivers for MDT 2013 Lite Touch. The three scenarios are based on the size of the company, the number of operating systems being deployed, the level of control desired, and the number of hardware models.
Scenario #1 – Total Chaos
This scenario has the following assumptions. This is for a small company, they are only deploying one operating system, say Windows 8.1 x64, and they have a few hardware models from the same vendor. The key things here are that they are deploying just one family of operating systems and that the hardware is from the same vendor. The reason is that the larger vendors do test compatibility among their own models per operating system family, so it's quite rare that a driver from one model will interfere with another driver.
For this scenario I recommend that you stick with the default simple PnP ID detection based method for drivers. Shorthand story is, just download and extract the drivers for each model to a folder, and import that folder into the Deployment Workbench.
Scenario #2 – Added Predictability
This scenario has the following assumptions. This is a small or midsize company, they are deploying multiple operating systems, say Windows 7 SP1 x64 and Windows 8.1 x64, and they have a few more hardware models but still from the same vendor. The major difference from the first scenario is that are deploying multiple operating systems. Since the default method is using PnP ID detection among all imported drivers we need to have a way of filtering the drivers so that only Windows 7 drivers are considered for Windows 7 SP1 deployments, and that only Windows 8.1 drivers are considered for Windows 8.1 deployments. The feature in MDT 2013 that we can use for this filtering is called Selection Profiles.
For this scenario I recommend that you use the default PnP ID detection based method with the addition of using selection profiles as a filter for the drivers. The configuration in MDT is that you first create two folders inside Out-of-box drivers, named Windows 7 x64 and Windows 8.1 x64. Then you import the drivers the correct folder in the Deployment Workbench.
After importing the drivers, you create a selection profile created for each operating system driver folder, and then configure the Inject Drivers action in the Task Sequence to use the correct selection profile.
Scenario #3 – Total Control
This scenario has the following assumptions. This is a small, medium or larger company, they are deploying multiple operating systems, say Windows 7 SP1 and Windows 8.1, they have many hardware models, and from multiple vendors. The major difference from the second scenario is that they are using hardware from multiple vendors, and the fact that they want more granular control of their drivers.
Note: This method is my personal favorite, because even if it takes some extra time to setup, I get complete control of the driver injection process.
Anyway, since there are multiple vendors involved, the testing and compatibility matrix between each model cannot be guaranteed if you base detection on PnP only. You need to be able to filter not only on operating system but also on a per model basis. Even though you technically could use selection profiles for this as well, this is not what they were designed for. There is another feature called DriverGroup that will help you do some more advanced filtering.
For this scenario I recommend that you don't use the default PnP ID detection based method, but instead use DriverGroup as a filter for the drivers. The configuration in MDT 2013 is that you first create two folders inside Out-of-box drivers, for example named Windows 7 x64 and Windows 8.1 x64. Then you create subfolders for each model you have. Then you download and extract the drivers for each model, and per operating system. Then import each per operating system folder and per model into the correct folder in the Deployment Workbench.
Please note that selection profiles and driver groups work together meaning if I have a selection profile including driver A, and a driver group including driver B, both drivers will be added. Most times you only want one or the other but they can be combined. When using drivers per model I recommend you to use the selection profile named Nothing for the Inject Drivers action. The real trick for this scenario is to name the driver folders according to the name of the model, then you can set the DriverGroup001 variable to %Model% in either the Task Sequence or in the rules.
Also, to avoid having issues with drivers not detected by plug and play within the folder (DriverGroup), I recommend forcing driver injection by changing the Inject Drivers action property to "Install all drivers from the selection profile". The property is a bit misleading, because it's also valid for driver groups, but the label does not really say that 🙂