You are not logged in.

#1 2018-10-10 11:58:37

rogerthat
Member
Registered: 2018-08-14
Posts: 46

Cannot get GRUB boot menu to display more than 3/100ths seconds

Hello. Hope this is the right subgroup to post in. Seems to be an issue with GNU GRUB configuration or bug.

Below, are the etc/default/grub and boot/grub/grub.cfg files on my system. GRUB version is 2.02.

Althought I have configured the boot menu timout to 5 seconds, the boot menu only flashes on screen briefly for 3/100ths of a second and disappears.
I have also tried with GRUB_TIMEOUT=-1, and all sorts of combinations of configuration changes. Nothing does anything to get the boot menu to actually stay on the screen.
I have used a burst frame camera to take a picture of the screen that displays and to time how long it is present.

(EDIT: I originally reported this for GRUB v2.02~rc2, but I have since upgraded to v2.02 with no change.)

/etc/default/grub ::

# GRUB boot loader configuration

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
#ALSO TRIED WITH: GRUB_TIMEOUT=-1
GRUB_DISTRIBUTOR="Arch"
GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda5:cryptroot root=/dev/mapper/cryptroot crypto=sha512:aes-xts-plain64:512:0:"
GRUB_CMDLINE_LINUX_DEFAULT="quiet loglevel=3"

# 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 enable Hidden Menu, and optionally hide the timeout count
#GRUB_HIDDEN_TIMEOUT=5
#GRUB_HIDDEN_TIMEOUT_QUIET=true

# 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 `vbeinfo'
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 and set to the desired menu colors.  Used by normal and wallpaper
# modes only.  Entries specified as foreground/background.
#GRUB_COLOR_NORMAL="light-blue/black"
#GRUB_COLOR_HIGHLIGHT="light-cyan/blue"

# Uncomment one of them for the gfx desired, a image background or a gfxtheme
#GRUB_BACKGROUND="/path/to/wallpaper"
#GRUB_THEME="/path/to/gfxtheme"

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

# Uncomment to make GRUB remember the last selection. This requires to
# set 'GRUB_DEFAULT=saved' above.
#GRUB_SAVEDEFAULT="true"

/boot/grub/grub.cfg ::

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
insmod part_gpt
insmod part_msdos
if [ -s $prefix/grubenv ]; then
  load_env
fi
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="0"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

if loadfont unicode ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=en_US
  insmod gettext
fi
terminal_input console
terminal_output gfxterm
if [ x$feature_timeout_style = xy ] ; then
  set timeout_style=menu
  set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
  set timeout=5
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-d9b29f82-0f88-48e8-97fd-98567f8449f5' {
	load_video
	set gfxpayload=keep
	insmod gzio
	insmod part_msdos
	insmod ext2
	set root='hd0,msdos1'
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,msdos1' --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  24d7cf20-7239-476e-8144-8fa204bea41f
	else
	  search --no-floppy --fs-uuid --set=root 24d7cf20-7239-476e-8144-8fa204bea41f
	fi
	echo	'Loading Linux linux ...'
	linux	/vmlinuz-linux root=UUID=d9b29f82-0f88-48e8-97fd-98567f8449f5 rw cryptdevice=/dev/sda5:cryptroot root=/dev/mapper/cryptroot crypto=sha512:aes-xts-plain64:512:0: quiet loglevel=3
	echo	'Loading initial ramdisk ...'
	initrd	/intel-ucode.img /initramfs-linux.img
}
submenu 'Advanced options for Arch Linux' $menuentry_id_option 'gnulinux-advanced-d9b29f82-0f88-48e8-97fd-98567f8449f5' {
	menuentry 'Arch Linux, with Linux linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-d9b29f82-0f88-48e8-97fd-98567f8449f5' {
		load_video
		set gfxpayload=keep
		insmod gzio
		insmod part_msdos
		insmod ext2
		set root='hd0,msdos1'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,msdos1' --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  24d7cf20-7239-476e-8144-8fa204bea41f
		else
		  search --no-floppy --fs-uuid --set=root 24d7cf20-7239-476e-8144-8fa204bea41f
		fi
		echo	'Loading Linux linux ...'
		linux	/vmlinuz-linux root=UUID=d9b29f82-0f88-48e8-97fd-98567f8449f5 rw cryptdevice=/dev/sda5:cryptroot root=/dev/mapper/cryptroot crypto=sha512:aes-xts-plain64:512:0: quiet loglevel=3
		echo	'Loading initial ramdisk ...'
		initrd	/intel-ucode.img /initramfs-linux.img
	}
	menuentry 'Arch Linux, with Linux linux (fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-fallback-d9b29f82-0f88-48e8-97fd-98567f8449f5' {
		load_video
		set gfxpayload=keep
		insmod gzio
		insmod part_msdos
		insmod ext2
		set root='hd0,msdos1'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,msdos1' --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  24d7cf20-7239-476e-8144-8fa204bea41f
		else
		  search --no-floppy --fs-uuid --set=root 24d7cf20-7239-476e-8144-8fa204bea41f
		fi
		echo	'Loading Linux linux ...'
		linux	/vmlinuz-linux root=UUID=d9b29f82-0f88-48e8-97fd-98567f8449f5 rw cryptdevice=/dev/sda5:cryptroot root=/dev/mapper/cryptroot crypto=sha512:aes-xts-plain64:512:0: quiet loglevel=3
		echo	'Loading initial ramdisk ...'
		initrd	/initramfs-linux-fallback.img
	}
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
menuentry "System restart" {
	echo "System rebooting..."
	reboot
}
menuentry "System shutdown" {
	echo "System shutting down..."
	halt
}
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###

First screen in boot process:
1.jpg

The boot menu that displays for 3/100ths of a second:
2.jpg

Then, it quickly proceeds to:
3.jpg

Last edited by rogerthat (2018-10-11 12:27:16)

Offline

#2 2018-10-10 16:08:53

levi
Moderator
From: UK
Registered: 2018-06-16
Posts: 174

Re: Cannot get GRUB boot menu to display more than 3/100ths seconds

If you boot into your bios menu, does your keyboard work okay?  I wonder if it's quitting and autoselecting the first item because it can't detect a keyboard at this stage.

Offline

#3 2018-10-10 16:33:51

rogerthat
Member
Registered: 2018-08-14
Posts: 46

Re: Cannot get GRUB boot menu to display more than 3/100ths seconds

Thank you, Levi.
I tried your suggestion, and the keyboard works fine in the bios configuration area.

I also ran grub-install and upgraded to 2.02 and reran grub-mkconfig.
The boot menu still disappears; the only difference is it now says version 2.02 when it flashes briefly on screen.  :-P

I also tried holding down keys immediately after entering the BIOS boot password.
I tried holding down: down-arrow, Esc, left-shift, and right-shift. Nothing made the boot menu linger.
I also tried a few times booting while pressing the down-arrow as fast as I could. Still the boot menu just flashed by.

Offline

#4 2018-10-10 17:35:07

andreas_baumann
Administrator
From: Zurich, Switzerland
Registered: 2017-08-10
Posts: 548
Website

Re: Cannot get GRUB boot menu to display more than 3/100ths seconds

Did you check the timeout value in the generated /boot/grub/grub.cfg?
Maybe grub is not reading the grub.cfg you think, for instance it's on another partition?

Offline

#5 2018-10-10 18:21:25

levi
Moderator
From: UK
Registered: 2018-06-16
Posts: 174

Re: Cannot get GRUB boot menu to display more than 3/100ths seconds

That screenshot suggests grub thinks it's about to wait for 5 second before doing anything, but moments later seems to decide to just boot the first menu item anyway, unless there's perhaps something else taking over from it at this point.  I don't really understand what modern machines are capable of at this point, although I don't really have a handle on the kind of system running here.  Could we get some kind of specs please?  UEFI or MBR?

Offline

#6 2018-10-10 22:20:08

rogerthat
Member
Registered: 2018-08-14
Posts: 46

Re: Cannot get GRUB boot menu to display more than 3/100ths seconds

Yes, I included the /boot/grub/grub.cfg above, and it contains "set timeout=5".
Also, as levi noted, the screenshot even shows that it will wait 5s. But it doesn't! It immediately disappears.

The machine is a MSI U100. So that's pretty old. And it's using MBR and BIOS, no UEFI.

Offline

#7 2018-10-11 06:08:04

andreas_baumann
Administrator
From: Zurich, Switzerland
Registered: 2017-08-10
Posts: 548
Website

Re: Cannot get GRUB boot menu to display more than 3/100ths seconds

you could try a timeout of -1 (wait forever) or just a longer timeout, e.g. 50. Maybe grub miscounts the ticks..

Offline

#8 2018-10-11 11:39:49

rogerthat
Member
Registered: 2018-08-14
Posts: 46

Re: Cannot get GRUB boot menu to display more than 3/100ths seconds

Yes, I tried a timeout of -1, and some other combinations of settings too. Nothing made the menu stay on screen! hmm

Offline

#9 2018-10-11 14:46:49

andreas_baumann
Administrator
From: Zurich, Switzerland
Registered: 2017-08-10
Posts: 548
Website

Re: Cannot get GRUB boot menu to display more than 3/100ths seconds

I hate to suggest you could try syslinux. :-)
grub2 is easier for newer machines
grub/syslinux plays better with really old machines in my experience..

..but I really appreciate your screenshots, they add a certain something.. :-)

Offline

#10 2018-10-11 14:54:46

rogerthat
Member
Registered: 2018-08-14
Posts: 46

Re: Cannot get GRUB boot menu to display more than 3/100ths seconds

Ah really? I could look into that. It's a pacman package?

Offline

#11 2018-10-11 15:05:11

andreas_baumann
Administrator
From: Zurich, Switzerland
Registered: 2017-08-10
Posts: 548
Website

Re: Cannot get GRUB boot menu to display more than 3/100ths seconds

yes, https://wiki.archlinux.org/index.php/syslinux, I used it as it had less dependencies which came in handy during i486 bootstrapping.

pacman -S syslinux
syslinux-install_update -i -a -m

The script doesn't know about complicated setups, then you have to fiddle syslinux.cfg yourself.

Grub 1 (or rather 0.97) has been moved to the AUR , so you have to build it first:

https://aur.archlinux.org/packages/grub-legacy/

Offline

#12 2018-10-13 05:48:08

rogerthat
Member
Registered: 2018-08-14
Posts: 46

Re: Cannot get GRUB boot menu to display more than 3/100ths seconds

I use ext4 and dm-crypt on my main volume. It looks like syslinux won't support that, right?

Offline

#13 2018-10-13 06:05:56

andreas_baumann
Administrator
From: Zurich, Switzerland
Registered: 2017-08-10
Posts: 548
Website

Re: Cannot get GRUB boot menu to display more than 3/100ths seconds

Syslinux most likely cannot read encrypted partitions.
With an unencrypted /boot partition I fail to see, why this should not work. Syslinux files, kernel and initramfs must be on this /boot partition.

Offline

#14 2018-10-13 14:39:38

levi
Moderator
From: UK
Registered: 2018-06-16
Posts: 174

Re: Cannot get GRUB boot menu to display more than 3/100ths seconds

Yes, I run an encrypted home directory on my build server.  It asks for the password as it boots up before I can log on. which is controlled via a systemd unit file.  Does the initramfs contain enough of systemd and associated unit files to get that far before it needs to mount the root fs?

Offline

#15 2018-10-14 07:34:25

tux012
Member
From: Italy
Registered: 2018-10-14
Posts: 1

Re: Cannot get GRUB boot menu to display more than 3/100ths seconds

Hello, first of all I'm sorry for my English, it isn't my language.
If your problem is only grub timeout, you could try to install grub-customizer and with it set grub-timeout to a value you've never tried before ( for example 7 or 8), then click on save option on the left, exit and reboot.

Offline

Board footer

Powered by FluxBB