Sunday, March 20, 2016

Deploying Windows 7 to systems with NVMe drives

I just got in a shiny Dell Precision 7510 loaded to the gills for one of our mobile graphics design standards to replace the Dell Precision M4800. It has Thunderbolt, NVMe, etc. Since we are still using Windows 7 for design it needs to work with that OS. Luckily Microsoft has released an update to support NVMe. Two KBs are needed.

The KB articles talk about injecting into your source install.wim from the original SP1 DVD however I chose to go a different route and do this via our Deployment Task Sequence.

Three reasons for this decision. One is that it is done via a hotfix, not an (more vetted) update so I want to only apply it to the affected systems. This thew out it being done via our Build and Capture TS. Second is there is a hotfix to the hotfix. The second hotfix (3087873) fixes a BSOD problem after applying the NVMe hotfix. The third being that as of this writing, we are using version 3 and version 2 of the hotfixes respectively. Therefore I did not want to inject it for all systems.

In my TS, the OS arch is chosen via an HTA so immediately after the Apply OS step we run both hotfixes.

This is done via simple DISM commands calling a package containing both files:

 DISM /Image:%OSDISK%\ /Add-Package /PackagePath:".\Windows6.1-KB2990941-v3-x64.msu"  
 DISM /Image:%OSDISK%\ /Add-Package /PackagePath:".\Windows6.1-KB3087873-v2-x64.msu"  

While I did it as two steps, you can run it as one by stacking the PackagePath switches:

 DISM /Image:%OSDISK%\ /Add-Package /PackagePath:".\Windows6.1-KB2990941-v3-x64.msu" /PackagePath:".\Windows6.1-KB3087873-v2-x64.msu"  

Couple things to note.

The hotfixes are only for 64-Bit Windows 7 and Server 2008 R2. This is due to it needing UEFI. I will say that I got it to work with BIOS and drives formatted via the MBR but your hardware may not work this way. my eval units are BIOS, however for production they will be UEFI.

You cannot update the firmware of an NVMe drive in Windows 7. Per the first hotfix, the subnsystem is not in Windows until 8.1.