设置默认 grub 条目时,您可以使用的工具是grub-set-default
.
grub-set-default
指定三种定位默认值的方法 - 取自其联机帮助页:
MENU_ENTRY is a number, a menu item title or a menu item identifier.
我知道前两个,但我发现在某些情况下使用它们有一些限制:
数字:
据我了解,它number
是具有的索引menuentry
,因此,如果您安装新内核,它获得的位置在系统之间并不总是一致,因为这取决于安装的内核和数量。
菜单项标题
其完整标题menuentry
根据生成配置时设置的系统语言而变化。例如,这是我在一台语言设置为丹麦语的机器上的情况:
Ubuntu, med Linux 5.4.0-99-generic
。
由于它依赖于语言设置,因此对于语言可能不同的多台机器来说,它似乎并不理想。
所以我的两个问题是:
- 什么是
menu item identifier
? - 在安装之前可以预测新安装的内核将具有什么标识符吗?无论语言设置和安装了哪些其他内核,它是否一致?
答案1
什么是菜单项标识符?
我似乎偶然发现了上述问题的正确答案。给定如下所示的 Grub 菜单(如 /boot/grub/grub.cfg 中所述),子菜单中最后一项的菜单项标识符为'gnulinux-advanced-79ff4213-58cc-4410-9b21-b6db63e1da04>gnulinux-5.4.0-109-lowlatency-advanced-79ff4213-58cc-4410-9b21-b6db63e1da04'
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-79ff4213-58cc-4410-9b21-b6db63e1da04' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd0,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 79ff4213-58cc-4410-9b21-b6db63e1da04
else
search --no-floppy --fs-uuid --set=root 79ff4213-58cc-4410-9b21-b6db63e1da04
fi
linux /boot/vmlinuz-5.13.0-40-generic root=UUID=79ff4213-58cc-4410-9b21-b6db63e1da04 ro quiet splash $vt_handoff
initrd /boot/initrd.img-5.13.0-40-generic
}
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-79ff4213-58cc-4410-9b21-b6db63e1da04' {
menuentry 'Ubuntu, with Linux 5.13.0-40-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.13.0-40-generic-advanced-79ff4213-58cc-4410-9b21-b6db63e1da04' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd0,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 79ff4213-58cc-4410-9b21-b6db63e1da04
else
search --no-floppy --fs-uuid --set=root 79ff4213-58cc-4410-9b21-b6db63e1da04
fi
echo 'Loading Linux 5.13.0-40-generic ...'
linux /boot/vmlinuz-5.13.0-40-generic root=UUID=79ff4213-58cc-4410-9b21-b6db63e1da04 ro quiet splash $vt_handoff
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-5.13.0-40-generic
}
menuentry 'Ubuntu, with Linux 5.13.0-40-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.13.0-40-generic-recovery-79ff4213-58cc-4410-9b21-b6db63e1da04' {
recordfail
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd0,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 79ff4213-58cc-4410-9b21-b6db63e1da04
else
search --no-floppy --fs-uuid --set=root 79ff4213-58cc-4410-9b21-b6db63e1da04
fi
echo 'Loading Linux 5.13.0-40-generic ...'
linux /boot/vmlinuz-5.13.0-40-generic root=UUID=79ff4213-58cc-4410-9b21-b6db63e1da04 ro recovery nomodeset dis_ucode_ldr
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-5.13.0-40-generic
}
menuentry 'Ubuntu, with Linux 5.4.0-109-lowlatency' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-109-lowlatency-advanced-79ff4213-58cc-4410-9b21-b6db63e1da04' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd0,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 79ff4213-58cc-4410-9b21-b6db63e1da04
else
search --no-floppy --fs-uuid --set=root 79ff4213-58cc-4410-9b21-b6db63e1da04
fi
echo 'Loading Linux 5.4.0-109-lowlatency ...'
linux /boot/vmlinuz-5.4.0-109-lowlatency root=UUID=79ff4213-58cc-4410-9b21-b6db63e1da04 ro quiet splash $vt_handoff
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-5.4.0-109-lowlatency
}
[...]
}