How to - Always show grub2 menu

I want to always see the grub menu, ideally with a countdown.

Even though I’ve used linux for decades, I could not get grub to show the menu consistently. Spent the afternoon reading and searching and trying various combinations of variables in /etc/default/grub and the best I can say is grub2 doesn’t appear consistent. I could shutdown and boot 5 times in a row, without changing anything, and the menu would randomly show.

Has anyone successfully gotten grub2 to always display the grub menu? If so, how.

A huge thank… :slight_smile:

The grub menu always shows here. I do increase the timeout time to 15 seconds, to make sure that I don’t miss it.

As far as I know, when you hibernate, that sets it to boot directly to the hibernated system. So I guess you would not see the menu in that case. After that boot, it is supposed to clear the automatic boot into the hibernated system, but I’m not sure if that always works when “/boot” is part of a “btrfs” partition.

Anyway, those are my random thoughts on your problem.

You have to set


GRUB_TIMEOUT=-1

in /etc/default/grub
You may have to run


sudo grub2-mkconfig -o /boot/grub2/grub.cfg

The GRUB2 menu shows here (with a 8 secs countdown) at every boot of all systems since GRUB2 is used by openSUSE (before that the legacy GRUB menu was shown and before that the LILO menu was shown).

And to the how to achieve that: I wouldn’t know how NOT to achieve that. I always just installed openSUSE. Nothing particular with respect to GRUB.

I even have no idea what you see when you do not see the GRUB menu. Does it boot then (and when yes, what)? Or does it stop doing nothing?

Regarding the menu, I currently have set: GRUB_TIMEOUT=8

GRUB_TIMEOUT_STYLE say: “If this option is unset or set to ‘menu’, then GRUB will display the menu and then wait for the timeout set by ‘GRUB_TIMEOUT’ to expire before booting the default entry. Pressing a key interrupts the timeout.”

I’ve referenced the Grub manual: https://www.gnu.org/software/grub/manual/grub/html_node/Simple-configuration.html

It sounds like it should work. The menu should be displayed for 8 seconds before taking the default. Unfortunately it is not consistent. The Grub menu is not always displayed. The same thing happened with GRUB_TIMEOUT=-1.

I’m running tumbleweed in a qemu-kvm virtual machine and I’ll shutdown tumbleweed vm and in libvirt I’ll click Run. Some times the grub menu is displayed, but I can’t predict when.

I’ll repeat the above - bring the vm up, shutdown, boot. I wouldn’t do this on a real machine, but I need to have confidence in the boot process and the grub menu before installing on real machines.

Grub2 version: 2.02-41.1.x86_64

You set it where? This variable is not directly used by grub2 during boot.

The Grub menu is not always displayed. The same thing happened with GRUB_TIMEOUT=-1.

Did you regenerate grub.cfg after changing these values, assuming you have changed them in /etc/default/grub?

That always works for me.

However, if I close the virtual machine view, without shutting down the virtual machine, then when I next open it I will, of course, view the still running machine without going through any booting.

You sure you are not hibernating??? With hibernate you must return to the OS that went to sleep so no choice (ie grub menu)

Most likely something to do with that particular PC’s BIOS. I have an Asus laptop where for some reason the display comes on at slightly different random times at boot.

One time, the Asus logo will show, centred, another time the Asus Logo will flash a moment in far lower right corner, another time the Asus Logo does not show at all and I see a text about Grub loading or something like that. At different times, especially when the Asus Logo does not show, I either do not get to see the Grub menu, or the Grub menu is just a split-second splash.

Most the time, the menu comes up properly, but randomly it does not.

I put that down to something in the BIOS routines re: GPU or Screen or something.

Yes & Yes.

Where: /etc/default/grub
Command: grub2-mkconfig -o /boot/grub2/grub.cfg

Definitely shutdown the machine.

Command: shutdown -h now

I think you might be onto something. But how to nail it down.

In this particultar virtual machine the hardware is:

<type arch=‘x86_64’ machine=‘pc-i440fx-2.0’>hvm</type>

I’ll have to think about this some more.

Depends on what part of grub2 you want to modify.

The posts until now modify grub2 content.

If you want to modify grub2 appearance, then I wrote scripts that will do that, fully self-documented, includes re-generation.

https://en.opensuse.org/User:Tsu2/12.3/Modified_GRUB_Menu

TSU

Your response made me rethink what I was seeing or NOT seeing on the screen at boot. The Grub2 menu, I now believe, is always there, but only sometimes visible. When I should be able to see the Grub2 menu, I see a blank screen. If I press C or E, the correct action is actually taken and I see the command line or configuration. So the Grub menu is there, it just isn’t visible… most times.

I do not know if this is related but I was having problems with KDE Plasma video resolution. On GRUB_CMDLINE_LINUX_DEFAULT I have vga=0x37e. The resolution of 1440x900 doesn’t seem to get passed to Xorg. The resolution was stuck at 1024x768 (verified with xrandr). The KDE behavior was different in Leap vs Tumbleweed. In Leap I could change the resolution via KDE system setting but it didn’t actually change it or remember it. In Tumbleweed it would switch and immediately switch back. Stopping KScreen2 allowed the resolution to stick. But the end solution for both was to modify /etc/X11/xorg.conf.d/50-monitor.conf with the snippet below:

Section “Monitor”
Identifier “Default Monitor”
Option “PreferredMode” “1440x900”
EndSection

Reference: X/Config/Resolution - Ubuntu Wiki

Obviously this change doesn’t impact grub, but maybe whatever is causing grub’s problem is causing X’s and KDE’s problem (not getting the correct
video resolution)… which would be the kernel (??).