Grub menu has disappeared, `GRUB_TIMEOUT_STYLE` already set to `menu`

I installed some Manjaro updates recently and noticed that when I reboot, grub doesn’t appear. It just defaults to the most recent Linux kernel selection. I don’t see anything until Manjaro loads gdm.

I’ve encountered this in the past. The solution previously was to ensure that /etc/default/grub configuration file has the GRUB_TIMEOUT_STYLE flag set to menu instead of hidden. That’s happened to me twice. The solution was to ensure that it was set to menu and then run $ sudo update-grub .

Elsewhere on this forum, many other users have encountered the same issue and arrived at the same solution:

But my problem this time today is distinct and different because /etc/default/grub already has the line set to GRUB_TIMEOUT_STYLE=menu. I’ve executed $ sudo update-grub just in case, rebooted, and grub still isn’t presenting Linux kernel options.

It’s also worth pointing out that when I reboot, my motherboard’s BIOS doesn’t appear either. I didn’t make any changes so I am not sure why my BIOS is behaving that way. Although I thought this might be important to mention in case there is a connection here.

Any ideas? Is there any other information I could provide to better help you people help me?

Here are the contents of my /etc/default/grub:

GRUB_DEFAULT=saved
GRUB_TIMEOUT=5
GRUB_TIMEOUT_STYLE=menu
GRUB_DISTRIBUTOR="Manjaro"
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash apparmor=1 security=apparmor udev.log_priority=3 sysrq_always_enabled=1"
GRUB_CMDLINE_LINUX=""

# If you want to enable the save default function, uncomment the following
# line, and set GRUB_DEFAULT to saved.
GRUB_SAVEDEFAULT=true

# Preload both GPT and MBR modules so that they are not missed
GRUB_PRELOAD_MODULES="part_gpt part_msdos"

# Uncomment to enable booting from LUKS encrypted devices
#GRUB_ENABLE_CRYPTODISK=y

# Uncomment to use basic console
GRUB_TERMINAL_INPUT=console

# Uncomment to disable graphical terminal
#GRUB_TERMINAL_OUTPUT=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 'videoinfo'
GRUB_GFXMODE=auto

# Uncomment to allow the kernel use the same resolution used by grub
GRUB_GFXPAYLOAD_LINUX=keep

# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
#GRUB_DISABLE_LINUX_UUID=true

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

# Uncomment this option to enable os-prober execution in the grub-mkconfig command
GRUB_DISABLE_OS_PROBER=false

# Uncomment and set to the desired menu colors.  Used by normal and wallpaper
# modes only.  Entries specified as foreground/background.
GRUB_COLOR_NORMAL="light-gray/black"
GRUB_COLOR_HIGHLIGHT="green/black"

# Uncomment one of them for the gfx desired, a image background or a gfxtheme
#GRUB_BACKGROUND="/usr/share/grub/background.png"
GRUB_THEME="/usr/share/grub/themes/manjaro/theme.txt"

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

# Uncomment to ensure that the root filesystem is mounted read-only so that
# systemd-fsck can run the check automatically. We use 'fsck' by default, which
# needs 'rw' as boot parameter, to avoid delay in boot-time. 'fsck' needs to be
# removed from 'mkinitcpio.conf' to make 'systemd-fsck' work.
# See also Arch-Wiki: https://wiki.archlinux.org/index.php/Fsck#Boot_time_checking
#GRUB_ROOT_FS_RO=true

And here is:

$ inxi -Fazy 
System:
  Kernel: 5.16.7-1-MANJARO x86_64 bits: 64 compiler: gcc v: 11.1.0
    parameters: BOOT_IMAGE=/boot/vmlinuz-5.16-x86_64
    root=UUID=9d0918bc-72f1-49b0-88d7-81ad74dead15 rw quiet splash apparmor=1
    security=apparmor udev.log_priority=3 sysrq_always_enabled=1
  Desktop: KDE Plasma 5.23.5 tk: Qt 5.15.2 info: latte-dock wm: kwin_x11
    vt: 2 dm: GDM 41.3 Distro: Manjaro Linux base: Arch Linux
Machine:
  Type: Desktop System: Gigabyte product: X470 AORUS ULTRA GAMING v: N/A
    serial: <superuser required>
  Mobo: Gigabyte model: X470 AORUS ULTRA GAMING-CF v: x.x
    serial: <superuser required> UEFI: American Megatrends v: F2
    date: 03/14/2018
CPU:
  Info: model: AMD Ryzen 7 2700 bits: 64 type: MT MCP arch: Zen+
    family: 0x17 (23) model-id: 8 stepping: 2 microcode: 0x800820D
  Topology: cpus: 1x cores: 8 tpc: 2 threads: 16 smt: enabled cache:
    L1: 768 KiB desc: d-8x32 KiB; i-8x64 KiB L2: 4 MiB desc: 8x512 KiB
    L3: 16 MiB desc: 2x8 MiB
  Speed (MHz): avg: 1967 high: 4062 min/max: 1550/3200 boost: enabled
    scaling: driver: acpi-cpufreq governor: schedutil cores: 1: 2823 2: 2665
    3: 1350 4: 1374 5: 1339 6: 1388 7: 1287 8: 1325 9: 4054 10: 4062 11: 1634
    12: 1635 13: 1639 14: 1631 15: 1637 16: 1639 bogomips: 102416
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm
  Vulnerabilities:
  Type: itlb_multihit status: Not affected
  Type: l1tf status: Not affected
  Type: mds status: Not affected
  Type: meltdown status: Not affected
  Type: spec_store_bypass
    mitigation: Speculative Store Bypass disabled via prctl
  Type: spectre_v1
    mitigation: usercopy/swapgs barriers and __user pointer sanitization
  Type: spectre_v2 mitigation: Full AMD retpoline, IBPB: conditional, STIBP:
    disabled, RSB filling
  Type: srbds status: Not affected
  Type: tsx_async_abort status: Not affected
Graphics:
  Device-1: AMD Navi 23 [Radeon RX 6600/6600 XT/6600M]
    vendor: Sapphire Limited driver: amdgpu v: kernel bus-ID: 0c:00.0
    chip-ID: 1002:73ff class-ID: 0300
  Display: x11 server: X.Org 1.21.1.3 compositor: kwin_x11 driver:
    loaded: amdgpu,ati unloaded: modesetting,radeon alternate: fbdev,vesa
    display-ID: :0 screens: 1
  Screen-1: 0 s-res: 3840x1600 s-dpi: 96 s-size: 1016x423mm (40.0x16.7")
    s-diag: 1101mm (43.3")
  Monitor-1: HDMI-A-0 res: 3840x1600 hz: 60 dpi: 111
    size: 880x370mm (34.6x14.6") diag: 955mm (37.6")
  Message: Unable to show advanced data. Required tool glxinfo missing.
Audio:
  Device-1: AMD Navi 21 HDMI Audio [Radeon RX 6800/6800 XT / 6900 XT]
    driver: snd_hda_intel v: kernel bus-ID: 0c:00.1 chip-ID: 1002:ab28
    class-ID: 0403
  Device-2: AMD Family 17h HD Audio vendor: Gigabyte driver: snd_hda_intel
    v: kernel bus-ID: 0e:00.3 chip-ID: 1022:1457 class-ID: 0403
  Sound Server-1: ALSA v: k5.16.7-1-MANJARO running: yes
  Sound Server-2: JACK v: 1.9.20 running: no
  Sound Server-3: PulseAudio v: 15.0 running: yes
  Sound Server-4: PipeWire v: 0.3.45 running: yes
Network:
  Device-1: Intel I211 Gigabit Network vendor: Gigabyte driver: igb v: kernel
    port: f000 bus-ID: 07:00.0 chip-ID: 8086:1539 class-ID: 0200
  IF: enp7s0 state: up speed: 1000 Mbps duplex: full mac: <filter>
Drives:
  Local Storage: total: 3.98 TiB used: 1 TiB (25.2%)
  SMART Message: Unable to run smartctl. Root privileges required.
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Samsung model: SSD 970 EVO 250GB
    size: 232.89 GiB block-size: physical: 512 B logical: 512 B speed: 31.6 Gb/s
    lanes: 4 type: SSD serial: <filter> rev: 2B2QEXE7 temp: 41.9 C scheme: MBR
  ID-2: /dev/sda maj-min: 8:0 vendor: Western Digital
    model: WDS200T2B0A-00SM50 size: 1.82 TiB block-size: physical: 512 B
    logical: 512 B speed: 6.0 Gb/s type: SSD serial: <filter> rev: 20WD
    scheme: GPT
  ID-3: /dev/sdb maj-min: 8:16 vendor: Western Digital
    model: WD20EFRX-68AX9N0 size: 1.82 TiB block-size: physical: 4096 B
    logical: 512 B speed: 6.0 Gb/s type: N/A serial: <filter> rev: 0A80
    scheme: MBR
  ID-4: /dev/sdc maj-min: 8:32 type: USB vendor: Samsung model: Flash Drive
    size: 119.51 GiB block-size: physical: 512 B logical: 512 B type: SSD
    serial: <filter> rev: 1100 scheme: MBR
  SMART Message: Unknown USB bridge. Flash drive/Unsupported enclosure?
Partition:
  ID-1: / raw-size: 83.01 GiB size: 81.15 GiB (97.76%) used: 42.55 GiB (52.4%)
    fs: ext4 dev: /dev/nvme0n1p1 maj-min: 259:1
  ID-2: /boot/efi raw-size: 1000 MiB size: 998 MiB (99.80%)
    used: 280 KiB (0.0%) fs: vfat dev: /dev/nvme0n1p3 maj-min: 259:3
  ID-3: /home raw-size: 1.82 TiB size: 1.79 TiB (98.37%)
    used: 983.21 GiB (53.6%) fs: ext4 dev: /dev/sda1 maj-min: 8:1
Swap:
  Alert: No swap data was found.
Sensors:
  System Temperatures: cpu: N/A mobo: N/A gpu: amdgpu temp: 40.0 C mem: 38.0 C
  Fan Speeds (RPM): N/A gpu: amdgpu fan: 0
Info:
  Processes: 477 Uptime: 30m wakeups: 0 Memory: 62.81 GiB
  used: 11.82 GiB (18.8%) Init: systemd v: 250 tool: systemctl Compilers:
  gcc: 11.1.0 clang: 13.0.1 Packages: 2125 pacman: 2120 lib: 513 flatpak: 0
  snap: 5 Shell: Zsh v: 5.8 running-in: gnome-terminal inxi: 3.3.12
1 Like

If this is different from earlier days then this is most likely your issue. Your /etc/default/grub file looks to be perfectly fine.

The output of the sudo update-grub command might reveal a clue.

Does pressing Esc when booting show the grub menu?

Thank you @Wollie and @Hanzel for your input so far. Apologies for my delayed reply.

Here it is:

$ sudo update-grub
[sudo] password for <user>:
Generating grub configuration file ...
Found theme: /usr/share/grub/themes/manjaro/theme.txt
Found linux image: /boot/vmlinuz-5.16-x86_64
Found initrd image: /boot/amd-ucode.img /boot/initramfs-5.16-x86_64.img
Found initrd fallback image: /boot/initramfs-5.16-x86_64-fallback.img
Found linux image: /boot/vmlinuz-5.15-x86_64
Found initrd image: /boot/amd-ucode.img /boot/initramfs-5.15-x86_64.img
Found initrd fallback image: /boot/initramfs-5.15-x86_64-fallback.img
Found linux image: /boot/vmlinuz-5.10-x86_64
Found initrd image: /boot/amd-ucode.img /boot/initramfs-5.10-x86_64.img
Found initrd fallback image: /boot/initramfs-5.10-x86_64-fallback.img
Found linux image: /boot/vmlinuz-5.4-x86_64
Found initrd image: /boot/amd-ucode.img /boot/initramfs-5.4-x86_64.img
Found initrd fallback image: /boot/initramfs-5.4-x86_64-fallback.img
Warning: os-prober will be executed to detect other bootable partitions.
Its output will be used to detect bootable binaries on them and create new boot entries.
grub-probe: error: cannot find a GRUB drive for /dev/sdc1. Check your device.map.
grub-probe: error: cannot find a GRUB drive for /dev/sdc1. Check your device.map.
Adding boot menu entry for UEFI Firmware Settings ...
Found memtest86+ image: /boot/memtest86+/memtest.bin
/usr/bin/grub-probe: warning: unknown device type nvme0n1.
done

When I press Esc, the screen continues to be black what seems to be forever. But when I power off my monitor and turn it back on, Grub appears with kernel options. So this does partially indicate the problem is with my monitor and not Grub. Another point indicating that the problem is with my monitor is that my motherboard manufacturer’s UEFI BIOS splash screen doesn’t flash at boot. I know it’s still there because when I hold down Del, it enters UEFI mode and I can see all the options. When I exit, I can see the splash and Grub appears visually.

I have an LG monitor (model: 38WK95C-W): LG 38'' 21:9 Curved WQHD+ IPS HDR10 Monitor (38WK95C-W) | LG USA

When I search Google for combinations of terms such as:

  • 38wk95c-w grub linux
  • 38wk95c-w “grub” linux
  • 38wk95c-w linux

…there aren’t many results because my monitor is so rare and unique. There are no other Linux users reporting unusual or recent problems like mine.

I did not update the monitor’s firmware or make any changes.

Output looks normal, I have no expertise to help you further. One thing I noticed is that the bios is from 2018, there is a newer version available. Since the bios does not output anything at boot and this is not turned off (not sure if this is possible) a bios update might be a option.

Same problem here, no GRUB menu despite: GRUB_TIMEOUT_STYLE=menu and sudo update-grub run

I’m on XFCE Manjaro updated today.

/etc/default/grub

GRUB_DEFAULT=saved
GRUB_TIMEOUT=3
GRUB_TIMEOUT_STYLE=menu
GRUB_DISTRIBUTOR="Manjaro"
GRUB_CMDLINE_LINUX_DEFAULT="quiet resume=UUID=12345678-1234-1234-1234-1234567890ab udev.log_priority=3"
GRUB_CMDLINE_LINUX=""

# If you want to enable the save default function, uncomment the following
# line, and set GRUB_DEFAULT to saved.
GRUB_SAVEDEFAULT=true

# Preload both GPT and MBR modules so that they are not missed
GRUB_PRELOAD_MODULES="part_gpt part_msdos"

# Uncomment to enable booting from LUKS encrypted devices
#GRUB_ENABLE_CRYPTODISK=y

# Uncomment to use basic console
GRUB_TERMINAL_INPUT=console

# Uncomment to disable graphical terminal
#GRUB_TERMINAL_OUTPUT=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 'videoinfo'
GRUB_GFXMODE=1600x900

# Uncomment to allow the kernel use the same resolution used by grub
GRUB_GFXPAYLOAD_LINUX=1600x900

# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
#GRUB_DISABLE_LINUX_UUID=true

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

# Uncomment this option to enable os-prober execution in the grub-mkconfig command
GRUB_DISABLE_OS_PROBER=false

# Uncomment and set to the desired menu colors.  Used by normal and wallpaper
# modes only.  Entries specified as foreground/background.
GRUB_COLOR_NORMAL="light-gray/black"
GRUB_COLOR_HIGHLIGHT="green/black"

# Uncomment one of them for the gfx desired, a image background or a gfxtheme
#GRUB_BACKGROUND="/usr/share/grub/background.png"
GRUB_THEME="/usr/share/grub/themes/manjaro-smfont/theme.txt"

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

# Uncomment to ensure that the root filesystem is mounted read-only so that
# systemd-fsck can run the check automatically. We use 'fsck' by default, which
# needs 'rw' as boot parameter, to avoid delay in boot-time. 'fsck' needs to be
# removed from 'mkinitcpio.conf' to make 'systemd-fsck' work.
# See also Arch-Wiki: https://wiki.archlinux.org/index.php/Fsck#Boot_time_checking
#GRUB_ROOT_FS_RO=true

I need grub menu because:

  1. on update nvidia drivers often fails to blinking cursor (sometimes changing kernel helps)
  2. on update, on new kernel, I have to boot old kernel and rebuild AUR (en) - rtl8821cu-dkms-git to get wifi.

The only solution I know is to spam ESC key on boot.

I notice there is a file ‘/etc/default.pacnew’ with the wrong settings (I have removed this).

I also notice there is a directory /etc/grub.d this appears to be empty of files (except ‘README’).

Any ideas gratefully received :slight_smile:

Remove quiet from the CMDLINE. :slight_smile:

1 Like

I removed ‘quiet’ and now the boot [ OK ] messages show, but still no grub menu.

Current /etc/default/grub :-

GRUB_DEFAULT=saved
GRUB_TIMEOUT=3
GRUB_TIMEOUT_STYLE=menu
GRUB_DISTRIBUTOR="Manjaro"
GRUB_CMDLINE_LINUX_DEFAULT="resume=UUID=12345678-1234-1234-1234-1234567890ab udev.log_priority=3"
GRUB_CMDLINE_LINUX=""

# If you want to enable the save default function, uncomment the following
# line, and set GRUB_DEFAULT to saved.
GRUB_SAVEDEFAULT=true

# Preload both GPT and MBR modules so that they are not missed
GRUB_PRELOAD_MODULES="part_gpt part_msdos"

# Uncomment to enable booting from LUKS encrypted devices
#GRUB_ENABLE_CRYPTODISK=y

# Uncomment to use basic console
GRUB_TERMINAL_INPUT=console

# Uncomment to disable graphical terminal
#GRUB_TERMINAL_OUTPUT=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 'videoinfo'
GRUB_GFXMODE=1600x900

# Uncomment to allow the kernel use the same resolution used by grub
GRUB_GFXPAYLOAD_LINUX=1600x900

# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
#GRUB_DISABLE_LINUX_UUID=true

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

# Uncomment this option to enable os-prober execution in the grub-mkconfig command
GRUB_DISABLE_OS_PROBER=false

# Uncomment and set to the desired menu colors.  Used by normal and wallpaper
# modes only.  Entries specified as foreground/background.
GRUB_COLOR_NORMAL="light-gray/black"
GRUB_COLOR_HIGHLIGHT="green/black"

# Uncomment one of them for the gfx desired, a image background or a gfxtheme
#GRUB_BACKGROUND="/usr/share/grub/background.png"
GRUB_THEME="/usr/share/grub/themes/manjaro-smfont/theme.txt"

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

# Uncomment to ensure that the root filesystem is mounted read-only so that
# systemd-fsck can run the check automatically. We use 'fsck' by default, which
# needs 'rw' as boot parameter, to avoid delay in boot-time. 'fsck' needs to be
# removed from 'mkinitcpio.conf' to make 'systemd-fsck' work.
# See also Arch-Wiki: https://wiki.archlinux.org/index.php/Fsck#Boot_time_checking
#GRUB_ROOT_FS_RO=true

I should’ve explained a bit better this morning, must’ve still been half asleep. :sleepy:

It was a long shot regarding the menu (just double checking it worked as expected, since you both had quiet specified), but it can also help with troubleshooting when you have a blinking cursor.

That shouldn’t be empty, what’s the output from sudo update-grub?

I get this with an empty /etc/grub.d

sudo update-grub
Generating grub configuration file ...
Script `/boot/grub/grub.cfg.new' contains no commands and will do nothing
Syntax errors are detected in generated GRUB config file.
Ensure that there are no errors in /etc/default/grub
and /etc/grub.d/* files or please file a bug report with
/boot/grub/grub.cfg.new file attached.

This is what’s in my directory.

ls /etc/grub.d
00_header  10_linux  20_linux_xen  30_os-prober  30_uefi-firmware  40_custom  41_custom  60_memtest86+  README
Overkill but also useful if you have enough space

Not sure if it’ll solve your issue, but the grub menu should show regardless of the setting (so presumably a different mechanism) when you have more than 1 OS installed, and of course another Manjaro counts. An additional benefit is you’ll have a working backup system if your main install breaks, better than a live USB. :slight_smile:

1 Like

Thanks for the info.

I was wrong about /etc/grub.d it shows the same as contents as yours.

Output from sudo update-grub

Generating grub configuration file ...
Found theme: /usr/share/grub/themes/manjaro-smfont/theme.txt
Found linux image: /boot/vmlinuz-5.15-x86_64
Found initrd image: /boot/intel-ucode.img /boot/initramfs-5.15-x86_64.img
Found initrd fallback image: /boot/initramfs-5.15-x86_64-fallback.img
Found linux image: /boot/vmlinuz-5.4-x86_64
Found initrd image: /boot/intel-ucode.img /boot/initramfs-5.4-x86_64.img
Found initrd fallback image: /boot/initramfs-5.4-x86_64-fallback.img
Warning: os-prober will be executed to detect other bootable partitions.
Its output will be used to detect bootable binaries on them and create new boot entries.
Found memtest86+ image: /boot/memtest86+/memtest.bin
done

Thannks to omano

The solution for me was simply increasing GRUB_TIMEOUT value. It turns out it takes ~5 seconds for grub menu to be displayed from when the counted down is started. I set the value to 7 seconds and now see the grub menu for ~2 sec.

Thanks for all the help. :slight_smile:

2 Likes

I have exactly the same behaviour on an (very) old LG monitor M2362D. I’m certain it’s the monitor because it used to do the same thing (no bios logo on reboot) years ago when I ran Windows 7 on a completely different motherboard + gfx card. The monitor is the only thing that hasn’t changed.

I haven’t found any solution so I live with it until the monitor dies and I buy a new one :laughing:

Monitor firmware can have bugs, or even lie about what capabilities the monitor supports. This blog post from a macOS developer has some interesting stories;

I actually discovered a solution but neglected to follow up in my thread. I went to my local PC shop and bought a Display Port based cord to replace my existing HDMI cord. DP for the win!

1 Like

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.