If 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
/dev/sd?
, where ?
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.