Windows 7 SP1 with NVMe driver does not load on VMWare 14

2

1

I am testing Windows 7 Ultimate SP1 on VMWare first as right now I do not have real NVMe drive. After integrating MS hotfix KB2990941 & 3087873 the resulting Windows 7 SP1 64 ISO boots in EFI mode but does not proceed beyond Starting Windows logo screen on VMWare Workstation 14 when the disk controller is NVMe. It does not freeze as such as I see the slight steady movement of logo around itself, however it gets stuck there. Hotfixes are integrated into both Boot.wim and Install.wim

The main purpose of these fixes is to enable native NVMe driver support on Windows 7 SP1. Windows 10 ISO installs fine though with its built-in native NVMe driver. The slipstreamed Windows 7 ISO also installs fine if the virtual drive is IDE, SATA or SCSI. This step conforms that slipstreaming is fine.

Things I have tried so far but did not help

  • Integrated only KB2990941 and skipped 3087873
  • First install Windows 7 on SATA virtual drive then manually install hotfixes then add second NVME disk.
  • Found an OpenFabrics NVMe driver for Windows 7 64. Pushed it into Boot.Wim and Install.wim with DISM forceunsigned switch. Got BSOD for nvme.sys during boot.
  • As indicated on some sites, copied Boot.wim and Setup.exe from Windows 10 ISO into Windows 7 sources. This time it detects the drive and copies files but when it reboots, back to being stuck at starting windows!
  • Just for experimental purposes, tried my hands on an unofficial Windows 7 SP1 ISO available for download on third party sites. Still same result
  • Tried with both Windows 7 SP1 and Windows 7 SP1 + April 2016 roll up updates. Same result

I am now exhausted with options. It appears to me that the above hotfixes somehow do not work with VMWare Virtual NVMe controller in Windows 7 64 SP1. Can someone point me to any further troubleshooting options or any possible solution? Host OS is Windows 7 Ultimate 64 SP1 if that matters in anyway.

Thanks.

Update Following works, it’s close but still not what I expect.

-Integrate KB2534111 in Windows 7 SP1 Ultimate 64 Bit

-Install the OS in VMWare 14 on virtual SATA HDD. Install the NVMe hotfixs. Add NVMe virtual disk and restart VM. Now Windows 7 installs drivers and detects the virtual NVMe disk.

-However the moment I slipstream 2534111, 2990941 & 3087873 the resulting ISO stalls at Windows logo during first boot the moment it finds NVMe virtual disk.

Update Just for experimental purposes I tried Windows 7 32 bit with OpenFabrics NVMe driver. This time it detected the Virtual NVMe Drive, copied all files and when it rebooted, again stuck at Starting Windows.

I suspect there’s some sort of incompatibility between Windows 7 SP1 and VMWare NVMe controller that I am unable to explain.

I wanted to test the slipstreamed Windows 7 64 SP1 with MS Native NVMe drivers on VM first hoping that it will work, but it did not. Now I am not too sure if the same setup would work on real hardware or not. I have no clue now if the issue exists in Windows 7 SP1 or VMWare’s NVMe Controller.

rajeev

Posted 2018-03-06T10:29:28.163

Reputation: 1 088

maybe you run into this issue Windows 7 doesn't support GOP only Windows 8 and later. So the hang is unrelated to NVMe. So in VMware option for the VM select BIOS and not UEFI – magicandre1981 – 2018-03-08T14:49:05.653

Windows 7 SP1 boots fine & installs normally in EFI mode on VMWare Workstation 14. The moment I integrate the NVMe drivers (MS Hotfixes) and the moment it detects Virtual NVMe drive, it stalls during boot. – rajeev – 2018-03-08T15:07:39.013

In case required storage controller driver is missing, then Windows 7 boots and comes to a point where it asks you to load driver. This typically happens when I use original Windows 7 SP1 (Without the hotfixes) and when storage is NVMe in VM. – rajeev – 2018-03-08T19:07:46.580

Answers

1

The method described below apparently does not work with VMware Workstation version 14 for the installation of a Windows 7 x64 guest, and the problem seems to be with the drivers not working with the NVMe controller which is installed by VMware, and the problem appears during boot.

However, everything works perfectly when the boot is from a non-NVMe controller, where the secondary NVMe controller does not cause any problem. An attempt to extract the NVMe driver in this situation gave the stornvme driver, but it cannot be integrated into the boot since it is unsigned. However, even with pressed F8 during boot and disabling signature enforcement did not help with the boot.

I have suggested that perhaps the problem is with a 64-bit Window 7 guest, and suggested the use of a 32-bit version of Windows 7, and am currently waiting for an answer.

In any case, the NVMe controller can be used under Workstation 14, just not for booting.


The Dell article How to install Windows 7 on systems with Skylake chipset has this procedure described as :

Here you will learn how to get your Windows 7 Image ready for NVME-Drives and USB 3.0 and how to create an installation media with this image.

The summary of the procedure is as follows :

Preparations

  • Create a folder named temp on drive C with these subfolders: src, mount, winremount, hotfix, drivers.
  • Download the needed Intel RST and USB 3.0 drivers from this Link. Unzip and copy the included folders to C:\temp\drivers.
  • Download and unzip the following Microsoft Windows Hotfixes KB2990941, KB3087873.
  • Copy the .msu files from the unzipped hotfixes to C:\temp\hotfix.
  • Copy all files and folders from your Windows 7 DVD image to C:\temp\src.

Modify the Image

  • Run a Command Prompt (CMD) as administrator.
  • Execute the following commands :

    dism /Mount-Wim /WimFile:c:\temp\src\sources\boot.wim /Index:1 /MountDir:c:\temp\mount
    dism /Image:C:\temp\mount /Add-Package /PackagePath:c:\temp\hotfix
    dism /Image:C:\temp\mount /Add-Driver /Driver:c:\temp\drivers /Recurse
    dism /Unmount-Wim /MountDir:C:\temp\mount /Commit
    dism /Mount-Wim /WimFile:c:\temp\src\sources\boot.wim /Index:2 /MountDir:c:\temp\mount
    dism /Image:C:\temp\mount /Add-Package /PackagePath:c:\temp\hotfix
    dism /Image:C:\temp\mount /Add-Driver /Driver:c:\temp\drivers /Recurse
    
  • Open Windows Explorer for C:\temp\mount\sources, sort the files by Date modified, and copy all modified files to C:\temp\src\sources.

  • Execute the command

    dism /Unmount-Wim /MountDir:C:\temp\mount /commit
    
  • To identify the install.wim index to modify, use the command

    dism /Get-WimInfo /WimFile:c:\temp\src\sources\install.wim
    
  • Use this number in the following commands :

    dism /Mount-Wim /WimFile:c:\temp\src\sources\install.wim /Index:[INDEXNUMBER] /MountDir:c:\temp\mount
    dism /Image:C:\temp\mount /Add-Package /PackagePath:c:\temp\hotfix
    dism /Image:C:\temp\mount /Add-Driver /Driver:c:\temp\drivers /Recurse
    
  • Modify the recovery partition of index 1 :

    dism /Mount-Wim /WimFile:c:\temp\mount\windows\system32\recovery\winre.wim /Index:1 /MountDir:c:\temp\winremount
    dism /Image:C:\temp\winremount /Add-Package /PackagePath:c:\temp\hotfix
    dism /Image:C:\temp\winremount /Add-Driver /Driver:c:\temp\drivers /Recurse
    
  • Complete the modification process with these commands:

    dism /Unmount-Wim /MountDir:C:\temp\winremount /Commit
    dism /Unmount-Wim /MountDir:C:\temp\mount /Commit
    

Create the Installation Media

  • To create the ISO file, download the Microsoft tool oscdimg.

  • Unzip the file and copy oscdmig.exe to C:\Windows\System32\.

  • In the command prompt execute this command :

    oscdimg.exe -b[Path to]efisys.bin -u2 -udfver102 [Path to files] [Path to create the image]Win7_image.iso
    
  • To create the installation media, use the Microsoft Media Creation Tool.

harrymc

Posted 2018-03-06T10:29:28.163

Reputation: 306 093

I have followed similar procedure already to slipstream KB2990941 & 3087873 as per the MS KB article. The resulting ISO boots fine but when it detects Virtual NVMe drive on VMWare 14 during boot it stalls. I can install on SATA then install the hotfixes and then add NVMe and boot and it works fine! However it does not work during first boot! It might work on real hardware but that's not the question. That's where I have a specific question as to why it does not work on VMware Workstation when drive is NVMe and it's a very first boot when disk is uninitialized. – rajeev – 2018-03-09T23:33:11.623

You might try the above drivers to see if they work better. Question: Is the NVMe drive totally virtual or is a real one being passed-through? If totally virtual, then I wonder which hardware VMware emulates, because you will then need the right NVMe drivers by the manufacturer. You might also try to create the boot media using FlashBoot which does it differently from DISM, and if this works you may need the Pro version ($29.95).

– harrymc – 2018-03-10T07:57:37.617

There's no real NVMe hardware. It's the virtual NVMe disk controller from VMWare 14. Windows 8.1 & 10 install just fine with the native NVMe drivers in VMWar14 with NVme disk. The 2 hotfixes add native NVMe capability to Windows 7. They also work fine when installed as separate MSU files on SATA and then I add a separate NVme drive. I can then even clone SATA to NVme and it works fine too on Windows 7. The moment I integrate into Windows 7 ISO it stalls at Starting Windows if and only if it detects Virtual NVme drive in VMWare 14. ...continued. – rajeev – 2018-03-10T13:20:57.593

The NVMe drivers by third party like Intel Samsung OCZ do not work with VMWare 14 NVme controller. I have tried adding all in boot.wim as well as install.wim. Also tried to install them during setup when it throws that message 'Required CD/DVD driver is missing'. The only driver that works on VMware in the MS Native driver which unfortunately is not available as a standalone driver. It's part of the two hotfixes. – rajeev – 2018-03-10T13:23:00.173

You might slipstream also Microsoft's Convenience rollup update as described in this How to.

– harrymc – 2018-03-10T17:30:04.943

Yes, I have done that as mentioned in my question. Instead of Convenience rollup update I have called it as April2016 updates as it covers everything since SP1 till April 2016. – rajeev – 2018-03-10T21:29:14.583

See also this detailed tutorial.

– harrymc – 2018-03-11T19:43:17.300

If you haven't read the above tutorial, I would like to point out this possibility : To an existing Windows 7 VM add a secondary NVMe storage controller, boot the VM to have Windows install the right driver, then extract it using any Free Windows Driver Backup and Restore product, finally slipstream this driver into the ISO.

– harrymc – 2018-03-12T20:48:04.350

I extracted stornvme.sys and stornvme.inf from Windows 7 and slipstreamed into the ISO. To my surprise despite being Microsoft provided drivers, DISM warned me that those are not signed and I needed to use forceunsigned switch. The resulting ISO boots fine, clears the Windows logo but fails to detect the NVMe drive at a point where it says ‘Where do you want to install Windows’. I could see the stornvme folder created on RAM drive. Selecting that folder warns me that no signed drivers found and installation cannot proceed. ....continued – rajeev – 2018-03-13T01:33:33.820

I tried slipstreaming entire set of drivers from Windows 10 boot.wim into Windows 7 boot.wim but I get missing files errors during install. I even used my Windows 10 PE, initialized the Virtual NVMe drive to GPT, created a partition and then tried Windows 7 installation but that did not help too. It seems there’s some incompatibility between Windows 7 hotfixes and a clean install on Windows 7 on VMWare NVMe drive on Hardware 13 and above, which I have not been able to resolve so far. Thank you harrymc for your support. – rajeev – 2018-03-13T01:34:15.830

The Microsoft article Update to add native driver support in NVM Express in Windows 7 and Windows Server 2008 R2 lets you download hotfix 487764, which is possibly the missing piece. The article also describes all the steps to rebuild the ISO. This hotfix will supposedly allow using Windows 7 with all NVMe devices, but is not included in any Windows Update download.

– harrymc – 2018-03-13T07:06:37.593

I am unable to find any reference to hotfix 487764 on that page. I have referred the same page to integrate 2990941 & 3087873. All others like Intel, Lenovo, Dell etc have taken reference of this article to describe how to go about installing Windows 7 on their laptops with NVme drive. I am wondering where exactly hotfix 487764 is mentioned. I even tried disable driver signature enforcement by pressing F8 but did not help. – rajeev – 2018-03-13T07:10:28.943

I should have searched more, but apparently Fix487764 is actually KB2990941 and Fix3366972 is KB3087873 (found here). But you may examine the slipstream instructions included in the article to see if there is something you missed.

– harrymc – 2018-03-13T07:22:47.323

Remark: For slipstreaming unsigned drivers you need to use dism with the /forceunsigned switch. – harrymc – 2018-03-13T07:29:13.260

Yes I have tried with that switch too. In addition I also pressed F8 and again forced disable signature enforcement. I believe there's some sort of incompatibility. The MS Driver was designed back in 2014 whereas VMWare NVMe controller is relatively recent from 2017. While other method as mentioned under Update in my question works, clean install stalls. – rajeev – 2018-03-13T07:38:08.583

Apparently this used to work in the past. My last gasp idea before pointing you to the VMware forums, is to use a VMware Workstation version dating from these times, for example version 9 from 2014. You may perhaps achieve the same effect by creating the VM with the format of VMware Workstation 9.

– harrymc – 2018-03-13T07:45:09.597

And on another note : On your Windows 7 version you could also Install Hyper-V which might work better than VMware.

– harrymc – 2018-03-13T09:11:48.557

I need to check if VMWare Workstation 9 would support NVMe controller. To my best understanding it was added for the first time in Hardware Version 13 and VMware Workstation 14. – rajeev – 2018-03-13T15:23:47.620

I think you're right about VW14 - my suggestion was not very good. The VMware device seems problematic, and you cannot slipstream unsigned drivers because Windows x64 will ignore them. Your options as seems to me are: (1) Use Windows 32-bit where drivers are unsigned, (2) Use the unsigned driver as described here, (3) Stay with the NVMe as second disk, or convert the first disk to NVMe after the driver is installed, (4) Try Hyper-V where Windows might better play with Windows.

– harrymc – 2018-03-13T16:56:13.823

Other methods are certainly working like adding a second disk or later cloning SATA to NVME. The whole issue is clean install. Is there any virtual NVMe controller in Hyper-V that I can test with this setup? So far I could only find SCSI Controller assigned to the HDD in Hyper-V on Windows 10 Pro. Windows 32 bit may be out of question as I guess it needs EFI boot methods for NVMe drives (I may be wrong here). I even tried Virtual Box but it has known issues with EFI boot on Windows 7. – rajeev – 2018-03-13T17:38:59.257

(The second disk method is mentioned above.) I don't see why NVMe shouldn't be available for 32-bit as there are drivers for it (example link). You may try the second disk trick with a 32-bit VM to extract the driver. Hyper-V : The documentation is extremely unclear whether only real NVMe controllers are supported, and whether if only on Server 2016. I think you are rapidly running out of options, so better try the 32-bit route.

– harrymc – 2018-03-13T18:23:41.753

I notice update to your answer. Look like you also tried it out. Micorosft has not released any 32 bit NVMe drivers for Windows 7. Just for experimental purposes I tried Windows 7 32 bit with OpenFabrics NVMe driver. This time it detected the Virtual NVMe Drive, copied all files and when it rebooted, again stuck at Starting Windows! With Windows 7 64, I can install it on virtual SATA, then install hotfixes, then add virtual NVMe drive and then it boots fine. I can then even clone the SATA to NVMe, remove SATA and then also it works fine. However problem is during fresh boot install. – rajeev – 2018-03-20T09:18:07.980

For me 32bit is not really desired as I have Windows 7 64 and as much as possible till extended support ends I want to stick with it. So in future I am likely to buy newer hardware with NVMe drive. That's where I first though of trying it out (Windows 7 64 with those hotfixes) in VMWare Workstation to get a feel if it works fine as expected. – rajeev – 2018-03-20T09:20:23.940

You could boot Windows with debug to see where it is stuck on boot. Likely this is on the NVMe driver, but who knows. Also interesting is whether boot works in Safe mode. – harrymc – 2018-03-20T09:30:14.923