1

Hello I have a big problem because you see when I use efibootmgrto create a boot entry it just makes a unbootable japanese character in the EFI boot menu and this is very bad.

On the other hand when I use bcfg in the EFI shell it works just fine. The efibootmgr command used is : efibootmgr -c -d /dev/nvme0n1 -p 1 -l /EFI/refind/refind_x64.efi -L "rEFInd" whereas the bcfg one is : bcfg boot add 3 fs0:\EFI\refind\refind_x64.efi "rEFInd"

When I do bcfg boot dump -v the difference between the efibootmgr and bcfg entries is the following :

The DevPath for the bcfg made entry is PciRoot(0x0)/Pci.....\EFI\refind\refind_x64.efi whereas for the efiboomgr made entry is just says VenHw(99E275E7-75AO-4B37)

Do you have an idea on how to get efibootmgr to work ? Or alternatively what option in the command call I need to use in order to specify kernel paramaters with bcfg ?

0

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.

  • thanks for your answer, the nvme0n1 comes from the brand new 950 Pro that inserts into a Ultra M2 slot on the motherboard, I'm using /dev/nvme0n1p6 in the refind.conf and it's working fine. The problem with bcfg is that I want to boot directly onto vmlinuz (instead of refind) but I don't know how to pass the kernel parameters. – ChiseledAbs Feb 4 '16 at 23:03
  • refind.conf does not take Linux device identifiers such as /dev/nvme0n1p6, so if you've used that identifier in refind.conf, it's not doing what you think it's doing. Chances are it's just not doing anything. If you can post the exact line on which you've used it (or the entire manual boot stanza, if it's in one of them), I could say more. (Please edit your original question and then add a comment here so I'll notice; do not put the refind.conf entries in a comment, since they'll be mangled.) – Rod Smith Feb 5 '16 at 0:37
-1

You need to edit the refind.conf file and change the path back to PciRoot. Write down the entire description of the device, so you can enter it in the conf file. Just make sure to pick the correct PciRoot ;)

  • You lost me, it's efibootmgr that creates the entry to the EFI boot menu. refind.conf only comes in to play once refind is already booted. Anyway there is no reference to PciRoot in refind.conf, I use /dev/sda to specify the root partition. – ChiseledAbs Feb 4 '16 at 12:35
  • refind should be loading first before any other boot managers. The conf file contains which bootloaders to choose from and there associated device ID. You could edit your actual EFI boot menu, but that doesn't seem like a wise idea when changing refind solves the problem.. Make sure refind loads first in the boot order, and change the conf file to associated ubuntu with the correct PciRoot. Then it will load the correct one regardless of the machines EUFI boot specifications here. You need to replace the incorrect loader with PciRoot from /dev/sda. – Kali Feb 4 '16 at 12:48
  • Also, take out the -d and try it. I saw another post and it worked for that guy with a similar problem. askubuntu.com/questions/383166/… – Kali Feb 4 '16 at 12:54
  • it is not a refind problem, it's an efibootmgr problem. refind boots fine when I create the EFI entry with bcfg but just creates an unboobtable japanese character when I make the entry with efibootmgr – ChiseledAbs Feb 4 '16 at 12:59
  • Did you install refind via windows or linux? – Kali Feb 4 '16 at 13:15

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.