Get grub menu back after installing Ubuntu 20.04 alongside Windows

Jerry
3 min readApr 5, 2020

--

Photo by Michael Dziedzic on Unsplash

TL;DR

If your grub menu does not show up even after you set GRUB_TIMEOUT_STYLE=menu and GRUB_TIMEOUT=10 in /etc/default/grub and updated the grub, try setting (uncommenting) GRUB_TERMINAL=console as well and re sudo update-grub .

Background

I have a ubuntu 18.04 LTS + windows 10 dual boot system on my laptop. The dual boot works well for two years with the grub menu showing up every time the computer spins up.

I have been expecting the arrival of the new LTS ubuntu. Hours after the release of ubuntu 20.04 beta, I decided to give it a try with a newly purchased WD blue SSD to replace the 5-year-old HDD.

Problem

After a fresh install of ubuntu on the blank SSD (windows was on another SSD, both SSDs are setup with GBT which requires UEFI), the system directly boot into ubuntu without showing grub menu.

Although I can still select which system to boot in BIOS menu, I really prefer a grub menu rather than going into BIOS every time I want to switch.

Working Solution

Modify /etc/default/grub as below (changed lines are bold) and update grub by sudo update-grub

# 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_TIMEOUT_STYLE=menu
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"

Why?

Many posts (e.g. this one) on this problem suggested setting only GRUB_TIMEOUT_STYLE to menu and GRUB_TIMEOUT to a positive number, which alone does not work in my case.

After some search, one comment of this post suggested setting GRUB_TERMINAL to console , which works for me! As discussed in the original link:

It seems Grub is having a problem showing in graphic mode and showing it in console mode fixed it.

Things tried during troubleshooting

  1. Fix it with Boot-repair: I tried running it in live-ubuntu usb and in the installed ubuntu. It did not add the menu, but only reset the ubuntu loader. In one case, it even messed up my working ubuntu loader and sent me to grub command line during boot up (which itself cannot repair 😆)
  2. Run in windows bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi : This did not fix the problem and broke the working windows loader and sent me to grub command line. I have to manually boot windows from grub by doing something like this and reset it back with /set {bootmgr} path /EFI/Microsoft/Boot/bootmgfw.efi .

--

--