Booting from an NVME SSD on an older PC using rEFInd

Back in October when I set up my new Ryzen PC, I thought it might be good to get an NVME SSD for the older desktop as well – I’d pinched all the drives from it for the new PC, and I didn’t want to be stuck using my old, slow HDD. NVME SSDs were quite cheap at the time, so I got myself a second hand 500GB Samsung OEM one commonly found in laptops.

However, there was a problem. The old PC (an Alienware X51 R2) didn’t have a M.2 slot to accommodate an NVME drive, which is common on systems of that age (circa late 2013). Fortunately, there is a way to get these super-fast storage devices working on older desktop PCs (unfortunately this won’t work on laptops).

This will work for booting both Windows and Linux, on systems with either BIOS or EFI/UEFI firmware.

M.2 and PCI Express

So first I should point out that some M.2 drives actually use SATA, but I wasn’t interested in those as I could just connect a SATA SSD. I was really interested in the PCI Express/PCIe drives. Fortunately, any recent desktop will use PCIe for the graphics card, and my old PC was no exception. If you’re using a standard ATX motherboard, you may well have multiple PCIe slots, but in my case I had to ditch the graphics card, which was an acceptable compromise for me because I wasn’t using it anyway.

In order to connect an M.2 drive to a PCIe slot, there are various adaptors available. In the end, I went for this one because it was cheap and it looked like I could boot from it – some other adaptors have caused problems with this.

Installing the adaptor

Installing the adaptor is usually pretty easy. I don’t have detailed steps for your system, but I can show you how it worked on mine. The process varies depending on your case, but it’s usually as simple as taking the side panel off your case, removing a blanking plate, and then inserting and screwing the card in. Note that you’ll need to insert your NVME SSD into the card first.

Unscrewing the side-panel screw
Unscrewing the side-panel screw
The inside of the case
The inside of the case
The adaptor card inserted into my GPU cage
The adaptor card inserted into my GPU cage. Yes, it looks a bit ridiculous XD
The access lights on the back of the PC
The access lights on the back of the PC with the card installed

Booting from the NVME SSD

If you want to boot from the drive, you’ll probably now encounter another problem: when you power on, your system won’t “see” the drive as a boot device.

There are a number of solutions to this problem, but the safest one (and the one I chose), is to install Refind to a USB stick, and have the PC use that as a boot menu. With the right driver, Refind can then detect your new SSD and boot from it. This sounds a bit complicated, but it’s easy to set up. You also only need a small USB stick – an old 512 MB or 1 GB stick will be just fine.

EDIT: You can download an image I made to then write to your USB stick with no further steps from https://www.hamishmb.com/files/Downloads/misc/Refind.img.7z. You may need 7-zip on Windows to extract this.

Refind can be downloaded from http://www.rodsbooks.com/refind/getting.html. You want the “USB flash drive image” option, which you can then write to the disk using a tool like GNOME Disks (Linux), Rufus (Windows), or Etcher (all OSes).

Once written to your USB stick, you’re almost done but first you need to download the NVME driver. You can search for “NvmExpressDxe.efi”, or you can download this one that I used, and have tested to work.

Once you’ve got your driver, navigate to your USB drive and place it in

EFI -> CLOVER -> drivers -> BIOS

and

EFI -> CLOVER -> drivers -> UEFI

Now you can safely eject your USB stick and boot the new machine from it. You may need to select the USB stick as a boot device in the firmware setup, or it may just boot from it automatically. You’ll be presented with a boot menu, and you should now install your operating system. Your installation media will appear in Refinds’s boot menu.

Installing the OS

This varies depending on your setup, whether you’re installing Linux or Windows, or whether you’re cloning an existing disk. As such, I won’t really cover this here, but as long as you start the installation media from Refind (especially if you’re installing Windows), it should all work as usual. Once installed, your OS will appear in Refind’s boot menu, where you can boot it.

Summary

This has been a slightly longer post, but I hope it is useful. The steps involved can take a while, but they are quite simple to follow. As always, if you need me to clarify anything, let me know in the comments.

That’s it for now, but stay tuned!

Tagged , , , . Bookmark the permalink.

About Hamish McIntyre-Bhatty

I'm currently studying for a Computing and IT degree with the Open University, and am a software developer as well. I enjoy coding in Python, C++ (still learning), and Java. Having written 4 open-source programs (hosted on launchpad.net), set up my own website, and started volunteering at Wimborne Model Town to work on their river control system, I still find the time to enjoy cycling, acting, photography, and playing bass guitar. I go climbing every now and then as well. More recently, I wrote my first commercial program, Disk Verifier, and created a PSID Unlocker GUI for Parted Magic. I also create tutorial and other informative videos for Parted Magic LLC.

10 Responses to Booting from an NVME SSD on an older PC using rEFInd

  1. mark says:

    Hey Hamish,
    Thanks for the wonderful guide. I am currently stuck on the step of adding the .efi driver to the USB. Once I use Rufus to install the image of refind on my USB my windows 10 no longer recognizes the USB stick.

    I mounted the USB stick with MiniTool but it says I don’t have permission so I go to try and find the security tab but its missing.

    It seems like the refind image is corrupt but I double-check the download it seems fine. Do you have any guidance on how I could add the NVMe driver to the refind image?

    Thanks again,
    Mark

    • Hi Mark,

      I just tried this myself in Windows and I had the same issue. If I plug the USB stick into a Linux machine I can then access the files and folders inside, but Windows seems to try to prevent this.

      I think this can be resolved by either using the Windows Command Prompt, or using a Linux live disk. Are you comfortable with either of these options? If it comes to it, I could just upload an image of my USB stick that has the driver pre-installed.

  2. Mark says:

    Thanks for such a quick response! I have a basic understanding of Linux terminal. If you have an image of your USB stick that you can upload that would be amazing for me and it might also help other people that follow your guide in the future.

  3. Mark says:

    Thanks! I really appreciate all your help. This is perfect.

  4. Jon S says:

    Hello, Hamish;
    Great article, I like it, thanks, pal!
    Only 1 prob, I can’t find that “SupaGeek” adapter.
    Any ideas where I can find one?
    I’ll have to get it online because of where I live.
    Any advice greatly appreciated.

    • There’s an Amazon link in the blog post for it, but I imagine you can probably also buy it from other suppliers like Newegg.

      If you can’t get that particular adaptor where you live, there’s a good chance others will work too. Note that some people have had issues with Marvell ones I think, but that was a while back so they might all work fine now.

      Hope this helps.

  5. Michael says:

    Hi- the title and contents of this post suggest that you are using rEFInd, yet the file paths you give are for the Clover bootloader, and the .img file seems to only contain Clover bootloader-related files. Am I crazy, or does this not have anything to do with rEFInd?

  6. I think it’s worth bearing in mind that this is kind of old now. I downloaded from there, and this is what I got when I did, but the interface is different now. Either way, the method seems almost exactly the same for rEFInd

Leave a Reply

Your email address will not be published. Required fields are marked *