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:


    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)


    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


    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.

  • A lot of times, the recipes you find online don't work just right. In that case, consult the documentation: gnu.org/software/grub/manual/html_node/… – Limited Atonement Apr 14 '15 at 13:22
  • 2
    That's what I've done in the first place. It doesn't work as specified in documentation. – ezpn Apr 20 '15 at 21:45

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.

  • 3
    On your link I found quick solution that permanently hides grub menu: GRUB_HIDDEN_TIMEOUT=0.0 GRUB_TIMEOUT=0.0 Although it would be better if I could just show GRUB when pressing SHIFT (in previous ubuntu version I could adjust it by manipulating GRUB_TIMEOUT and GRUB_HIDDEN_TIMEOUT), but it is still the best solution that doesn't require writing custom scripts. – ezpn May 19 '14 at 22:55

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


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:


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




in the beginning of the file.


sudo update-grub

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.