GRUB break by Ubuntu Mate 16.04 ('vmlinuz not available')

After installing a dual boot (Ubuntu mate 16.04.3 + OpenSuse Leap 42.3) last year, I had the bad :sarcastic: idea today to do a ‘sudo apt update && sudo apt upgrade’, which updated a GRUB thing, and overwrite the current boot.

Now Ubuntu Mate become my first boot choice, and Leap 42.3 was move the 4rd place and can’t start :O, the error message (translated from french) is :

error : file “/boot/vmlinuz-4.4.103-36-default” not available.
error : the kernel must first be loaded.
Press a key to continue…

Is there a way to fix this without I have to reinstall Leap 42.3 ? (I already did last year).

UEFI booting, or Legacy MBR booting?

You should not need to reinstall. But how to repair depends on how you boot.

For UEFI booting, you should be able to use “efibootmgr” to set the boot order. Or maybe you can do that in your BIOS.

For Legacy booting, one way (not the only way) is to use the supergrub disk to boot into openSUSE. And, once you are booted into openSUSE, run Yast bootloader to update the boot loader (change something such as the delay time, to force a reinstall).

Thank you Nricket, My laptop is in Legacy (MBR) boot mode (BIOS: “Boot mode : [Legacy Support]”). I will look at https://www.supergrubdisk.org/

If someone knows how to avoid this issue (or why it can not be avoided), I am interrested.

After trying all the menus of SuperGrub2 v2.02s9, the only other error message I can get is “Sorry, but we are booted via UEFI and can not …” :
But UEFI is off in my BIOS (Legacy is enabled). Any other idea ?

At this stage, it is hard to make suggestions without being able to examine the machine and see how it is setup.

Just boot manually. Upstream grub2 (which Ubuntu follows) always accesses btrfs from the “top”, while SUSE grub2 has patches to respect default subvolume. What SUSE grub2 sees as /boot is most likely /@/.snapshots/1/snapshot/boot (could be different if you ever used snapper to revert). If you are using legacy BIOS you could load openSUSE grub2 using

multiboot /@/boot/grub2/i386-pc/core.img
boot

in GRUB CLI. When openSUSE is booted, just reinstall bootloader.