Recently, I came across a problem while setting up OSD at one of my clients: I was unable to use install Windows 7 on a variety of their systems using the drivers from the manufacturer. Specifically, with the Lenovo T440s, it would fail when booting up the first time, after successfully applying the driver pack.
The error read: Windows could not configure one or more system components. To install Windows, restart the computer and then restart the installation.
This problem is caused by the drivers some of these newer systems are using, and their reliance on an updated version of the Kernel Mode Driver Framework. The best approach, in my opinion, is to add the latest hotfix to the WIM so that Windows is ready when the drivers come down. Normally this could be accomplished through the ConfigMan console with offline servicing. However, my current client isn’t using SCCM for patching, so our site doesn’t have a SUP. Furthermore, all I’m doing here is an OSD build out, so I’m not going to go setting one up. Instead, I’m going to inject the hotfix the same way SCCM does, just manually. This is also useful if you’ve ever just wondered what goes on under the hood.
To start, we’ll need the latest KMDF from Microsoft: http://www.microsoft.com/en-us/download/details.aspx?id=38423
Once you’ve downloaded it to your SCCM server, you’ll need to extract it using a tool such as 7zip:
.\7za.exe x kmdf-1.11-Win-6.1-x64.msu
Also, we’ll need to find our WIM. If you don’t know which image index you’re after, you can retrieve it using dism /get-wiminfo /wimfile:F:\source$\OSD\WIMs\MYWIM.wim like I did here.
Mount it using DISM:
dism /mount-wim /wimfile:F:\source$\OSD\WIMs\MYWIM.wim /mountdir:E:\Scratch /index:1
Inject the hotfix you extracted earlier:
dism /image:E:\Scratch /add-package /Packagepath:F:\source$\Hotfix\KMDF1.11
Since I still had the .MSU file in my directory, I got an error, but the hotfix (KB2685811) did install properly. I can verify this with DISM:
dism /get-packages /image e:\scratch
Now all that’s left to do is unmount and commit:
dism /unmount-wim /mountdir:E:\Scratch /commit
That’s it! Once it unmounts, just update your distribution points and we’re ready to support newer drivers for newer models.