Long delay before Grub menu appears

Just started happening today, after the latest updates. After the “Welcome to Grub” message displays, the screen goes blank and I wait for 10-15 seconds before the menu shows up. Afterwards, the normal boot process is normal (4-6 seconds). I’ve run disk tests via GSmartControl, comes up clean.

Here are the relevant system files/configs:
inxi -Faz

System:
  Kernel: 5.15.10-zen1-1-zen x86_64 bits: 64 compiler: gcc v: 11.1.0
    parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
    root=UUID=b6626456-c5e2-4f64-8185-bce57f2bfbc5 rw rootflags=subvol=@
    loglevel=3 nowatchdog resume=UUID=f0eef397-b328-4c1e-997b-546af5354ed6
  Desktop: Cinnamon 5.0.7 tk: GTK 3.24.30 wm: Muffin dm: LightDM 1.30.0
    Distro: EndeavourOS base: Arch Linux
Machine:
  Type: Desktop Mobo: ASUSTeK model: PRIME X470-PRO v: Rev X.0x
    serial: <filter> UEFI: American Megatrends v: 5861 date: 08/10/2021
CPU:
  Info: model: AMD Ryzen 7 2700X socket: AM4 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: 2262 high: 3200 min/max: 2200/3700 boost: enabled
    base/boost: 3700/4350 scaling: driver: acpi-cpufreq governor: schedutil
    volts: 1.2 V ext-clock: 100 MHz cores: 1: 2200 2: 3200 3: 2200 4: 2200
    5: 2200 6: 2200 7: 2200 8: 2200 9: 2200 10: 2200 11: 2200 12: 2200
    13: 2200 14: 2200 15: 2200 16: 2200 bogomips: 118394
  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: NVIDIA GP104 [GeForce GTX 1070] driver: nvidia v: 495.46
    alternate: nouveau,nvidia_drm bus-ID: 08:00.0 chip-ID: 10de:1b81
    class-ID: 0300
  Display: server: X.Org 1.21.1.2 driver: loaded: nvidia
    unloaded: fbdev,modesetting,vesa alternate: nouveau,nv display-ID: :0
    screens: 1
  Screen-1: 0 s-res: 3840x1080 s-dpi: 96 s-size: 1016x286mm (40.0x11.3")
    s-diag: 1055mm (41.6")
  Monitor-1: DP-0 res: 1920x1080 hz: 144 dpi: 82
    size: 598x336mm (23.5x13.2") diag: 686mm (27")
  Monitor-2: DP-4 res: 1920x1080 hz: 144 dpi: 82
    size: 598x336mm (23.5x13.2") diag: 686mm (27")
  OpenGL: renderer: NVIDIA GeForce GTX 1070/PCIe/SSE2
    v: 4.6.0 NVIDIA 495.46 direct render: Yes
Audio:
  Device-1: NVIDIA GP104 High Definition Audio driver: snd_hda_intel
    v: kernel bus-ID: 08:00.1 chip-ID: 10de:10f0 class-ID: 0403
  Device-2: AMD Family 17h HD Audio vendor: ASUSTeK driver: snd_hda_intel
    v: kernel bus-ID: 0a:00.3 chip-ID: 1022:1457 class-ID: 0403
  Sound Server-1: ALSA v: k5.15.10-zen1-1-zen running: yes
  Sound Server-2: JACK v: 1.9.19 running: no
  Sound Server-3: PulseAudio v: 15.0 running: yes
  Sound Server-4: PipeWire v: 0.3.42 running: no
Network:
  Device-1: Intel I211 Gigabit Network vendor: ASUSTeK driver: igb v: kernel
    port: e000 bus-ID: 06:00.0 chip-ID: 8086:1539 class-ID: 0200
  IF: enp6s0 state: up speed: 1000 Mbps duplex: full mac: <filter>
  IF-ID-1: vmnet8 state: unknown speed: N/A duplex: N/A mac: <filter>
Bluetooth:
  Device-1: Cambridge Silicon Radio Bluetooth Dongle (HCI mode) type: USB
    driver: btusb v: 0.8 bus-ID: 1-4:2 chip-ID: 0a12:0001 class-ID: e001
  Report: bt-adapter ID: hci0 rfk-id: 0 state: up address: <filter>
Drives:
  Local Storage: total: 5.92 TiB used: 1.97 TiB (33.2%)
  ID-1: /dev/sda maj-min: 8:0 vendor: SanDisk model: SDSSDH3512G
    size: 476.94 GiB block-size: physical: 512 B logical: 512 B sata: 3.3
    speed: 6.0 Gb/s type: SSD serial: <filter> rev: 7000 temp: 28 C
    scheme: GPT
  SMART: yes state: enabled health: PASSED on: 2y 68d 16h cycles: 774
    read: 12.7 MiB written: 7.7 MiB
  ID-2: /dev/sdb maj-min: 8:16 vendor: SanDisk model: SDSSDH3 2T00
    family: Marvell based SSDs size: 1.82 TiB block-size: physical: 512 B
    logical: 512 B sata: 3.3 speed: 6.0 Gb/s type: SSD serial: <filter>
    rev: 30RL temp: 26 C scheme: GPT
  SMART: yes state: enabled health: PASSED on: 1y 248d 3h cycles: 501
  ID-3: /dev/sdc maj-min: 8:32 type: USB vendor: Western Digital
    model: WD My Book 25DA drive model: WD40EZRZ-00GXCB0 family: Blue
    size: 3.64 TiB block-size: physical: 4096 B logical: 512 B sata: 3.1
    speed: 6.0 Gb/s type: HDD rpm: 5400 serial: <filter>
    drive serial: <filter> rev: 3002 drive rev: 80.00A80 temp: 34 C
    scheme: GPT
  SMART: yes state: enabled health: PASSED on: 216d 21h cycles: 1252
Partition:
  ID-1: / raw-size: 100 GiB size: 100 GiB (100.00%) used: 16.74 GiB (16.7%)
    fs: btrfs block-size: 4096 B dev: /dev/sdb1 maj-min: 8:17
  ID-2: /boot/efi raw-size: 16 GiB size: 15.99 GiB (99.93%)
    used: 68.5 MiB (0.4%) fs: vfat block-size: 512 B dev: /dev/sda1
    maj-min: 8:1
  ID-3: /home raw-size: 500 GiB size: 500 GiB (100.00%)
    used: 31.34 GiB (6.3%) fs: btrfs block-size: 4096 B dev: /dev/sdb3
    maj-min: 8:19
Swap:
  Kernel: swappiness: 60 (default) cache-pressure: 100 (default)
  ID-1: swap-1 type: partition size: 32 GiB used: 0 KiB (0.0%) priority: -2
    dev: /dev/sdb2 maj-min: 8:18
Sensors:
  System Temperatures: cpu: 40.2 C mobo: N/A gpu: nvidia temp: 49 C
  Fan Speeds (RPM): N/A gpu: nvidia fan: 32%
Info:
  Processes: 475 Uptime: 7m wakeups: 0 Memory: 31.32 GiB
  used: 2.96 GiB (9.4%) Init: systemd v: 249 tool: systemctl Compilers:
  gcc: 11.1.0 Packages: pacman: 1249 lib: 324 Shell: fish (sudo) v: 3.3.1
  default: Bash v: 5.1.12 running-in: gnome-terminal inxi: 3.3.11

/etc/default/grub

# GRUB boot loader configuration

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_SAVEDEFAULT=false
GRUB_DISTRIBUTOR="$(lsb_release -is)"
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 nowatchdog resume=UUID=f0eef397-b328-4c1e-997b-546af5354ed6"
GRUB_CMDLINE_LINUX=""

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

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

# Set to 'countdown' or 'hidden' to change timeout behavior,
# press ESC key to display menu.
GRUB_TIMEOUT_STYLE=menu

# 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=1920x1080x32

# 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_THEME="/boot/grub/themes/dark-matter/theme.txt"
GRUB_FONT="/boot/grub/fonts/terminus18_bold.pf2"

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

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

# Uncomment to disable submenus in boot menu
GRUB_DISABLE_SUBMENU=y

# Disable os-prober
GRUB_DISABLE_OS_PROBER=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 btrfs
insmod zstd
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
}

set menu_color_normal=light-blue/black
set menu_color_highlight=light-cyan/blue

insmod part_gpt
insmod btrfs
set root='hd1,gpt1'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt1 --hint-efi=hd1,gpt1 --hint-baremetal=ahci1,gpt1  b6626456-c5e2-4f64-8185-bce57f2bfbc5
else
  search --no-floppy --fs-uuid --set=root b6626456-c5e2-4f64-8185-bce57f2bfbc5
fi
if loadfont /@/boot/grub/fonts/terminus18_bold.pf2 ; then
  set gfxmode=1920x1080x32
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=en_US
  insmod gettext
fi
terminal_input console
terminal_output gfxterm
insmod part_gpt
insmod btrfs
set root='hd1,gpt1'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt1 --hint-efi=hd1,gpt1 --hint-baremetal=ahci1,gpt1  b6626456-c5e2-4f64-8185-bce57f2bfbc5
else
  search --no-floppy --fs-uuid --set=root b6626456-c5e2-4f64-8185-bce57f2bfbc5
fi
insmod gfxmenu
insmod png
set theme=($root)/@/boot/grub/themes/dark-matter/theme.txt
export theme
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 'EndeavourOS, with kernel 5.15.10-zen1-1-zen' --class endeavouros --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-zen-advanced-b6626456-c5e2-4f64-8185-bce57f2bfbc5' {
	load_video
	set gfxpayload=keep
	insmod gzio
	insmod part_gpt
	insmod btrfs
	set root='hd1,gpt1'
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt1 --hint-efi=hd1,gpt1 --hint-baremetal=ahci1,gpt1  b6626456-c5e2-4f64-8185-bce57f2bfbc5
	else
	  search --no-floppy --fs-uuid --set=root b6626456-c5e2-4f64-8185-bce57f2bfbc5
	fi
	echo	'Loading kernel 5.15.10-zen1-1-zen ...'
	linux	/@/boot/vmlinuz-linux-zen root=UUID=b6626456-c5e2-4f64-8185-bce57f2bfbc5 rw rootflags=subvol=@  loglevel=3 nowatchdog resume=UUID=f0eef397-b328-4c1e-997b-546af5354ed6
	echo	'Loading initial ramdisk ...'
	initrd	/@/boot/amd-ucode.img /@/boot/initramfs-linux-zen.img
}
menuentry 'EndeavourOS, with kernel 5.10.85-1-lts' --class endeavouros --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-lts-advanced-b6626456-c5e2-4f64-8185-bce57f2bfbc5' {
	load_video
	set gfxpayload=keep
	insmod gzio
	insmod part_gpt
	insmod btrfs
	set root='hd1,gpt1'
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt1 --hint-efi=hd1,gpt1 --hint-baremetal=ahci1,gpt1  b6626456-c5e2-4f64-8185-bce57f2bfbc5
	else
	  search --no-floppy --fs-uuid --set=root b6626456-c5e2-4f64-8185-bce57f2bfbc5
	fi
	echo	'Loading kernel 5.10.85-1-lts ...'
	linux	/@/boot/vmlinuz-linux-lts root=UUID=b6626456-c5e2-4f64-8185-bce57f2bfbc5 rw rootflags=subvol=@  loglevel=3 nowatchdog resume=UUID=f0eef397-b328-4c1e-997b-546af5354ed6
	echo	'Loading initial ramdisk ...'
	initrd	/@/boot/amd-ucode.img /@/boot/initramfs-linux-lts.img
}
menuentry 'EndeavourOS, with kernel 5.15.10-arch1-1' --class endeavouros --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-b6626456-c5e2-4f64-8185-bce57f2bfbc5' {
	load_video
	set gfxpayload=keep
	insmod gzio
	insmod part_gpt
	insmod btrfs
	set root='hd1,gpt1'
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt1 --hint-efi=hd1,gpt1 --hint-baremetal=ahci1,gpt1  b6626456-c5e2-4f64-8185-bce57f2bfbc5
	else
	  search --no-floppy --fs-uuid --set=root b6626456-c5e2-4f64-8185-bce57f2bfbc5
	fi
	echo	'Loading kernel 5.15.10-arch1-1 ...'
	linux	/@/boot/vmlinuz-linux root=UUID=b6626456-c5e2-4f64-8185-bce57f2bfbc5 rw rootflags=subvol=@  loglevel=3 nowatchdog resume=UUID=f0eef397-b328-4c1e-997b-546af5354ed6
	echo	'Loading initial ramdisk ...'
	initrd	/@/boot/amd-ucode.img /@/boot/initramfs-linux.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/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 ' ' {
    true
}

menuentry 'Clonezilla Live 2.8.0-27' --class clonezilla {
    search --fs-uuid --no-floppy --set=root d55719d0-d7e9-4fda-bc89-d30fcf5140ec
    set isofile='/@vms/iso-images/maintenance/clonezilla-live-2.8.0-27-amd64.iso'
    loopback loop (${root})${isofile}
    linux (loop)/live/vmlinuz boot=live union=overlay username=user config components quiet noswap edd=on nomodeset enforcing=0 locales=en_US.UTF-8 keyboard-layouts=NONE ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch="no" ip= net.ifnames=0 splash vga=795 i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=no vmwgfx.enable_fbdev=1 toram=filesystem.squashfs findiso=${isofile}
    initrd (loop)/live/initrd.img
}

menuentry 'Clonezilla Autoclone' --class clonezilla {
    search --fs-uuid --no-floppy --set=root d55719d0-d7e9-4fda-bc89-d30fcf5140ec
    set isofile='/@vms/iso-images/maintenance/clonezilla-live-2.8.0-27-amd64.iso'
    loopback loop (${root})${isofile}
    linux (loop)/live/vmlinuz boot=live union=overlay username=user config components quiet noswap edd=on nomodeset enforcing=0 locales=en_US.UTF-8 keyboard-layouts=NONE ocs_prerun="mount UUID=bc680f4c-30e2-47fb-ab1b-984d4fa50f0f -o subvol=@backups,noatime,space_cache=v2,autodefrag,compress=zstd /mnt" ocs_prerun1="mount --bind /mnt/Disk-Images/system /home/partimag/" ocs_live_run="ocs-sr -q2 -j2 -z0 -sfsck -senc -p poweroff --batch savedisk autoname-eos-year-month-day PTUUID=9B7DF9ED-B4FD-42FB-BD08-30167110A4BE PTUUID=0804DE96-AA00-426D-892B-D8911BEDDFAD" ocs_live_extra_param="" ocs_live_batch="yes" ip= net.ifnames=0 splash vga=795 i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=no vmwgfx.enable_fbdev=1 toram=filesystem.squashfs findiso=${isofile}
    initrd (loop)/live/initrd.img
}

menuentry 'Gparted Live 1.3.1-1' --class gparted {
    search --fs-uuid --no-floppy --set=root d55719d0-d7e9-4fda-bc89-d30fcf5140ec
    set isofile='/@vms/iso-images/maintenance/gparted-live-1.3.1-1-amd64.iso'
    loopback loop (${root})${isofile}
    linux (loop)/live/vmlinuz boot=live union=overlay username=user config components quiet noswap ip= net.ifnames=0 nosplash locales=en_US.UTF-8 keyboard-layouts=en gl_batch toram=filesystem.squashfs findiso=${isofile}
    initrd (loop)/live/initrd.img
}

menuentry ' ' {
    true
}

menuentry 'MemTest86+ EFI' --class memtest {
    insmod part_gpt
    insmod fat
    search --fs-uuid --no-floppy --set=root 148D-D264
    chainloader ($root)/EFI/memtest86/memtestx64.efi
}

menuentry 'UEFI Firmware Settings' --class efi {
    fwsetup
}
### 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 ###

Other than today’s updates, I also upgraded the BIOS. But that was several days ago.

Chalk this one up to being overzealous with scripting. I was trying to remove the fallback initramfs entries in Grub, and thought it would be simpler to just delete the images instead of parsing /boot/grub/grub.cfg and removing the menu entries.

Smart enough to fix mistakes, dumb enough to make them…

1 Like