Fixing Grub Emergency Shell after startup

Hi guys,

I can't get my Grub bootup fixed and keep landing in emergency shell of grub (not the grub rescue). And after manual boot even update-grub2 or grub-mkconfig doesn't help.

I summarize the error cause:
I use a LVM Multi boot system with UEFI, without Windows, no disk encryption, no secure boot, no (super) fast boot, and i installed Zorin17 /boot (you need separated /boot partition with LVM) on my last open partition with a size of 384 MB - what's too small for the new kernel update to 6.5.0-14 and cause a failure.
So i backup the Zorin17-boot and my manjaro-boot, than i format my Manjaro /boot partition and copy all /boot-Zorin files to the old (formated) 512MB /boot.
Afterwards i change the UUID in my /etc/fstab /boot mountpoint to the new one.
Than i format the old (too small) Zorin-boot and replaced it with the Manjaro boot files and edit Manjaros fstab.
Than i check the mountpoint and go for a second update after the failed with sudo apt -y autoremove && sudo apt update && sudo apt -y full-upgrade with no Errors this time.

Now i reboot (and yes i don't change grub.cfg or update them manually). I land in a emergency shell of grub.
I use this commands to leave them:

set root=(hd0,gpt5) 
linux /vmlinuz root=/dev/mapper/vglinux-zorin17
initrd /initrd.img
boot

Cause LVM and separate /boot there is the /boot as root and not /boot/vmlinuz etc. Vglinux is name of the VG and zorin17 of the LVM.

After im back in Zorin i go for sudo update-grub2 and reboot and again the grub-rescue greets me. Efibootmgr show me 1x Bootoption other than Harddrive or CD "Ubuntu" and as reminder before i had ubu-budgie as bootloader (Manjaro had no bootloader installed and evrything got startet from ubu bootloader) With Zorin17 i opt for the Zorin bootloader and i disable the Grub menue timer, so i don't show up (that work before) but cause no fast boot i can enter BIOS.

Can you help me please guys? I don't wonna mess with no real plan.
My grub.cfg is below (after grub2-update with the correct UUID at least under Zorin menue entry for the /boot). And i only change manually to the symbolic links.

Grub.cfg without multi-boot entry or sub-menues (cause length)

DO NOT EDIT THIS FILE

It is automatically generated by grub-mkconfig using templates

from /etc/grub.d and settings from /etc/default/grub

BEGIN /etc/grub.d/00_header

if [ -s $prefix/grubenv ]; then
set have_grubenv=true
load_env
fi
if [ "${initrdfail}" = 2 ]; then
set initrdfail=
elif [ "${initrdfail}" = 1 ]; then
set next_entry="${prev_entry}"
set prev_entry=
save_env prev_entry
if [ "${next_entry}" ]; then
set initrdfail=2
fi
fi
if [ "${next_entry}" ] ; then
set default="${next_entry}"
set next_entry=
save_env next_entry
set boot_once=true
else
set default="0"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
else
menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi

function savedefault {
if [ -z "${boot_once}" ]; then
saved_entry="${chosen}"
save_env saved_entry
fi
}
function initrdfail {
if [ -n "${have_grubenv}" ]; then if [ -n "${partuuid}" ]; then
if [ -z "${initrdfail}" ]; then
set initrdfail=1
if [ -n "${boot_once}" ]; then
set prev_entry="${default}"
save_env prev_entry
fi
fi
save_env initrdfail
fi; fi
}
function recordfail {
set recordfail=1
if [ -n "${have_grubenv}" ]; then if [ -z "${boot_once}" ]; then save_env recordfail; fi; fi
}
function load_video {
if [ x$feature_all_video_module = xy ]; then
insmod all_video
else
insmod efi_gop
insmod efi_uga
insmod ieee1275_fb
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
fi
}

if [ x$feature_default_font_path = xy ] ; then
font=unicode
else
insmod part_gpt
insmod lvm
insmod ext2
set root='lvmid/BP64BN-bNs3-euGM-NeaD-3Xm3-HSUj-hKysrR/ALHVs8-RTM1-bQpy-xw8r-hl4U-xhqc-ck6Z5n'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='lvmid/BP64BN-bNs3-euGM-NeaD-3Xm3-HSUj-hKysrR/ALHVs8-RTM1-bQpy-xw8r-hl4U-xhqc-ck6Z5n' f398aac2-99d1-4fcd-8b82-74a8cd1ce68d
else
search --no-floppy --fs-uuid --set=root f398aac2-99d1-4fcd-8b82-74a8cd1ce68d
fi
font="/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
set gfxmode=auto
load_video
insmod gfxterm
set locale_dir=$prefix/locale
set lang=de_DE
insmod gettext
fi
terminal_output gfxterm
insmod part_gpt
insmod lvm
insmod ext2
set root='lvmid/BP64BN-bNs3-euGM-NeaD-3Xm3-HSUj-hKysrR/ALHVs8-RTM1-bQpy-xw8r-hl4U-xhqc-ck6Z5n'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='lvmid/BP64BN-bNs3-euGM-NeaD-3Xm3-HSUj-hKysrR/ALHVs8-RTM1-bQpy-xw8r-hl4U-xhqc-ck6Z5n' f398aac2-99d1-4fcd-8b82-74a8cd1ce68d
else
search --no-floppy --fs-uuid --set=root f398aac2-99d1-4fcd-8b82-74a8cd1ce68d
fi
insmod gfxmenu
insmod png
set theme=($root)/usr/share/grub/themes/zorin/theme.txt
export theme
if [ "${recordfail}" = 1 ] ; then
set timeout=30
else
if [ x$feature_timeout_style = xy ] ; then
set timeout_style=hidden
set timeout=0

Fallback hidden-timeout code in case the timeout_style feature is

unavailable.

elif sleep --interruptible 0 ; then
set timeout=0
fi
fi

END /etc/grub.d/00_header

BEGIN /etc/grub.d/05_debian_theme

set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
if background_color 0,0,0; then
clear
fi

END /etc/grub.d/05_debian_theme

BEGIN /etc/grub.d/10_linux

function gfxmode {
set gfxpayload="${1}"
if [ "${1}" = "keep" ]; then
set vt_handoff=vt.handoff=7
else
set vt_handoff=
fi
}
if [ "${recordfail}" != 1 ]; then
if [ -e ${prefix}/gfxblacklist.txt ]; then
if [ ${grub_platform} != pc ]; then
set linux_gfx_mode=keep
elif hwmatch ${prefix}/gfxblacklist.txt 3; then
if [ ${match} = 0 ]; then
set linux_gfx_mode=keep
else
set linux_gfx_mode=text
fi
else
set linux_gfx_mode=text
fi
else
set linux_gfx_mode=keep
fi
else
set linux_gfx_mode=text
fi
export linux_gfx_mode
menuentry 'Zorin' --class zorin --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-f398aac2-99d1-4fcd-8b82-74a8cd1ce68d' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd0,gpt5'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt5 --hint-efi=hd0,gpt5 --hint-baremetal=ahci0,gpt5 b924a3eb-3b4a-437b-a924-dc94a708ba5b
else
search --no-floppy --fs-uuid --set=root b924a3eb-3b4a-437b-a924-dc94a708ba5b
fi
linux /vmlinuz root=/dev/mapper/vglinux-zorin17 ro quiet splash $vt_handoff
initrd /initrd.img
}

END /etc/grub.d/30_os-prober

BEGIN /etc/grub.d/30_uefi-firmware

menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' {
fwsetup
}

END /etc/grub.d/30_uefi-firmware

BEGIN /etc/grub.d/35_fwupd

END /etc/grub.d/35_fwupd

BEGIN /etc/grub.d/40_custom

This file provides an easy way to add custom menu entries. Simply type the

menu entries you want to add after this comment. Be careful not to change

the 'exec tail' line above.

END /etc/grub.d/40_custom

BEGIN /etc/grub.d/41_custom

if [ -f ${config_directory}/custom.cfg ]; then
source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg
fi

END /etc/grub.d/41_custom

I can't wait any longer - and in the case i made it worse i accepted the risk with the thought to come running back crying :smiley:

For similiar problems:
It's not enough to change UUID to the new one in /etc/fstab and to generate a new grub.cfg with sudo update-grub you have to reinstall grub - at least it helps me.
So first backup your /boot/efi, than remove the old bootloader sudo rm -r /boot/efi/EFI/ubuntu, now sudo grub-install /dev/sda (it notice EFI enabled, your drive can have another name). After than you regenerate grub.cfg with sudo update-grub2 and reboot praying that you don't made it worse. :wink:

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.