Users should be advised to update the removable GRUB as well, if present in the system

Some backstory to this:

While the forums were down, I realised something relating to GRUB.
I don’t know if this is supposed to happen, but I had both the Manjaro bootloader in /boot/efi/EFI/manjaro/grubx64.efi and a removable /boot/efi/EFI/boot/bootx64.efi one. My system was installed in early June with Lysia 20.0.1 ISO, using Calamares.

This became relevant after I updated my motherboard’s BIOS to its latest version. After the update, all my attempts to boot up the system ended up in grub rescue with an error: symbol 'grub_calloc' not found.
Note that I had updated the GRUB as instructed in the old forums and the wiki after the GRUB package was patched for BootHole.

Time to fire up the live environment.
I found this thread from a user suffering from the same error, and followed their instructions of replacing the bootx64.efi with the grubx64.efi and renaming it. This made my system bootable again.

But I thought that this was a half-measure, and wanted to fix this “properly”.

So I removed the contents under /boot/efi/EFI and installed GRUB again with sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=manjaro --recheck
I went to check the results, and panicked a bit when I noticed that /boot/efi/EFI/boot/ didn’t exist after the install. But I recalled reading somewhere that you could install with a --removable argument, and gave it a try. And /boot/efi/EFI/BOOT/BOOTX64.EFI was created, though now with capitalisation. And the system was booting up normally again! I have never used --removable in the past.


So I’d suggest that since Calamares (which many noobs like me are going to use) wants to install both bootloaders, guides should mention that both are best kept up-to-date. You’ll never know when a motherboard vendor decides to change things up, so that you can no longer boot the system from /boot/efi/EFI/manjaro/grubx64.efi, but it’s using (or trying to, and failing in my case) the horribly outdated one.


Edit: I have MSi B450M Mortar MAX motherboard, so this might apply to other MSi motherboards with the same chipset as well.

5 Likes

Good tip, had the same problem, i changed my bios to boot EFI/manajro/grubx64.efi, that also worked.
I installed grub new with the -removable option and my EFI/boot/bootx64.efi works now too, that is displayed in bios as “UEFI OS”.
Btw. if you overwrite the existing capitalisation remains as it was.

I figured. It works as it is now, so I’m too lazy to go “fix” it :smiley:

no need for --removal
just copy /boot/efi/EFI/manjaro/grubx64.efi
to /boot/efi/EFI/boot/bootx64.efi

not forget to check entry boot UEFI
sudo efibootmgr -v
is ok

1 Like

Though just updating both, since they seems to be present when Manjaro is installed with Calamares, should be faster, and more straightforward.

Point of having both up-to-date is to be save from your motherboard deciding not to use the previous bootloader after a BIOS update. I have no idea why this came to be, but that’s what happened to me.

My current output for the command is
BootCurrent: 0003
Timeout: 1 seconds
BootOrder: 0003,0000,0007
Boot0000* manjaro HD(1,GPT,834ba657-3e91-7845-a25b-955a53b09531,0x800,0x100000)/File(\EFI\MANJARO\GRUBX64.EFI)
Boot0003* UEFI OS HD(1,GPT,834ba657-3e91-7845-a25b-955a53b09531,0x800,0x100000)/File(\EFI\BOOT\BOOTX64.EFI)…BO
Boot0007 Hard Drive BBS(HD,0x0)/VenHw(5ce8128b-2cec-40f0-8372-80640e3dc858,0200)…GO…NO…S.a.m.s.u.n.g. .S.S.D. .8.6.0. .E.V.O. .5.0.0.G.B…,.@.r.d.=.X…A…>…Gd-.;.A…MQ…L.4.S.B.X.F.N.N.0.7.1.4.6.2.6. .V. . . . …BO