[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH]: Add GRUB_DISABLE_SUBMENU option
From: |
Prarit Bhargava |
Subject: |
[PATCH]: Add GRUB_DISABLE_SUBMENU option |
Date: |
Tue, 29 Jan 2013 14:23:33 -0500 |
I'm not sure what the proper patch posting protocol is on this list and
I've never used bzr before. If this is incorrect, please email me and let
me know what I've done wrong.
Thanks,
P.
------------------------------------------------------------
revno: 4686
committer: Prarit Bhargava <address@hidden>
branch nick: grub
timestamp: Tue 2013-01-29 14:14:01 -0500
message:
Add GRUB_DISABLE_MENU option
When doing kernel development it is often advantageous to do the following:
1. Select a kernel to boot with grub2-reboot
2. Reboot, capture output from bad kernel.
3. On subsequent reboot, boot known good or "default" kernel.
The problem is that the submenus get in the way of doing this. grub2-reboot
does not allow one to set a reboot to a specific kernel.
I *could* write a rule to be executed on the existing grub.cfg to remove
the submenu entries, however, given that a google search for "grub2 remove
submenus" leads to many many hits, I think a better approach is to make
GRUB_DISABLE_SUBMENU a generally available option.
Please note I have only tested this on Linux (specifically Fedora 17 and
Fedora 18).
Signed-off-by: Prarit Bhargava <address@hidden>
diff:
=== modified file 'util/grub-mkconfig.in'
--- util/grub-mkconfig.in 2012-12-28 07:21:17 +0000
+++ util/grub-mkconfig.in 2013-01-29 19:14:01 +0000
@@ -215,7 +215,8 @@
GRUB_INIT_TUNE \
GRUB_SAVEDEFAULT \
GRUB_ENABLE_CRYPTODISK \
- GRUB_BADRAM
+ GRUB_BADRAM \
+ GRUB_DISABLE_SUBMENU
if test "x${grub_cfg}" != "x"; then
rm -f "${grub_cfg}.new"
=== modified file 'util/grub.d/10_hurd.in'
--- util/grub.d/10_hurd.in 2012-09-18 11:04:06 +0000
+++ util/grub.d/10_hurd.in 2013-01-29 19:14:01 +0000
@@ -156,14 +156,15 @@
for kernel in ${kernels}
do
- if [ "x$is_first_entry" = xtrue ]; then
+ if [ "x${GRUB_DISABLE_SUBMENU}" = x ]; then
+ if [ "x$is_first_entry" = xtrue ]; then
hurd_entry "$kernel" simple
submenu_indentation="$grub_tab"
# TRANSLATORS: %s is replaced with an OS name
echo "submenu '$(gettext_printf "Advanced options for %s" "${OS}" |
grub_quote)' \$menuentry_id_option 'gnuhurd-advanced-$(grub_get_device_id
"${GRUB_DEVICE_BOOT}")' {"
+ fi
fi
-
hurd_entry "$kernel" advanced
hurd_entry "$kernel" recovery
is_first_entry=false
@@ -171,8 +172,10 @@
# If at least one kernel was found, then we need to
# add a closing '}' for the submenu command.
-if [ x"$is_first_entry" != xtrue ]; then
- echo '}'
+if [ "x${GRUB_DISABLE_SUBMENU}" = x ]; then
+ if [ x"$is_first_entry" != xtrue ]; then
+ echo '}'
+ fi
fi
echo "$title_correction_code"
=== modified file 'util/grub.d/10_kfreebsd.in'
--- util/grub.d/10_kfreebsd.in 2013-01-03 22:19:19 +0000
+++ util/grub.d/10_kfreebsd.in 2013-01-29 19:14:01 +0000
@@ -211,15 +211,17 @@
module_dir_rel=$(make_system_path_relative_to_its_root $module_dir)
fi
- if [ "x$is_first_entry" = xtrue ]; then
- kfreebsd_entry "${OS}" "${version}" simple
- submenu_indentation="$grub_tab"
-
- if [ -z "$boot_device_id" ]; then
+ if [ "x${GRUB_DISABLE_SUBMENU}" = x ]; then
+ if [ "x$is_first_entry" = xtrue ]; then
+ kfreebsd_entry "${OS}" "${version}" simple
+ submenu_indentation="$grub_tab"
+
+ if [ -z "$boot_device_id" ]; then
boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
- fi
- # TRANSLATORS: %s is replaced with an OS name
- echo "submenu '$(gettext_printf "Advanced options for %s" "${OS}" |
grub_quote)' \$menuentry_id_option 'kfreebsd-advanced-$boot_device_id' {"
+ fi
+ # TRANSLATORS: %s is replaced with an OS name
+ echo "submenu '$(gettext_printf "Advanced options for %s" "${OS}" |
grub_quote)' \$menuentry_id_option 'kfreebsd-advanced-$boot_device_id' {"
+ fi
fi
kfreebsd_entry "${OS}" "${version}" advanced
@@ -233,8 +235,10 @@
# If at least one kernel was found, then we need to
# add a closing '}' for the submenu command.
-if [ x"$is_first_entry" != xtrue ]; then
- echo '}'
+if [ "x${GRUB_DISABLE_SUBMENU}" = x ]; then
+ if [ x"$is_first_entry" != xtrue ]; then
+ echo '}'
+ fi
fi
echo "$title_correction_code"
=== modified file 'util/grub.d/10_linux.in'
--- util/grub.d/10_linux.in 2012-09-18 11:04:06 +0000
+++ util/grub.d/10_linux.in 2013-01-29 19:14:01 +0000
@@ -226,18 +226,20 @@
linux_root_device_thisversion=${GRUB_DEVICE}
fi
- if [ "x$is_first_entry" = xtrue ]; then
- linux_entry "${OS}" "${version}" simple \
- "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
+ if [ "x${GRUB_DISABLE_SUBMENU}" = x ]; then
+ if [ "x$is_first_entry" = xtrue ]; then
+ linux_entry "${OS}" "${version}" simple \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
- submenu_indentation="$grub_tab"
+ submenu_indentation="$grub_tab"
- if [ -z "$boot_device_id" ]; then
- boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
+ if [ -z "$boot_device_id" ]; then
+ boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
+ fi
+ # TRANSLATORS: %s is replaced with an OS name
+ echo "submenu '$(gettext_printf "Advanced options for %s" "${OS}" |
grub_quote)' \$menuentry_id_option 'gnulinux-advanced-$boot_device_id' {"
fi
- # TRANSLATORS: %s is replaced with an OS name
- echo "submenu '$(gettext_printf "Advanced options for %s" "${OS}" |
grub_quote)' \$menuentry_id_option 'gnulinux-advanced-$boot_device_id' {"
- fi
+fi
linux_entry "${OS}" "${version}" advanced \
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
@@ -252,8 +254,9 @@
# If at least one kernel was found, then we need to
# add a closing '}' for the submenu command.
-if [ x"$is_first_entry" != xtrue ]; then
- echo '}'
+if [ "x${GRUB_DISABLE_SUBMENU}" = x ]; then
+ if [ x"$is_first_entry" != xtrue ]; then
+ echo '}'
+ fi
fi
-
echo "$title_correction_code"
=== modified file 'util/grub.d/10_netbsd.in'
--- util/grub.d/10_netbsd.in 2012-10-28 10:55:22 +0000
+++ util/grub.d/10_netbsd.in 2013-01-29 19:14:01 +0000
@@ -157,15 +157,17 @@
gettext_printf "Found NetBSD kernel: %s\n" "$k" >&2
- if [ "x$is_first_entry" = xtrue ]; then
- netbsd_entry "knetbsd" "$k" simple "${GRUB_CMDLINE_NETBSD_DEFAULT}"
- submenu_indentation="$grub_tab"
+ if [ "x${GRUB_DISABLE_SUBMENU}" = x ]; then
+ if [ "x$is_first_entry" = xtrue ]; then
+ netbsd_entry "knetbsd" "$k" simple "${GRUB_CMDLINE_NETBSD_DEFAULT}"
+ submenu_indentation="$grub_tab"
- if [ -z "$boot_device_id" ]; then
- boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
+ if [ -z "$boot_device_id" ]; then
+ boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
+ fi
+ # TRANSLATORS: %s is replaced with an OS name
+ echo "submenu '$(gettext_printf "Advanced options for %s" "${OS}" |
grub_quote)' \$menuentry_id_option 'netbsd-advanced-$boot_device_id' {"
fi
- # TRANSLATORS: %s is replaced with an OS name
- echo "submenu '$(gettext_printf "Advanced options for %s" "${OS}" |
grub_quote)' \$menuentry_id_option 'netbsd-advanced-$boot_device_id' {"
fi
netbsd_entry "knetbsd" "$k" advanced "${GRUB_CMDLINE_NETBSD_DEFAULT}"
@@ -179,8 +181,10 @@
# If at least one kernel was found, then we need to
# add a closing '}' for the submenu command.
-if [ x"$is_first_entry" != xtrue ]; then
- echo '}'
+if [ "x${GRUB_DISABLE_SUBMENU}" = x ]; then
+ if [ x"$is_first_entry" != xtrue ]; then
+ echo '}'
+ fi
fi
echo "$title_correction_code"
- [PATCH]: Add GRUB_DISABLE_SUBMENU option,
Prarit Bhargava <=