github.com/meulengracht/snapd@v0.0.0-20210719210640-8bde69bcc84e/bootloader/assets/data/grub-recovery.cfg (about) 1 # Snapd-Boot-Config-Edition: 1 2 3 set default=0 4 set timeout=3 5 set timeout_style=hidden 6 7 if [ -e /EFI/ubuntu/grubenv ]; then 8 load_env --file /EFI/ubuntu/grubenv snapd_recovery_mode snapd_recovery_system 9 fi 10 11 # standard cmdline params 12 set snapd_static_cmdline_args='console=ttyS0 console=tty1 panic=-1' 13 14 # if no default boot mode set, pick one 15 if [ -z "$snapd_recovery_mode" ]; then 16 set snapd_recovery_mode=install 17 fi 18 19 if [ "$snapd_recovery_mode" = "run" ]; then 20 default="run" 21 elif [ -n "$snapd_recovery_system" ]; then 22 default=$snapd_recovery_mode-$snapd_recovery_system 23 fi 24 25 search --no-floppy --set=boot_fs --label ubuntu-boot 26 27 if [ -n "$boot_fs" ]; then 28 menuentry "Continue to run mode" --hotkey=n --id=run { 29 chainloader ($boot_fs)/EFI/boot/grubx64.efi 30 } 31 fi 32 33 # globbing in grub does not sort 34 for label in /systems/*; do 35 # match the system labels generated by snapd, which are usually just 36 # numbers. eg. 20210706, but can be hyphen separated numbers and letters 37 regexp --set 1:label "/([a-z0-9](-?[a-z0-9])*)\$" "$label" 38 if [ -z "$label" ]; then 39 continue 40 fi 41 # yes, you need to backslash that less-than 42 if [ -z "$best" -o "$label" \< "$best" ]; then 43 set best="$label" 44 fi 45 # if grubenv did not pick mode-system, use best one 46 if [ -z "$snapd_recovery_system" ]; then 47 default=$snapd_recovery_mode-$best 48 fi 49 set snapd_recovery_kernel= 50 load_env --file /systems/$label/grubenv snapd_recovery_kernel snapd_extra_cmdline_args snapd_full_cmdline_args 51 set cmdline_args="$snapd_static_cmdline_args $snapd_extra_cmdline_args" 52 if [ -n "$snapd_full_cmdline_args" ]; then 53 set cmdline_args="$snapd_full_cmdline_args" 54 fi 55 56 # We could "source /systems/$snapd_recovery_system/grub.cfg" here as well 57 menuentry "Recover using $label" --hotkey=r --id=recover-$label $snapd_recovery_kernel recover $label { 58 loopback loop $2 59 chainloader (loop)/kernel.efi snapd_recovery_mode=$3 snapd_recovery_system=$4 $cmdline_args 60 } 61 menuentry "Install using $label" --hotkey=i --id=install-$label $snapd_recovery_kernel install $label { 62 loopback loop $2 63 chainloader (loop)/kernel.efi snapd_recovery_mode=$3 snapd_recovery_system=$4 $cmdline_args 64 } 65 done 66 67 menuentry 'UEFI Firmware Settings' --hotkey=f 'uefi-firmware' { 68 fwsetup 69 }