Booting from NVMe
With NVMe being such a new technology, boot support is a bit shaky. Ideally, you'll have a motherboard that supports UEFI and that has support for NVMe drives. You can still use NVMe drives as secondary storage drives if you don't have such a motherboard and boot from another device. Windows 8 and up come with an integrated NVMe driver that handles device detection and booting. On Windows 7, you'll install the NVMe driver Intel provides and the drive will magically appear. On any recent Linux It Just Works(TM), NVMe devices have the name nvme0n1 and so on, so don't look for sda1.
Installing Windows 8, or anything more recent, is really easy. Just plug in your USB stick, boot off it using UEFI, and you will see the drive like any normal SSD/HDD, which makes installing to it directly a breeze.
What about Windows 7?
Our ASRock motherboard has full UEFI and NVMe support yet I could not install Windows 7 on the 750 Series SSD. Intel does provide an install-time driver, which does list the drive during Windows installation, but Windows kept insisting that the drive can not be used to boot from, and installation wouldn't continue. The same issue occured when the Windows 7 installer was started from within Windows.
So...looks as though Windows 7 users are out of luck? Not exactly. I spent a couple days with this problem and figured out a complicated fix, but it does work. You basically want the Windows 8 bootmanager and UEFI loader partition on the drive, which then loads the Windows 7 EFI kernel loader.
- Install Windows 7 on a separate HDD/SSD, boot into it and install the Intel NVMe driver. Put that disk away for the moment and have the NVMe SSD as nothing more than a storage device.
- Boot off the Windows 8 install USB stick.
- Create one big partition spanning the whole drive, minus 100 GB. This big partition will be where Windows 7 will end up. Now, create a second partition with the 100 GB, which will be used as an installation target for Windows 8.
- You should also see the UEFI partition and system-restore partition at this point. Leave those alone.
- Go through with the Windows 8 installation and boot from Windows 8.
- Shut down and install the SSD that has Windows 7 on it.
- Format that big partition you made earlier and copy all files from the Windows 7 drive onto it. Windows Explorer won't work, but Robocopy works, so you can also clone the whole partition (not the whole disk), using an imaging tool.
- Now, download Visual BCD Editor and add a Windows 7 loader to the "Loaders" section.
- In Visual BCD Editor, set ApplicationDevice and BootDevice to the correct partition, probably D:.
- Change ApplicationPath to "\windows\system32\winload.efi". The efi at the end is the important part.
- Save and reboot, but keep the Windows 7 SSD installed.
- Windows will boot now, but it will boot from the D: partition and not C:.
- Fix the issue by using regedit to go to HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices and swap the entries for \DosDevices\C: and \DosDevices\D: (just rename the key names).
- Power off and remove the Windows 7 SSD. Done!
- You can now delete the Windows 8 partition and expand the Windows 7 partition to use the space.