diff -u grub2-1.99/debian/changelog grub2-1.99/debian/changelog --- grub2-1.99/debian/changelog +++ grub2-1.99/debian/changelog @@ -1,3 +1,11 @@ +grub2 (1.99-21ubuntu3.18) precise; urgency=medium + + * Do not hang headless servers indefinitely on boot after edge case power + failure timing (LP: #1443735). Instead, time out after 30 seconds and boot + anyway, including on non-headless systems. + + -- Robie Basak Tue, 19 May 2015 12:22:34 +0100 + grub2 (1.99-21ubuntu3.17) precise; urgency=medium * Fix infinite recursion in gettext when translation fails diff -u grub2-1.99/debian/patches/ubuntu_failed_boot_menu.patch grub2-1.99/debian/patches/ubuntu_failed_boot_menu.patch --- grub2-1.99/debian/patches/ubuntu_failed_boot_menu.patch +++ grub2-1.99/debian/patches/ubuntu_failed_boot_menu.patch @@ -35,7 +35,7 @@ { + cat << EOF +if [ "\${recordfail}" = 1 ] ; then -+ set timeout=${GRUB_RECORDFAIL_TIMEOUT:--1} ++ set timeout=${GRUB_RECORDFAIL_TIMEOUT:-30} +else +EOF if [ "x${1}${3}" != "x" ] ; then @@ -98,15 +98,20 @@ =================================================================== --- a/docs/grub.texi +++ b/docs/grub.texi -@@ -1258,6 +1258,12 @@ +@@ -1258,6 +1258,17 @@ 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 -+restricted or limited. ++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. + @end table