From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1U0GmX-0003sC-QW for mharc-grub-devel@gnu.org; Tue, 29 Jan 2013 14:23:45 -0500 Received: from eggs.gnu.org ([208.118.235.92]:47579) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U0GmT-0003s3-SE for grub-devel@gnu.org; Tue, 29 Jan 2013 14:23:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1U0GmQ-0006Rh-K8 for grub-devel@gnu.org; Tue, 29 Jan 2013 14:23:41 -0500 Received: from mx1.redhat.com ([209.132.183.28]:48510) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U0GmQ-0006RZ-Ck for grub-devel@gnu.org; Tue, 29 Jan 2013 14:23:38 -0500 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r0TJNbTL024241 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 29 Jan 2013 14:23:37 -0500 Received: from prarit.bos.redhat.com (prarit.bos.redhat.com [10.16.184.34]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id r0TJNaoY014763; Tue, 29 Jan 2013 14:23:36 -0500 From: Prarit Bhargava To: grub-devel@gnu.org Subject: [PATCH]: Add GRUB_DISABLE_SUBMENU option Date: Tue, 29 Jan 2013 14:23:33 -0500 Message-Id: <1359487413-14528-1-git-send-email-prarit@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 209.132.183.28 Cc: Prarit Bhargava X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 Jan 2013 19:23:44 -0000 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 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 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"