Package: grub-common Version: 2.02~beta2-22 Tags: patch User: ubuntu-de...@lists.ubuntu.com Usertags: origin-ubuntu vivid ubuntu-patch
Downstream report: https://launchpad.net/bugs/1443735 A headless system will hang indefinitely waiting on user interaction after a well timed double power failure. This patch changes the default GRUB_RECORDFAIL_TIMEOUT to 30, so interactive users still get the opporunity to intervene after a real boot failure, but headless users will not end up stuck after boot failures that were really power failures. diff -Nru grub2-2.02~beta2/debian/patches/quick_boot.patch grub2-2.02~beta2/debian/patches/quick_boot.patch --- grub2-2.02~beta2/debian/patches/quick_boot.patch 2015-02-11 19:53:36.000000000 +0000 +++ grub2-2.02~beta2/debian/patches/quick_boot.patch 2015-04-14 02:00:20.000000000 +0100 @@ -18,7 +18,7 @@ Author: Richard Laager <rlaa...@wiktel.com> Forwarded: no -Last-Update: 2014-01-17 +Last-Update: 2015-04-14 Patch-Name: quick_boot.patch --- @@ -31,10 +31,10 @@ util/grub.d/30_os-prober.in | 21 ++++++++++++++++ 7 files changed, 117 insertions(+), 13 deletions(-) -diff --git a/configure.ac b/configure.ac -index 7c8d0af..2a7e410 100644 ---- a/configure.ac -+++ b/configure.ac +Index: grub2-2.02~beta2/configure.ac +=================================================================== +--- grub2-2.02~beta2.orig/configure.ac ++++ grub2-2.02~beta2/configure.ac @@ -1594,6 +1594,17 @@ else fi AC_SUBST([QUIET_BOOT]) @@ -53,18 +53,23 @@ LIBS="" AC_SUBST([FONT_SOURCE]) -diff --git a/docs/grub.texi b/docs/grub.texi -index 46b9e7f..28743d5 100644 ---- a/docs/grub.texi -+++ b/docs/grub.texi -@@ -1490,6 +1490,15 @@ This option may be set to a list of GRUB module names separated by spaces. +Index: grub2-2.02~beta2/docs/grub.texi +=================================================================== +--- grub2-2.02~beta2.orig/docs/grub.texi ++++ grub2-2.02~beta2/docs/grub.texi +@@ -1490,6 +1490,20 @@ This option may be set to a list of GRUB Each module will be loaded as early as possible, at the start of @file{grub.cfg}. +@item GRUB_RECORDFAIL_TIMEOUT -+If this option is set, it overrides the default recordfail setting. The -+default setting is -1, which causes GRUB to wait for user input. This option -+should be set on headless and appliance systems where access to a console is ++If this option is set, it overrides the default recordfail setting. A setting ++of -1 causes GRUB to wait for user input indefinitely. However, a false ++positive in the recordfail mechanism may occur if power is lost during boot ++before boot success is recorded in userspace. The default setting is 30, which ++causes GRUB to wait for user input for thirty seconds before continuing. This ++default allows interactive users the opportunity to switch to a different, ++working kernel, while avoiding a false positive causing the boot to block ++indefinitely on headless and appliance systems where access to a console is +restricted or limited. + +This option is only effective when GRUB was configured with the @@ -73,11 +78,11 @@ @end table The following options are still accepted for compatibility with existing -diff --git a/grub-core/normal/menu.c b/grub-core/normal/menu.c -index 7b55c27..a968e0f 100644 ---- a/grub-core/normal/menu.c -+++ b/grub-core/normal/menu.c -@@ -604,6 +604,30 @@ run_menu (grub_menu_t menu, int nested, int *auto_boot) +Index: grub2-2.02~beta2/grub-core/normal/menu.c +=================================================================== +--- grub2-2.02~beta2.orig/grub-core/normal/menu.c ++++ grub2-2.02~beta2/grub-core/normal/menu.c +@@ -604,6 +604,30 @@ run_menu (grub_menu_t menu, int nested, static struct grub_term_coordinate *pos; int entry = -1; @@ -108,10 +113,10 @@ if (timeout_style == TIMEOUT_STYLE_COUNTDOWN && timeout) { pos = grub_term_save_pos (); -diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in -index 62780bf..17350d4 100644 ---- a/util/grub-mkconfig.in -+++ b/util/grub-mkconfig.in +Index: grub2-2.02~beta2/util/grub-mkconfig.in +=================================================================== +--- grub2-2.02~beta2.orig/util/grub-mkconfig.in ++++ grub2-2.02~beta2/util/grub-mkconfig.in @@ -236,7 +236,8 @@ export GRUB_DEFAULT \ GRUB_ENABLE_CRYPTODISK \ GRUB_BADRAM \ @@ -122,10 +127,10 @@ if test "x${grub_cfg}" != "x"; then rm -f "${grub_cfg}.new" -diff --git a/util/grub.d/00_header.in b/util/grub.d/00_header.in -index 0c82f23..8dc5592 100644 ---- a/util/grub.d/00_header.in -+++ b/util/grub.d/00_header.in +Index: grub2-2.02~beta2/util/grub.d/00_header.in +=================================================================== +--- grub2-2.02~beta2.orig/util/grub.d/00_header.in ++++ grub2-2.02~beta2/util/grub.d/00_header.in @@ -21,6 +21,8 @@ prefix="@prefix@" exec_prefix="@exec_prefix@" datarootdir="@datarootdir@" @@ -135,7 +140,7 @@ export TEXTDOMAIN=@PACKAGE@ export TEXTDOMAINDIR="@localedir@" -@@ -44,6 +46,7 @@ if [ "x${GRUB_TIMEOUT_BUTTON}" = "x" ] ; then GRUB_TIMEOUT_BUTTON="$GRUB_TIMEOUT +@@ -44,6 +46,7 @@ if [ "x${GRUB_TIMEOUT_BUTTON}" = "x" ] ; cat << EOF if [ -s \$prefix/grubenv ]; then @@ -148,7 +153,7 @@ fi } +EOF - ++ +if [ "$quick_boot" = 1 ]; then + cat <<EOF +function recordfail { @@ -170,7 +175,7 @@ +} +EOF +fi -+ + +cat <<EOF function load_video { EOF @@ -181,7 +186,7 @@ { + cat << EOF +if [ "\${recordfail}" = 1 ] ; then -+ set timeout=${GRUB_RECORDFAIL_TIMEOUT:--1} ++ set timeout=${GRUB_RECORDFAIL_TIMEOUT:-30} +else +EOF if [ "x${3}" != "x" ] ; then @@ -232,10 +237,10 @@ fi EOF } -diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in -index 0616c6d..aa2c369 100644 ---- a/util/grub.d/10_linux.in -+++ b/util/grub.d/10_linux.in +Index: grub2-2.02~beta2/util/grub.d/10_linux.in +=================================================================== +--- grub2-2.02~beta2.orig/util/grub.d/10_linux.in ++++ grub2-2.02~beta2/util/grub.d/10_linux.in @@ -22,6 +22,7 @@ exec_prefix="@exec_prefix@" datarootdir="@datarootdir@" ubuntu_recovery="@UBUNTU_RECOVERY@" @@ -254,10 +259,10 @@ if [ x$type != xrecovery ] ; then save_default_entry | grub_add_tab fi -diff --git a/util/grub.d/30_os-prober.in b/util/grub.d/30_os-prober.in -index 1c44cf2..1106ad1 100644 ---- a/util/grub.d/30_os-prober.in -+++ b/util/grub.d/30_os-prober.in +Index: grub2-2.02~beta2/util/grub.d/30_os-prober.in +=================================================================== +--- grub2-2.02~beta2.orig/util/grub.d/30_os-prober.in ++++ grub2-2.02~beta2/util/grub.d/30_os-prober.in @@ -20,12 +20,26 @@ set -e prefix="@prefix@" exec_prefix="@exec_prefix@"
signature.asc
Description: Digital signature