Hi,
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' ' '`
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel