Inaccessible Boot Device after m.2 SSD upgrade

I've replaced my old m.2 256GB Samsung XP941 SSD, my boot drive with Windows 10 installed, with a 1TB 970 EVO Plus. This is on an MSI X99S SLI Plus motherboard that was recently upgraded to the latest non-beta version.

Before I started, I used Macrium Reflect to create a full image of the SSD drive (3 partitions) on my larger non-SSD drive, and created a rescue USB stick. I then replaced the drive physically. After booting with the USB stick, I could restore the image to the new drive successfully.

In the BIOS, Boot Mode is set to Legacy + UEFI as for UEFI only, the new drive does not show. I've set the drive as first boot option. Now when I try to boot from it, Windows gives me blue screen with stop code "Inaccessible Boot Device". After a few times it goes into Automatic Repair mode but this does not help.

Note that in the BIOS settings, under System status, it says "Not present" for the entry M.2/SATA Port 5, although there is definitely an M.2 drive present, as I was able to restore the Macrium image onto it.


Solution 1:

Note that in the BIOS settings, under System status, it says "Not present" for the entry M.2/SATA Port 5, although there is definitely an M.2 drive present

Your new 970 EVO is an NVMe drive which connects through PCIe; it is not a SATA device and does not consume a SATA port. (Most M.2 slots are dual-purpose and accept both SATA and PCIe devices.)

Your old Samsung XP941, meanwhile, was a SATA drive (although it is unclear to me whether it directly used the M.2 SATA interface, or whether it was a PCIe device which had its own SATA controller).

Now when I try to boot from it, Windows gives me blue screen with stop code "Inaccessible Boot Device"

Windows automatically removes storage unused drivers from the early-boot process – if you had the OS installed on a SATA device then only the SATA driver (e.g. StorAhci) is enabled for "boot start", while the NVMe driver is deferred to a later phase (and the same for IDE, SCSI, etc.).

One way to "fix" this is to boot Windows from your old SSD again and run the command:

sc.exe config stornvme start= boot

This will activate the Windows' built-in NVMe driver during the early boot phase. Once that's done, re-clone the system to the new SSD. (Note that rebooting may cause Windows to deactivate the driver again.)

In the BIOS, Boot Mode is set to Legacy + UEFI as for UEFI only, the new drive does not show. I've set the drive as first boot option

This is not a problem, but you should probably think about converting the OS and disk to UEFI boot mode; recent Windows 10 versions come with an mbr2gpt.exe tool for that. On modern firmwares, there's a chance that native UEFI boot will be a little faster. Newest Intel PCs no longer support legacy mode at all.

(Note that in UEFI, "boot options" generally aren't whole drives, but OS-defined entries.)