How to hide grub menu in ubuntu 14.04

I have two operating systems: Windows 8.1 and Ubuntu 14.04. I want to hide grub menu. I'm using grub 2.02~beta2-9. I tried following combinations of /etc/default/grub:

  1. \#GRUB_HIDDEN_TIMEOUT=1  
    \#GRUB_HIDDEN_TIMEOUT_QUIET=true  
    GRUB_TIMEOUT=0
    

    grub menu is visible for 10 seconds (if timeout is set for value larger than 0 it is displayed correctly: GRUB_TIMEOUT=5 - 5 seconds delay)

  2. GRUB_HIDDEN_TIMEOUT=1  
    GRUB_HIDDEN_TIMEOUT_QUIET=true  
    GRUB_TIMEOUT=0 
    

    grub menu is visible, I also tried GRUB_HIDDEN_TIMEOUT=false and setting both GRUB_TIMEOUT and GRUB_HIDDEN_TIMEOUT to zero and non-zero values

  3. \#GRUB_HIDDEN_TIMEOUT=1  
    \#GRUB_HIDDEN_TIMEOUT_QUIET=true  
    GRUB_TIMEOUT=1  
    GRUB_TIMEOUT_STYLE=hidden
    

    grub menu is visible for 1 second, tried also GRUB_TIMEOUT_STYLE=countdown with the same result, if GRUB_TIMEOUT is set to 0, 10 seconds delay

After each change I type update-grub and restart computer to see the results.

According to GRUB documentation found in info -f grub -n 'Simple configuration' second way is deprecated. The right way is the third one - by using GRUB_TIMEOUT_STYLE, but unfortunately it doesn't work. It's probably some kind of a bug.


Solution 1:

I have found a very quick solution, but I haven't looked at the consequences yet.

In your os_prober script for update-grub there are some lines to by-pass the timeout you set and to force displaying a boot menu if an other os has been found. You can easily disable this by setting the "quick_boot" variable to 0.

  • In /etc/grub.d/30_os_prober at the beginning of the file change

    quick_boot="1" to quick_boot="0"

  • Then run sudo update-grub

Solution 2:

Normally if you had only one OS running the option GRUB_TIMEOUT=0 would work. If GRUB 2's os-prober identifies additional operating systems while running the /etc/grub.d/30_os-prober script the hidden menu timeout feature is disabled by conditional statements. This also disables the ability to use the Shift key to display the menu during boot. Users with multiple operating systems wishing to hide the menu can find script edits on various forums which will allow them to add a hidden timeout feature to the boot sequence.

Check this answer if it helps you.

Solution 3:

I tried editing 30_os_prober, but it turned out that the name has been changed to 10_os_prober.

Other than that the solution offered above by Motsah works perfectly for me.

I now have:

GRUB_DEFAULT="0"   
GRUB_HIDDEN_TIMEOUT="1"   
GRUB_HIDDEN_TIMEOUT_QUIET="true"    
GRUB_TIMEOUT="0"

in my /etc/default/grub

Changing the hidden timeout to a higher setting doesn't seem to do a thing. Having 0 makes entering the menu impossible.

Copied from above, changing to 10_os_prober to make this complete:

In /etc/grub.d/10_os_prober change

quick_boot="1"

to

quick_boot="0"

in the beginning of the file.

Run:

sudo update-grub