grub2 recordfail logic prevents headless system from rebooting after power outage
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
grub2 (Ubuntu) |
Triaged
|
Medium
|
Unassigned |
Bug Description
With the move to grub2 I recently discovered that my headless Natty server running as a NAS device will not reboot following a power failure. I was able to track this down to the behavior of the 'recordfail' logic in grub2. This logic prevents grub from booting following an event such as a power failure. The system boots to the grub2 menu and waits with no timeout (-1).
While this feature may be completely appropriate for an attended desktop system, there should be an optional override for this behavior in the '/etc/default/grub' defaults file so that systems (such as headless ones) that need to boot following such a failure can boot without intervention. I was able to work around the problem by commenting the following lines in /etc/grub.
#if [ ${recordfail} = 1 ]; then
# set timeout=-1
#else
set timeout=10
#fi
An optional grub2 default parameter that emulates this logic in the defaults would be a nice addition so people who want the "always boot" behavior don't have to hack the grub scripts by hand.
Additional info:
jheck@twilightz
Description: Ubuntu 11.04
Release: 11.04
jheck@twilightz
grub2:
Installed: (none)
Candidate: 1.99~rc1-13ubuntu3
Version table:
1.
500 http://
Related bugs:
* bug 669481: Timeout should not be -1 if $recordfail
Changed in grub2 (Ubuntu): | |
status: | New → Triaged |
importance: | Undecided → Medium |
description: | updated |
description: | updated |
Here is a better diff of the change I made to /etc/grub. d/00_header to work around the problem
jheck@twilightz one:/etc/ grub.d$ diff -Naur 00_header.orig 00_header
--- 00_header.orig 2011-10-10 19:23:44.000000000 -0400
+++ 00_header 2011-10-10 19:24:43.000000000 -0400
@@ -229,11 +229,11 @@
make_timeout ()
{
cat << EOF
-if [ "\${recordfail}" = 1 ]; then
- set timeout=-1
-else
+#if [ "\${recordfail}" = 1 ]; then
+# set timeout=-1
+#else
set timeout=${2}
-fi
+#fi
EOF
}