gitee.com/mysnapcore/mysnapd@v0.1.0/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='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 [ "$grub_cpu" = "x86_64" ]; then 28 set snapd_static_cmdline_args='console=ttyS0 console=tty1 panic=-1' 29 grub_binary="grubx64.efi" 30 elif [ "$grub_cpu" = "arm64" ]; then 31 grub_binary="grubaa64.efi" 32 else 33 echo "$grub_cpu" "is not supported" 34 grub_binary="none" 35 fi 36 37 if [ -n "$boot_fs" ]; then 38 menuentry "Continue to run mode" --hotkey=n --id=run { 39 chainloader ($boot_fs)/EFI/boot/"$grub_binary" 40 } 41 fi 42 43 # globbing in grub does not sort 44 for label in /systems/*; do 45 # match the system labels generated by snapd, which are usually just 46 # numbers. eg. 20210706, but can be hyphen separated numbers and letters 47 if ! regexp --set 1:label "/([a-z0-9](-?[a-z0-9])*)\$" "$label"; then 48 continue 49 fi 50 # yes, you need to backslash that less-than 51 if [ -z "$best" -o "$label" \< "$best" ]; then 52 set best="$label" 53 fi 54 # if grubenv did not pick mode-system, use best one 55 if [ -z "$snapd_recovery_system" ]; then 56 default=$snapd_recovery_mode-$best 57 fi 58 set snapd_recovery_kernel= 59 load_env --file /systems/$label/grubenv snapd_recovery_kernel snapd_extra_cmdline_args snapd_full_cmdline_args 60 set cmdline_args="$snapd_static_cmdline_args $snapd_extra_cmdline_args" 61 if [ -n "$snapd_full_cmdline_args" ]; then 62 set cmdline_args="$snapd_full_cmdline_args" 63 fi 64 65 # We could "source /systems/$snapd_recovery_system/grub.cfg" here as well 66 menuentry "Recover using $label" --hotkey=r --id=recover-$label $snapd_recovery_kernel recover $label { 67 loopback loop $2 68 chainloader (loop)/kernel.efi snapd_recovery_mode=$3 snapd_recovery_system=$4 $cmdline_args 69 } 70 menuentry "Install using $label" --hotkey=i --id=install-$label $snapd_recovery_kernel install $label { 71 loopback loop $2 72 chainloader (loop)/kernel.efi snapd_recovery_mode=$3 snapd_recovery_system=$4 $cmdline_args 73 } 74 menuentry "Factory reset using $label" --hotkey=i --id=factory-reset-$label $snapd_recovery_kernel factory-reset $label { 75 loopback loop $2 76 chainloader (loop)/kernel.efi snapd_recovery_mode=$3 snapd_recovery_system=$4 $cmdline_args 77 } 78 done 79 80 menuentry 'UEFI Firmware Settings' --hotkey=f 'uefi-firmware' { 81 fwsetup 82 }