1

I'm trying to install Windows 10 on a brand new NVMe disk, but I just found out my motherboard can't boot from these (but windows sees it natively in the installer and installs just file), however, I have a spinning HDD that I can boot from. Is it possible to install the bootloader on the spinning disk while keeping the system installed on the NVMe drive ?

I've tried creating an EFI partition at the start of my HDD, formatting it and mounting it to E:, then running

bcdboot C:\Windows /s E: /f UEFI

which does write a new BCD store. However, Windows now boots directly to a blue screen stating that:

The application or operating system couldn't be loaded because a required file is missing or contains errors. File: \Windows\system32\winload.efi Error code: 0xc000000e

I'm assuming it is looking for the winload.efi file in the (mostyle empty) HDD instead of in the NVMe drive where winload.efi is present. Is there anything I can do to explicitly tell the boot loader which partition/volume to search ?

I've had a look at Booting NVMe drive with a bootloader and tried to re-install windows alongside the BCD store that I created which did not change anything.

My motherboard is a MSI Z77A-G43 configured to boot in pure UEFI mode. The SSD is a Samsung 970 EVO that does not require any drivers to show up in the Windows installer or when using a recovery drive.

Thank you in advance.

2
  • Why are you manually creating partitions, the Windows installation environment, would do that for you.
    – Ramhound
    Commented Nov 24, 2018 at 15:03
  • The only partition I created was the EFI partition on my spinning hard drive, Everything else was left to the Windows installer (or rather, to the part of the installer that runs before the first reboot...).
    – anto418
    Commented Nov 24, 2018 at 15:47

1 Answer 1

1

Is it possible to install the bootloader on the spinning disk while keeping the system installed on the NVMe drive?

No. Unlike with Linux, which typically places the kernel next to the bootloader/-manager, Windows does not do so. Windows Boot Manager has to use BIOS/UEFI services to load the initial batch of files from the Windows partition. If BIOS/UEFI cannot access the drive, neither can Windows Boot Manager.

Instead, a different approach might be feasible: Use a generic UEFI NVMe driver (NvmExpressDxe) and have another boot manager load it. Alternatively, you could also modify your UEFI firmware to include the driver.

Here’s a guide on using Clover to load the driver.. I will not quote it because I cannot verify that it works.

According to this page, rEFInd is also capable of loading drivers. The page also links to various drivers of interest.

Update:

Okay, I managed to find a way that made rEFInd discover a NVMe drive on my old PC:

  1. Get rEFInd (which version depends on how you plan to install it), install it on a UEFI-bootable drive of choice
  2. Get the Clover ISO, from there copy EFI\CLOVER\drivers-Off\drivers64UEFI\NvmExpressDxe-64.efi to rEFInd’s drivers_x64 folder, rename it to NvmExpressDxe-x64.efi.
  3. Start booting using rEFInd!

Getting Windows installed may be challenging if it decides that your NVMe driver is not bootable, but other than that it should be straightforward. rEFInd should work without additional configuration. You might want to disable/shorten the timeout though.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .