github.com/Lephar/snapd@v0.0.0-20210825215435-c7fba9cef4d2/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  }