How do I skip the Grub menu on a dual-boot system? [duplicate]

I have Ubuntu and Windows 7 installed and dual booting via Grub2.

99/100 times I will boot into Ubuntu.

I want to speed up my time for booting into Ubuntu and really the Grub2 prompt is the part that adds the most time.

So, I want to disable the prompt.

I would prefer to be able to set it up so I can hold shift or similar at boot if I wish to show it.

But I don't mind editing a config file or similar in Ubuntu to show it again if need be.

So how can I do this?


My /etc/default/grub file:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

Edit /etc/default/grub to contain

GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=0

Leave other settings alone. If you want to allow 1 second to press Shift (some computers leave you very little time between the keyboard initialization and the OS boot), make this

GRUB_HIDDEN_TIMEOUT=1
GRUB_HIDDEN_TIMEOUT_QUIET=false
GRUB_TIMEOUT=0

or if you prefer to see the menu for 1 second:

GRUB_HIDDEN_TIMEOUT=
GRUB_TIMEOUT=1

If you almost always boot into Linux, you may prefer to skip the boot menu altogether (first option in this answer, and don't bother with the Shift key), and instead, when you want to boot Windows, boot Linux and run the following command to say that the next reboot (and only the next reboot) will default to Windows:

grub-reboot Windows

You will need to change /etc/default/grub:

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=

Run grub-set-default 0 to ensure you boot into Ubuntu by default.

See Grub2 Setup in the Ubuntu community documentation for more information.

When you're done, run sudo update-grub to save your changes.