Booting From NVMe on Unsupported UEFI Bios, without modifying UEFI
Introduction
As some may have experienced, older motherboards without NVMe support lack the ability to boot from modern and fast NVMe SSD drives. While in most cases these drives work just fine once the OS has booted, the problem is not being able booting from it and achieve faster performance, without having to resort to customizing the UEFI Bios and risk bricking the motherboard.
Presenting another option that is a safer alternative to re-flashing a custom UEFI BIOS that adds in NVMe support to be able to boot from a modern NVMe drive on otherwise unsupported hardware.
it actually works
I confirmed that the modified Bootloader rEFInd with an EFI NVMe driver added from CloverBootloader actually works and enables NVMe booting via an usb drive or other persistently connected device that is set to boot first.
How I did it
-
Download the latest https://sourceforge.net/projects/refind/files/ use the
files
tab link. -
Download the latest refind-flashdrive.zip from SOURCEFORGE
-
After extracting the zip file, locate the
refind-flashdrive-x.x.x.img
-
Insert a blank or flash drive since otherwise it’s going to be over written next.
-
Make a bootable USB drive by copying
refind-flashdrive-x.x.x.img
to the USB drive use something like balenaEtcher or similar on your favorite operating system. -
Mount the volume you just created, since it’s only an EFI partition it may not auto mount, so you will probably need to open the Disks program or similar, do not remove the drive.
-
Next you will need to switch to root write the file needed later. I used the “Open as Root” option in my Nemo - File Manager
-
Download the latest CloverBootloader.zip from GitHub
-
Extract / unzip the CloverBootloader.
-
Open the CloverV2 directory.
-
Locate the NVMe driver EFI file This should be located at a path like the following, I found it here in the
CloverV2-5163.zip
:CloverV2/EFI/CLOVER/drivers/off/UEFI/Other
I found the file
NvmExpressDxe.efi
which is what I needed to get NVMe support / booting working. -
Next copy NvmExpressDxe.efi to the mounted rEFInd flash drive, opened as root user to the following location.
...REFIND/EFI/boot/drivers_x64/NvmExpressDxe.efi
-
Unmount the rEFInd drive.
-
Power off and remove the USB flash drive.
-
Test booting your PC with it, update the boot order to boot from the rEFInd USB drive first.
-
Then all the NVMe drives that you tried to set up and install and use for booting should show up for boot selection and allow successful booting.
Conclusion
This was pretty easy and low risk compared to the possibility of bricking your PC should the custom UEFI update go wrong or be rejected by the motherboard. This solution is simple elegant and only has a few minor downsides.
Slightly longer boot up time as you wait for the USB and for eEFInd to count down to boot, not a problem for me since I rarely shut down my computers.
USB drive must stay in a port on the PC all the time.
Original Source Files
Also for the records here are all the files I used to create this, and I will provide an image backup of what is on the drive for others to reuse and as a backup.
rEFInd flashdrive 0.14.2 - ZIP sha256 checksum 85d4770940c6bf18c5e1b6326dfdf8fea2bb2726819de7249c48093e1532961f
CloverV2-5163 - ZIP sha256 checksum ce94acc2a03ef1f5b1d5ff0ea427cd5146dcb180dc39ca8471003558fc5d4589
rEFInd 0.14.2 With NVMe Booting EFI driver from CloverV2-5163 added - IMG sha256 checksum bfacb5608fc5f5d74c5f240ca8b0df57c877ec92d821b5490933f00ac5602c7b
References
The rEFInd Boot Manager: Getting rEFInd
uefi - How do I boot from an NVMe disk without bios support? - Unix & Linux Stack Exchange