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  }