1

I have a system which I want to boot from an NVMe disk (via a PCIe riser). The system is UEFI capable, I can boot from a USB disk and install the OS (TrueNAS Scale) to the NVMe disk, and the OS shows up in the UEFI boot options. However when attempting to boot from that UEFI option, it fails to do so (just drops me into the bios screen).

This appears to be due to the BIOS not supporting booting from NVMe disks. This would somewhat make sense since I used a PCIe riser to add the NVMe disk.

When I google the subject, there are many references to rEFInd and "DUET". However I can't find any information on this "DUET". The links I can find all point to a dead repo.

How can I get the system to boot from NVMe?

1 Answer 1

0

I was able to get this working using vanilla rEFInd, and providing it with a driver for NVMe. I installed to a USB device, as this was a non-intrusive option that would be transparent to the system. Since TrueNAS is managing the boot disk, I don't want to interfere with it.
rEFInd will boot from the USB, and then chain load grub from the NVMe disk.

rEFInd does provide an ISO you can write to a USB device, but the filesystem contains very little free space, and the fatresize tool was unable to resize it (claims it's a FAT12 filesystem). So you have to use the installer tool.

  1. Download rEFInd, the "binary zip file" option.
  2. Use gdisk (or other partition tool) to partition the USB device, setting the partition type to EF00.
  3. I formatted with mkfs.vfat, though I'm not sure this step is required.
  4. Run refind-install --usedefault /dev/name_of_usb_partition. (e.g. /dev/sdz1)
  5. Mount the USB device.
  6. Run mkdir /path_to_usb/EFI/BOOT/drivers_x64
  7. Download Clover. (I chose this driver as the rEFInd author specifically mentions it working)
  8. Copy efi/clover/drivers/off/nvmexpressdxe.efi from Clover to /path_to_usb/EFI/BOOT/drivers_x64/.
  9. Unmount everything.

That's it. rEFInd will automatically use the driver, then scan for available boot options, and automatically boot after 20 seconds. You can follow the rEFInd documentation to configure the behavior.

1
  • NVME Express suggests the UEFI driver from the EDK2 project which provides no binaries (link to GitHub instead of SF). The Clover project imported that source code in its repository some time ago and provides binaries. Commented Jan 9 at 15:56

You must log in to answer this question.

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