From: Colin Watson Date: Mon, 13 Jan 2014 12:13:06 +0000 (+0000) Subject: "single" -> "recovery" when friendly-recovery is installed X-Git-Tag: archive/raspbian/2.14_git20250718.0e36779-2+rpi1^2~62 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=d84361010a2823e37d025b2edc652c7f9c065c24;p=grub2.git "single" -> "recovery" when friendly-recovery is installed If configured with --enable-ubuntu-recovery, also set nomodeset for recovery mode, and disable 'set gfxpayload=keep' even if the system normally supports it. See https://launchpad.net/ubuntu/+spec/desktop-o-xorg-tools-and-processes. Author: Stéphane Graber Forwarded: no Last-Update: 2025-07-21 Gbp-Pq: Name mkconfig-ubuntu-recovery.patch --- diff --git a/configure.ac b/configure.ac index 503378f..b880677 100644 --- a/configure.ac +++ b/configure.ac @@ -2117,6 +2117,17 @@ enable_grub_protect=no fi AC_SUBST([enable_grub_protect]) +AC_ARG_ENABLE([ubuntu-recovery], + [AS_HELP_STRING([--enable-ubuntu-recovery], + [adjust boot options for the Ubuntu recovery mode (default=no)])], + [], [enable_ubuntu_recovery=no]) +if test x"$enable_ubuntu_recovery" = xyes ; then + UBUNTU_RECOVERY=1 +else + UBUNTU_RECOVERY=0 +fi +AC_SUBST([UBUNTU_RECOVERY]) + LIBS="" AC_SUBST([FONT_SOURCE]) diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in index e661e9d..ec362d7 100644 --- a/util/grub.d/10_linux.in +++ b/util/grub.d/10_linux.in @@ -20,6 +20,7 @@ set -e prefix="@prefix@" exec_prefix="@exec_prefix@" datarootdir="@datarootdir@" +ubuntu_recovery="@UBUNTU_RECOVERY@" . "$pkgdatadir/grub-mkconfig_lib" @@ -43,7 +44,11 @@ case ${GRUB_DEVICE} in ;; esac -: ${GRUB_CMDLINE_LINUX_RECOVERY:=single} +if [ -x /lib/recovery-mode/recovery-menu ]; then + : ${GRUB_CMDLINE_LINUX_RECOVERY:=recovery} +else + : ${GRUB_CMDLINE_LINUX_RECOVERY:=single} +fi # Default to disabling partition uuid support to maintian compatibility with # older kernels. @@ -81,6 +86,10 @@ esac title_correction_code= +if [ "$ubuntu_recovery" = 1 ]; then + GRUB_CMDLINE_LINUX_RECOVERY="$GRUB_CMDLINE_LINUX_RECOVERY nomodeset" +fi + linux_entry () { os="$1" @@ -120,7 +129,9 @@ linux_entry () if [ "x$GRUB_GFXPAYLOAD_LINUX" != xtext ]; then echo " load_video" | sed "s/^/$submenu_indentation/" fi - echo " set gfxpayload=$GRUB_GFXPAYLOAD_LINUX" | sed "s/^/$submenu_indentation/" + if [ "$ubuntu_recovery" = 0 ] || [ x$type != xrecovery ]; then + echo " set gfxpayload=$GRUB_GFXPAYLOAD_LINUX" | sed "s/^/$submenu_indentation/" + fi fi echo " insmod gzio" | sed "s/^/$submenu_indentation/" diff --git a/util/grub.d/30_os-prober.in b/util/grub.d/30_os-prober.in index 5d8d752..84addef 100644 --- a/util/grub.d/30_os-prober.in +++ b/util/grub.d/30_os-prober.in @@ -240,7 +240,7 @@ EOF fi onstr="$(gettext_printf "(on %s)" "${DEVICE}")" - recovery_params="$(echo "${LPARAMS}" | grep single)" || true + recovery_params="$(echo "${LPARAMS}" | grep 'single\|recovery')" || true counter=1 while echo "$used_osprober_linux_ids" | grep 'osprober-gnulinux-$LKERNEL-${recovery_params}-$counter-$boot_device_id' > /dev/null; do counter=$((counter+1));