#827956 grub: Doesn't apply default entry from /etc/default/grub

Package:
grub-pc
Source:
grub2
Description:
GRand Unified Bootloader, version 2 (PC/BIOS version)
Submitter:
José Luis González
Date:
2023-05-21 08:24:04 UTC
Severity:
important
#827956#5
Date:
2016-06-23 10:23:05 UTC
From:
To:
Hi,

I have changed /etc/default/grub GRUB_DEFAULT to point to entry 2
(linux 4.5.0-2 instead of 4.6.0) using the id:

GRUB_DEFAULT=gnulinux-4.5.0-2-amd64-advanced-5149fca1-fece-4b00-8b45-627728832e0c

However, after running update-grub (and it doesn't complain about the
entry) it still boots entry 0 (4.6.0):

# uname -r
4.6.0-1-amd64

using entry number 2 instead of id is of no use (still boots entry 0).

The following is my /etc/grub/grub.cfg:


========== 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 ###
if [ -s $prefix/grubenv ]; then
  set have_grubenv=true
  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="gnulinux-4.5.0-2-amd64-advanced-5149fca1-fece-4b00-8b45-627728832e0c"
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 [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
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-bios=hd0,msdos1
--hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1
5149fca1-fece-4b00-8b45-627728832e0c else search --no-floppy --fs-uuid
--set=root 5149fca1-fece-4b00-8b45-627728832e0c fi
    font="/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=es_ES
  insmod gettext
fi
terminal_output gfxterm
if [ "${recordfail}" = 1 ] ; then
  set timeout=30
else
  if [ x$feature_timeout_style = xy ] ; then
    set timeout_style=menu
    set timeout=4
  # Fallback normal timeout code in case the timeout_style feature is
  # unavailable.
  else
    set timeout=4
  fi
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
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-bios=hd0,msdos1
--hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1
5149fca1-fece-4b00-8b45-627728832e0c else search --no-floppy --fs-uuid
--set=root 5149fca1-fece-4b00-8b45-627728832e0c fi
insmod png
if background_image /usr/share/images/desktop-base/lines-grub.png; then
  set color_normal=white/black
  set color_highlight=black/white
else
  set menu_color_normal=cyan/blue
  set menu_color_highlight=white/blue
fi
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
function gfxmode {
	set gfxpayload="${1}"
}
set linux_gfx_mode=
export linux_gfx_mode
menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class
gnu --class os $menuentry_id_option
'gnulinux-simple-5149fca1-fece-4b00-8b45-627728832e0c' { load_video
insmod gzio if [ x$grub_platform = xxen ]; then insmod xzio; insmod
lzopio; fi 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-bios=hd0,msdos1 --hint-efi=hd0,msdos1
--hint-baremetal=ahci0,msdos1  5149fca1-fece-4b00-8b45-627728832e0c
else search --no-floppy --fs-uuid --set=root
5149fca1-fece-4b00-8b45-627728832e0c fi echo	'Cargando Linux
4.6.0-1-amd64...' linux	/boot/vmlinuz-4.6.0-1-amd64
root=UUID=5149fca1-fece-4b00-8b45-627728832e0c ro  quiet
echo	'Cargando imagen de memoria inicial...'
initrd	/boot/initrd.img-4.6.0-1-amd64 }
submenu 'Opciones avanzadas para Debian GNU/Linux' $menuentry_id_option
'gnulinux-advanced-5149fca1-fece-4b00-8b45-627728832e0c' { menuentry
'Debian GNU/Linux, con Linux 4.6.0-1-amd64' --class debian --class
gnu-linux --class gnu --class os $menuentry_id_option
'gnulinux-4.6.0-1-amd64-advanced-5149fca1-fece-4b00-8b45-627728832e0c' { load_video
insmod gzio if [ x$grub_platform = xxen ]; then insmod xzio; insmod
lzopio; fi 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-bios=hd0,msdos1 --hint-efi=hd0,msdos1
--hint-baremetal=ahci0,msdos1  5149fca1-fece-4b00-8b45-627728832e0c
else search --no-floppy --fs-uuid --set=root
5149fca1-fece-4b00-8b45-627728832e0c fi echo	'Cargando Linux
4.6.0-1-amd64...' linux	/boot/vmlinuz-4.6.0-1-amd64
root=UUID=5149fca1-fece-4b00-8b45-627728832e0c ro  quiet
echo	'Cargando imagen de memoria inicial...'
initrd	/boot/initrd.img-4.6.0-1-amd64 }
	menuentry 'Debian GNU/Linux, with Linux 4.6.0-1-amd64 (recovery
mode)' --class debian --class gnu-linux --class gnu --class os
$menuentry_id_option
'gnulinux-4.6.0-1-amd64-recovery-5149fca1-fece-4b00-8b45-627728832e0c' { load_video
insmod gzio if [ x$grub_platform = xxen ]; then insmod xzio; insmod
lzopio; fi 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-bios=hd0,msdos1 --hint-efi=hd0,msdos1
--hint-baremetal=ahci0,msdos1  5149fca1-fece-4b00-8b45-627728832e0c
else search --no-floppy --fs-uuid --set=root
5149fca1-fece-4b00-8b45-627728832e0c fi echo	'Cargando Linux
4.6.0-1-amd64...' linux	/boot/vmlinuz-4.6.0-1-amd64
root=UUID=5149fca1-fece-4b00-8b45-627728832e0c ro single
echo	'Cargando imagen de memoria inicial...'
initrd	/boot/initrd.img-4.6.0-1-amd64 }
	menuentry 'Debian GNU/Linux, con Linux 4.5.0-2-amd64' --class
debian --class gnu-linux --class gnu --class os $menuentry_id_option
'gnulinux-4.5.0-2-amd64-advanced-5149fca1-fece-4b00-8b45-627728832e0c' { load_video
insmod gzio if [ x$grub_platform = xxen ]; then insmod xzio; insmod
lzopio; fi 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-bios=hd0,msdos1 --hint-efi=hd0,msdos1
--hint-baremetal=ahci0,msdos1  5149fca1-fece-4b00-8b45-627728832e0c
else search --no-floppy --fs-uuid --set=root
5149fca1-fece-4b00-8b45-627728832e0c fi echo	'Cargando Linux
4.5.0-2-amd64...' linux	/boot/vmlinuz-4.5.0-2-amd64
root=UUID=5149fca1-fece-4b00-8b45-627728832e0c ro  quiet
echo	'Cargando imagen de memoria inicial...'
initrd	/boot/initrd.img-4.5.0-2-amd64 }
	menuentry 'Debian GNU/Linux, with Linux 4.5.0-2-amd64 (recovery
mode)' --class debian --class gnu-linux --class gnu --class os
$menuentry_id_option
'gnulinux-4.5.0-2-amd64-recovery-5149fca1-fece-4b00-8b45-627728832e0c' { load_video
insmod gzio if [ x$grub_platform = xxen ]; then insmod xzio; insmod
lzopio; fi 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-bios=hd0,msdos1 --hint-efi=hd0,msdos1
--hint-baremetal=ahci0,msdos1  5149fca1-fece-4b00-8b45-627728832e0c
else search --no-floppy --fs-uuid --set=root
5149fca1-fece-4b00-8b45-627728832e0c fi echo	'Cargando Linux
4.5.0-2-amd64...' linux	/boot/vmlinuz-4.5.0-2-amd64
root=UUID=5149fca1-fece-4b00-8b45-627728832e0c ro single
echo	'Cargando imagen de memoria inicial...'
initrd	/boot/initrd.img-4.5.0-2-amd64 }
	menuentry 'Debian GNU/Linux, con Linux 4.5.0-1-amd64' --class
debian --class gnu-linux --class gnu --class os $menuentry_id_option
'gnulinux-4.5.0-1-amd64-advanced-5149fca1-fece-4b00-8b45-627728832e0c' { load_video
insmod gzio if [ x$grub_platform = xxen ]; then insmod xzio; insmod
lzopio; fi 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-bios=hd0,msdos1 --hint-efi=hd0,msdos1
--hint-baremetal=ahci0,msdos1  5149fca1-fece-4b00-8b45-627728832e0c
else search --no-floppy --fs-uuid --set=root
5149fca1-fece-4b00-8b45-627728832e0c fi echo	'Cargando Linux
4.5.0-1-amd64...' linux	/boot/vmlinuz-4.5.0-1-amd64
root=UUID=5149fca1-fece-4b00-8b45-627728832e0c ro  quiet
echo	'Cargando imagen de memoria inicial...'
initrd	/boot/initrd.img-4.5.0-1-amd64 }
	menuentry 'Debian GNU/Linux, with Linux 4.5.0-1-amd64 (recovery
mode)' --class debian --class gnu-linux --class gnu --class os
$menuentry_id_option
'gnulinux-4.5.0-1-amd64-recovery-5149fca1-fece-4b00-8b45-627728832e0c' { load_video
insmod gzio if [ x$grub_platform = xxen ]; then insmod xzio; insmod
lzopio; fi 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-bios=hd0,msdos1 --hint-efi=hd0,msdos1
--hint-baremetal=ahci0,msdos1  5149fca1-fece-4b00-8b45-627728832e0c
else search --no-floppy --fs-uuid --set=root
5149fca1-fece-4b00-8b45-627728832e0c fi echo	'Cargando Linux
4.5.0-1-amd64...' linux	/boot/vmlinuz-4.5.0-1-amd64
root=UUID=5149fca1-fece-4b00-8b45-627728832e0c ro single
echo	'Cargando imagen de memoria inicial...'
initrd	/boot/initrd.img-4.5.0-1-amd64 }
}

### 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/30_uefi-firmware ###
### END /etc/grub.d/30_uefi-firmware ###

### 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.
### 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 ###


========== END OF GRUB.CFG ============

#827956#12
Date:
2016-07-09 17:41:54 UTC
From:
To:
Same here. I have setup:

GRUB_DEFAULT=2

(and run "update-grub" afterwards) to boot a non PAE kernel but whatever
entry is selected it always boots with the first one.

#827956#17
Date:
2021-03-02 09:24:41 UTC
From:
To:
I have a 'server' with no keyboard or monitor attached. I want to
boot into a 5.9 kernel instead of a 5.10 kernel to see whether there's a
NFS problem with 5.10.
But regardless what I specify as GRUB_DEFAULT in /etc/default/grub, it
always boots the top entry.

I've tried the following things:
- Use the value following "$menuentry_id_option"
- Placed single quotes around previous value
- Placed double quotes around previous value
- Replace "$menuentry_id_option" with "--id" in case it was incorrectly
  not expanded/replaced in the grub entries
- Use a numerical value

None of which resulted in grub booting anything other then the top
entry.
If this can't be fixed, can then at least the documentation be updated
to say that grub only works interactively?

#827956#22
Date:
2021-03-02 10:26:51 UTC
From:
To:
When I did that and run 'update-grub' I got an interesting warning:

Warning: Please don't use old title `Debian GNU/Linux, with Linux 5.9.0-5-
amd64' for GRUB_DEFAULT, use `Advanced options for Debian GNU/Linux>Debian
GNU/Linux, with Linux 5.9.0-5-amd64' (for versions before 2.00) or `gnulinux-
advanced-2f82ed85-9840-4338-a5b2-71c735333ed9>gnulinux-5.9.0-5-amd64-
advanced-2f82ed85-9840-4338-a5b2-71c735333ed9' (for 2.00 or later)

So I changed GRUB_DEFAULT to the (latter) value suggested by the warning ...
and low-and-behold, that worked!

So my compliments for that excellent warning/error message.

I would say that the documentation really does need to be updated as what's
described in "info -f grub -n 'Simple configuration'" is not/no longer correct.
I would've expected an ID to be unique though ...

Cheers,
  Diederik