4

I have a computer about ten years old, and I would like to install a PCIe M.2 NVMe SSD in it. Unfortunately, the BIOS cannot boot from the SSD, because it doesn't know how to boot from a PCIe SSD. This means that I must use SATA instead of PCIe, which means giving up the speed benefits PCIe would offer. I've been trying to find a way which would allow me to boot into Windows 10 (on the PCIe SSD) and here's what I'm thinking:

  • I use a separate SATA SSD and install Linux on it - the BIOS can boot from that.
  • I dd my current Windows 10 installation (presently on a regular HDD) to the NVMe SSD, using the Linux install (should work, right?)
  • I set up the GRUB bootloader to allow me to boot either into Linux or the Windows 10 installation on the NVMe SSD. If GRUB knows how to setup the PCIe SSD, it should be able to bootstrap Windows 10 - right?

Does this have a chance of working?

Thanks!

merendo07
  • 41
  • 1
  • 3
  • Grub only boots working Windows. so when Windows turns fast startup on or needs chkdsk, you have to directly boot Windows from MBR if BIOS or UEFI if UEFI system. What motherboard. NVMe needs PCIe, and 10 year old system will not have latest/fastest PCie interface. You may not get much better speed than SATA anyway. My 2016 build was M.2 SATA, but recently wanted larger drive and changed to NVMe. Somewhat faster, but not huge as system is from 2016. All parts of system need to be updated together. And I am finding the PBKBAC to be slowest part of system & getting slower. :) – oldfred Jan 01 '22 at 16:48
  • The mainboard is an ASUS P7P55D, with PCIe 2.0, so not up to date anymore. But still, with four lanes, up to 2GByte/s throughput would be possible. With SATA, only up to 3GBit/s (~350MByte/s) are possible. – merendo07 Jan 01 '22 at 18:35

2 Answers2

2

As far as I know, there is currently no way to boot Windows from a PCIe device on a motherboard that doesn't natively support it using GRUB. That's how I ended up here.

However, you can do it using Clover EFI bootloader, which was made for booting Windows on Macs.

The idea is to boot to Clover on USB, which will load a driver that allows you to boot Windows from you PCIe NVMe SSD.

here's a guide for installing Clover on USB.

Once you have it installed, you'll need to move NvmExpressDxe.efi from EFI/CLOVER/drivers/off to EFI/CLOVER/drivers/BIOS and EFI/CLOVER/drivers/UEFI.

From there, it should be as simple as booting to the USB.

  • You said "no way to boot Windows"; How about Linux? Not dual booting. I want to install only one OS, Linux (Arch-based) on an NVME disk on a PCIe adapter on an old computer that cannot boot from NVME. It can, however, boot from USB, so I could use an old small USB thumb drive that I have to install a bootloader. Can I do that using GRUB instead of Clover, as GRUB is the default one. – Damn Vegetables Feb 02 '23 at 04:51
  • The BIOS isn't able to boot directly to PCIe, but yes, if you have a bootloader installed on a USB or other drive, that can boot an OS that's on PCIe. As far as I know most linux installers allow you to put the bootloader in a separate location to everything else when choosing install location. – Nathaniel Jackson Feb 03 '23 at 05:06
0

Been struggling with the same issue. Clonevilla device to device from my daily Manjaro SSD to a same size nvme. Removed my daily Manjaro SSD and installed a small SSD which I installed a minimum Manjaro. Did a update-grub but cannot get to any of the distos installed on the nvme. Grub can't find the uuid which is the uuid of the volume I'm trying to boot Back to the drawing board and did a raw metal install of a single distro to the nvme and set up virtualbox client an lo and behold vbox can get to the raw metal install on the nvme and boot it. ( I use raw metal VMDK vbox access to the raw client) My motherboard is gigabyte ga-990fxa-ud3, an older MB that gigabyte support says won't boot to nvme.

  • This does not really answer the question. If you have a different question, you can ask it by clicking [Ask Question](https://unix.stackexchange.com/questions/ask). To get notified when this question gets new answers, you can [follow this question](https://meta.stackexchange.com/q/345661). Once you have enough [reputation](https://unix.stackexchange.com/help/whats-reputation), you can also [add a bounty](https://unix.stackexchange.com/help/privileges/set-bounties) to draw more attention to this question. - [From Review](/review/late-answers/445531) – Toby Speight May 23 '23 at 13:57