How do I hide the GRUB menu showing up at the beginning of boot?

Solution 1:

You can just change grub settings.

type in terminal

sudo -H gedit /etc/default/grub

you need to change this

Change GRUB_HIDDEN_TIMEOUT_QUIET=false to

GRUB_HIDDEN_TIMEOUT_QUIET=true

Save the file and exit

Type sudo update-grub

If you don't get the result you want, see this bug.

Solution 2:

I solved this problem by disabling the OS Prober. I did that because in /boot/grub/grub.cfg in the part generated by the template /etc/grub.d/30_os-prober, there was an override of "timeout" to 10 and "style" to menu.

Edit /etc/default/grub and add this line:

GRUB_DISABLE_OS_PROBER=true

Hope you find this useful!

BTW, my full /etc/default/grub is:

GRUB_DEFAULT=0
GRUB_TIMEOUT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_DISTRIBUTOR= [...]
GRUB_DISABLE_OS_PROBER=true
GRUB_RECORDFAIL_TIMEOUT=0

Happy coding

Solution 3:

I tried all those tips they didnt work, ended up reducing the timeout time to zero as follows:

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

Solution 4:

You need to edit the file at /etc/default/grub to prevent showing the grub menu.

By default, the entries in that files look like this.

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=false
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
  • Remove the # mark from second line, and
  • Change the line GRUB_HIDDEN_TIMEOUT_QUIET=false to GRUB_HIDDEN_TIMEOUT_QUIET=true.

After changes, the required portion of the file will look like this


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=""
  • Then run sudo update-grub command in the terminal, and reboot to see the result.

Solution 5:

I had the same problem and none of the tips here worked! The only way was to change /boot/grub/grub.cfg manualy. At some point of this file he makes the timeout goes to 10! So, just comment those lines

if [ "${timeout}" = 0 ]; then
  set timeout=10
fi

But, you can never do update-grub again, otherwise it will turn back to the same file, and timeout is going to 10 again! Save the file (in vi you will need to force it even if you are su!). Restart the computer and it will work just fine!