13

I recently upgraded Ubuntu from 12.04 to 12.10 and since that time, the system does not automatically boot. It always opens the boot menu, and I have to press Enter to make it boot Ubuntu.

It seems to be ignoring the timeout value, and using a 'neverending' timeout.

There are no other systems (no dual boot), only the options originally installed by default Ubuntu 12.04 installation.

My /etc/default/grub has only these effective options:

GRUB_DEFAULT='Ubuntu'
GRUB_HIDDEN_TIMEOUT=1
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
GRUB_TERMINAL=console

I experimented with GRUB_DEFAULT, giving it values '0', '1', 'Ubuntu' but nothing helps.

Yes I always run update-grub afterwards.

How can I make the system booting again ?

Eric Carvalho
  • 54,385

4 Answers4

11

Add the following to /etc/default/grub

GRUB_RECORDFAIL_TIMEOUT=0

Save and run

sudo update-grub
chaos
  • 27,506
  • 12
  • 74
  • 77
shiv
  • 111
  • 1
  • 2
2

I have the following set of values in my /etc/default/grub file:

GRUB_DEFAULT=5
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10

I have several other operating systems on my computer and the GRUB_DEFAULT setting seems to set the specific initial highlighted item on the list starting at 0 and counting upward. During the countdown time of 10 seconds I can change between the other entries on the list.

I would suggest you try the following settings making sure that you comment the GRUB_HIDDEN_TIMEOUT parameter:

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10

Then work backwards from that, gradually making the GRUB_TIMEOUT or GRUB_HIDDEN_TIMEOUT parameters 1 or 2 to shorten the wait on the default selected system.

Remember that you may need to Ctrl+Alt+T to get to the terminal for sudo gedit of the file.

Eric Carvalho
  • 54,385
xxx
  • 21
2

If you look at /etc/grub.d/00_header You would see these lines:

make_timeout ()
{
    cat << EOF
if [ "\${recordfail}" = 1 ]; then
  set timeout=${GRUB_RECORDFAIL_TIMEOUT:--1}
else
  set timeout=${2}
fi
EOF
}

basically, grub2 is capable of detecting errors in boot process and fallback to manual booting.

Changing these lines to something like

make_timeout ()
{
    cat << EOF
  set timeout=${2}
EOF
}

and regenerating grub config with sudo update-grub should fix the problem. The interesting question, though is why grub keep thinking booting fails after you manually press Enter.

Dmitry Vyal
  • 121
  • 3
-1

Try this. I didn't have to use the live disk cause I could manually boot the os by selecting the option in grub and pressing enter. This fixed my problem. Good luck!

http://www.howtogeek.com/114884/how-to-repair-grub2-when-ubuntu-wont-boot/

Tyler
  • 1