grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: feature request + patch: GRUB_CMDLINE_LINUX_RECOVERY


From: Paul Menzel
Subject: Re: feature request + patch: GRUB_CMDLINE_LINUX_RECOVERY
Date: Tue, 14 Sep 2021 09:15:20 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0

Dear Chris,


Am 11.09.21 um 19:23 schrieb Chris Vogel:

I'd like to propose a patch to add a configuration parameter called 
GRUB_CMDLINE_LINUX_RECOVERY.

All credits for the initial idea and first implementation (as far as I know) go 
to Kyle Rankin at Purism. I used his improvement without being aware that it is 
not a standard feature inluded in original grub. His implementation can be 
found here https://source.puri.sm/pureos/packages/smartcard-key-luks.

There are situations when it would be helpfull to be able to set command line 
options to use only when generating a recovery entry for grub.cfg, e.g.

- when using systemd starting a debug shell using "systemd.debug-shell"
- when using luks disk encryption as shown in the work of Kyle

The inclusion of GRUB_CMDLINE_LINUX_RECOVERY as in the patch below shouldn't 
change the behaviour of grub at all if not used in a configuration. Users not 
setting the variable shouldn't see any difference.

Chris


diff --git a/docs/grub.texi b/docs/grub.texi
index f8b4b3b21..8b5482ee1 100644
--- a/docs/grub.texi
+++ b/docs/grub.texi
@@ -1411,6 +1411,14 @@ entry for recovery mode.  This option lists command-line 
arguments to add
  only to the default menu entry, after those listed in
  @samp{GRUB_CMDLINE_LINUX}.
+@item GRUB_CMDLINE_LINUX_RECOVERY
+Unless @samp{GRUB_DISABLE_RECOVERY} is set to @samp{true}, two menu
+entries will be generated for each Linux kernel: one default entry and one
+entry for recovery mode.
+This option lists command-line arguments to add only to the recovery menu
+entry, before those listed in @samp{GRUB_CMDLINE_LINUX}.
+The default is @samp{single}.
+
  @item GRUB_CMDLINE_NETBSD
  @itemx GRUB_CMDLINE_NETBSD_DEFAULT
  As @samp{GRUB_CMDLINE_LINUX} and @samp{GRUB_CMDLINE_LINUX_DEFAULT}, but for
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
index f8cbb8d7a..c3ea7612e 100644
--- a/util/grub-mkconfig.in
+++ b/util/grub-mkconfig.in
@@ -225,6 +225,7 @@ export GRUB_DEFAULT \
    GRUB_DISTRIBUTOR \
    GRUB_CMDLINE_LINUX \
    GRUB_CMDLINE_LINUX_DEFAULT \
+  GRUB_CMDLINE_LINUX_RECOVERY \
    GRUB_CMDLINE_XEN \
    GRUB_CMDLINE_XEN_DEFAULT \
    GRUB_CMDLINE_LINUX_XEN_REPLACE \
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
index e8b01c0d0..af51ae2f7 100644
--- a/util/grub.d/10_linux.in
+++ b/util/grub.d/10_linux.in
@@ -43,6 +43,10 @@ case ${GRUB_DEVICE} in
    ;;
  esac
+if [ "x${GRUB_CMDLINE_LINUX_RECOVERY}" = "x" ] ; then
+  GRUB_CMDLINE_LINUX_RECOVERY='single'
+fi
+
  # Default to disabling partition uuid support to maintian compatibility with
  # older kernels.
  GRUB_DISABLE_LINUX_PARTUUID=${GRUB_DISABLE_LINUX_PARTUUID-true}
@@ -287,7 +291,7 @@ while [ "x$list" != "x" ] ; do
                "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
    if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
      linux_entry "${OS}" "${version}" recovery \
-                "single ${GRUB_CMDLINE_LINUX}"
+                "${GRUB_CMDLINE_LINUX_RECOVERY} ${GRUB_CMDLINE_LINUX}"
    fi
list=`echo $list | tr ' ' '\n' | fgrep -vx "$linux" | tr '\n' ' '`
diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
index 3b1f47049..992363c3e 100644
--- a/util/grub.d/20_linux_xen.in
+++ b/util/grub.d/20_linux_xen.in
@@ -43,6 +43,10 @@ case ${GRUB_DEVICE} in
    ;;
  esac
+if [ "x${GRUB_CMDLINE_LINUX_RECOVERY}" = "x" ] ; then
+  GRUB_CMDLINE_LINUX_RECOVERY='single'
+fi
+
  # Default to disabling partition uuid support to maintian compatibility with
  # older kernels.
  GRUB_DISABLE_LINUX_PARTUUID=${GRUB_DISABLE_LINUX_PARTUUID-true}
@@ -343,7 +347,7 @@ while [ "x${xen_list}" != "x" ] ; do
            "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" 
"${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}"
        if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
            linux_entry "${OS}" "${version}" "${xen_version}" recovery \
-               "single ${GRUB_CMDLINE_LINUX}" "${GRUB_CMDLINE_XEN}"
+               "${GRUB_CMDLINE_LINUX_RECOVERY} ${GRUB_CMDLINE_LINUX}" 
"${GRUB_CMDLINE_XEN}"
        fi
list=`echo $list | tr ' ' '\n' | fgrep -vx "$linux" | tr '\n' ' '`

Thank you for upstreaming downstream feature. Please send it as git formatted patch (and maybe `git send-email`) with a commit message [1] and Signed-off-by lines to the list with the maintainers in Cc.


Kind regards,

Paul


[1]: https://chris.beams.io/posts/git-commit/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]