efibootmgr is creating an entry like you describe (
VenHw(99E275E7-75AO-4B37)), then that sounds like a bug in either
efibootmgr or the firmware. That said, consider the
efibootmgr command you specified:
efibootmgr -c -d /dev/nvme0n1 -p 1 -l /EFI/refind/refind_x64.efi -L "rEFInd"
There are two things that are unusual about this:
- Disk device -- Most disk devices in Linux have names of the form
? is a letter from
a up. Some devices, such as some SSD cards, have filenames that take other forms, like
/dev/mmcblk0 (that's from memory and might not be quite right). I don't recall ever seeing a device name like
/dev/nvme0n1. That's not to say it's wrong, but at the very least it's unusual, and you should double-check it. I'd be especially careful to not include the partition number -- that's what the
-p option to
efibootmgr is for.
- File specification -- Older versions of
efibootmgr require that files be specified using EFI syntax -- that is, with backslashes (
\) rather than slashes (
/) separating directory entries. Because Linux shells generally treat backslashes uniquely, this also requires either quoting the entire pathname or doubling up on the backslashes, so you'd specify
-l \\EFI\\refind\\refind_x64.efi or
-l "\EFI\refind\refind_x64.efi. I've heard that the most recent versions of
efibootmgr will accept a more traditional Unix/Linux form and "translate" internally, but I don't know precisely when that feature was added, and you haven't said what version of Ubuntu you're using. Thus, I recommend you use doubled-up or quoted backslashes rather than slashes.
As a practical matter, of course, if you've got a working entry via
bcfg, there should be no need to do anything else with
efibootmgr. I assume you're asking because it should work and because you want to be able to perform this type of maintenance from Ubuntu.