how to force grub to boot (no human input) regardless previous booting failure
Solution 1:
Ok I found solution myself via shlug mail list.
what you do is to modify the /etc/grub.d/00_header and find:
if [ "${recordfail}" = 1 ]; then
set timeout=-1
else
set timeout=3
fi
change timeout = -1 to 0.
-1 means manual selection.
also remember to update-grub
afterward, to generate the actual grub.cfg
Solution 2:
Add
GRUB_RECORDFAIL_TIMEOUT=0
to /etc/default/grub and that is solved my problem on Ubuntu Server 12.04.4
Grub uses GRUB_RECORDFAIL_TIMEOUT
as the timeout when last boot failed. Its value defaults to -1, which means wait forever.
Solution 3:
This was reported as bug #841009 for ubuntu. I tried setting -1 to 0, but didn't work for me. So i tried another solution given here: https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/841009
Quote:
[...] solution is to set
GRUB_HIDDEN_TIMEOUT=-1
as suggested on ubuntu forums at this page http://ubuntuforums.org/showthread.php?t=1403517 but i've not tried this solution yet.
Quote:
grub2 in ubuntu 9.10 server is configured by default with GRUB_HIDDEN_TIMEOUT=0. If there is no keyboard attached (as in my headless setup), this causes grub2 to go to menu and stay there. Setting it to -1 gives me the desired sequence of menu, timeout and default choice.
I don't know if this is a grub2 bug or not, but if this is intended grub2 behavior, the default config for a server distro such as ubuntu server (which you would expect to function headless out of the box) should be different.
It worked for me.