efi partition fubared (not nuked). Grub couldn't help.

It isnt fragile.
You told ubuntus grub to take over.
Manjaro expects the microcode to be loaded early - which our grub does, and ubuntus does not.

is there an efi file lying around so that I can manually fix it?

There are about a half dozen ways to go about this.

It seems like yours is just likely a situation of getting into manjaro and running update-grub ...

But you can look around the forums. Some are here:

5 Likes

Nice solution, but it isn't obvious which one of the many solutions you actually used.
This is important for future readers.
Please provide more info on your solution, in order to contribute to this very nice forum. :slight_smile:

Looks like I'll be making a grub rescue disk and tape it to my laptop or something. Just to be clear: I can't make a grub disk with ubuntu and I need to grab my manjaro install disk to make a grub boot disk. I guess I could do this.
As an aside, I wondering if my physically reattached SSD didn't get another UUID assigned to it. Then it may be a case of replacing the UUID in the boot config to restore things as they were.

EDIT
scratch that idea. The UUID is still the same

There is a topic (among the many in the "solution post") that has instructions on how to boot manually even through Ubuntu grub, using Grub command line.

Why? Bootable Manjaro ISO burned to a USB stick is all you need.

Boot into a Manjaro live environment.

Mount your root partition and manjaro-chroot into it.

From within chroot mount your efi partition.

Check the contents of your efi partition are all still there, either in /boot or /boot/efi, depending on your partitioning scheme.

Now update-grub form within chroot, umount efi, exit chroot, umount root partition, reboot.

If the contents of your efi partition are gone then you'll have to grub-install again ... there are many threads on that, including listed above by @cscs.

Basically the same process as above, just grub-install before update-grub.

Check your EFI boot order in BIOS settings and make sure Manjaro bootloader is first.+

There are several ways to boot back into Manjaro.
The 2 easiest are the one that petsam provided 2 posts above and the other is to use your Ubuntu grub.

At Ubuntu grub menu, at the Manjaro entry, edit it (press 'e') and modify the initrd line (last line) such that

from

linux	/boot/vmlinuz-4.20-x86_64 root=UUID=2b259af0-f5c5-4b3d-a2f6-19f1d83ee208 rw  quiet
initrd	/boot/intel-ucode.img 

to

linux	/boot/vmlinuz-4.20-x86_64 root=UUID=2b259af0-f5c5-4b3d-a2f6-19f1d83ee208 rw  quiet
initrd	 /boot/initramfs-4.20-x86_64.img

Use the corresponding kernels, meaning if linux line is 4.19-X86_64, use initramfs-4.19-x86_64.img in the initrd line.

After booting up, , you must do (as per link in petsam's post)......

sudo grub-install
sudo cp /boot/grub/x86_64-efi/core.efi /boot/efi/EFI/boot/bootx64.efi
sudo efibootmgr -c -d /dev/sda -p 1 -L "manjaro" -l "\EFI\Manjaro\grubx64.efi"

Watch out for last command above: use the correct device and partition as elaborated in the stated link. Verify with one of the many commands (lsblk -f, parted -l, blkid, ...) to verify device and partition.

ps: why can't you make a grub disk from Ubuntu?
You can use any grub2 OS using this.

ps: if you remove a disk any efibootentry there will be lost when/if you reboot without that disk, regardless of the OS there. meaning, ubuntu entry will also be lost if you remove ubuntu's disk containing its $esp. nothing special about manjaro. If you have a disk that is frequently/occasionally removed containing $esp, you must include "--removable" in the grub-install command.

ps: why is manjaro's grub so fragile?
why ubuntu's grub cannot boot manjaro?
manjaro's grub is not fragile, it is manjaro's kernels that is inadequate.
ubuntu's grub is not deficient, it is manjaro's kernels that is inadequate.
no further explanations will be made by me
others can do, if they wish.

3 Likes

One other simple way which I did not mention is to boot into ubuntu, and at terminal check if 'efibootmgr' gives a manjaro entry. Then activate this by

sudo efibootmgr -a -B xxxx

Followed by

sudo efibootmgr -o xxxx,yyyy

to make it default priority.

2 Likes

I did a md5sum on all of my grubx64.efi's, and none match core.efi. Google doesn't find helpful info.

The easiest fix I did was create an EFI partition (you can do this with GParted, or from within Manjaro Architect), use Manjaro Architect to mount /boot/EFI, and within Manjaro Architect, there is a boot manager restore option in the system rescue section or something.

What are you talking about here? :face_with_raised_eyebrow:

You misread, I think. Not all systems need that thing and you should worry if you used this method on your systems, but.. for the correct file.

core.efi

I still don't know what you're talking about.
Do "sudo grub-install --debug --recheck"
Check out the last few lines..
.
.
Here....

[pop@Dec ~]$ sudo grub-install --debug --recheck
.
.
.
.
grub-install: info: writing 0x21000 bytes.
grub-install: info: copying `/boot/grub/x86_64-efi/core.efi' -> `/boot/efi/EFI/manjaro/grubx64.efi'.
grub-install: info: Registering with EFI: distributor = `manjaro', path = `\EFI\manjaro\grubx64.efi', ESP at hostdisk//dev/sda,gpt1.
grub-install: info: executing efibootmgr --version </dev/null >/dev/null.
grub-install: info: executing modprobe -q efivarfs.
grub-install: info: executing efibootmgr -b 0000 -B.
BootNext: 0002

See this?
grub-install: info: copying /boot/grub/x86_64-efi/core.efi' ->/boot/efi/EFI/manjaro/grubx64.efi'.

What do you mean it does not match?
grubx64.efi is core.efi

[EDIT]
Oh, that reminds me. OP can also boot manjaro from Ubuntu's grub by multibooting manjaro's core.efi. So many ways.

2 Likes

I was referring to the above statement. It appears that core.efi is a direct replacement to bootx64.efi.

None are replacements. core.efi is the grand-daddy. bootx64.efi and grubx64.efi are spawn/copies of it.

core.efi is in OS partition, not in $esp.
We need a file in $esp for uefi to generate a efibootentry. Hence grubx64.efi.
Some uefi defaults to boot bootx64.efi or if there is any problem with other efi files, use this. So I included this command to make sure we can always boot manjaro. Hence bootx64.efi.
Check with 'efibootmgr'. There is always a hard drive entry. That entry is bootx64.efi
Hope this explains.

1 Like

So what I ended up doing was booting with my live disk and choosing the option at the bottom that detects efi bootloaders. I managed to choose the correct one and booted into my Manjaro installation. Once into Manjaro, I reinstalled and updated grub in the usual way. There were some really cool comments in this thread and I'll bookmark them. Thanks for all the replies, guys/girls.

That was overkill. I knew that my efi partition was intact

If there spawn copies then how come md5sum don't match?

They are copied files and have different filenames.
Hash will not change but filename portion of the output of md5sum will change, though I'm not too familiar with md5sum details.

1 Like