Grub的一些操作随记
来自三线的随记
grep -E "^(\s*menuentry |\s*submenu )" /boot/grub/grub.cfg
例如:
root@sit1:/etc/apt/sources.list.d# grep -E "^(\s*menuentry |\s*submenu )" /boot/grub/grub.cfg
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-a6097def-7c8d-4ed3-91c4-83e0916f1a03' {
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-a6097def-7c8d-4ed3-91c4-83e0916f1a03' {
menuentry 'Ubuntu, with Linux 5.15.0-113-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-113-generic-advanced-a6097def-7c8d-4ed3-91c4-83e0916f1a03' {
menuentry 'Ubuntu, with Linux 5.15.0-113-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-113-generic-recovery-a6097def-7c8d-4ed3-91c4-83e0916f1a03' {
menuentry 'Ubuntu, with Linux 5.15.0-105-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-105-generic-advanced-a6097def-7c8d-4ed3-91c4-83e0916f1a03' {
menuentry 'Ubuntu, with Linux 5.15.0-105-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-105-generic-recovery-a6097def-7c8d-4ed3-91c4-83e0916f1a03' {
menuentry 'Ubuntu, with Linux 5.15.0-94-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-94-generic-advanced-a6097def-7c8d-4ed3-91c4-83e0916f1a03' {
menuentry 'Ubuntu, with Linux 5.15.0-94-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-94-generic-recovery-a6097def-7c8d-4ed3-91c4-83e0916f1a03' {
grub-set-default
通过 grub-set-default 0 或者 grub-set-default "gnulinux-5.15.0-105-generic-advanced-a6097def-7c8d-4ed3-91c4-83e0916f1a03" 或者 grub-set-default "Advanced options for Ubuntu>Ubuntu, with Linux 5.15.0-105-generic" 均可以实现在不编辑文件的情况下设置启动项
grub-set-default 会操作 /boot/grub/grubenv 并写入 saved_entry 变量
但是 saved_entry 变量生效依赖 GRUB_DEFAULT=saved (man grub-set-default 中有提到)
Set the default boot menu entry for GRUB. This requires setting GRUB_DEFAULT=saved in /etc/default/grub.
通过修改 /etc/default/grub 实现指定启动项
关联配置项是 GRUB_DEFAULT , 例如 GRUB_DEFAULT="1 > 2"
虽然这里 "1 > 2" 可以有空格,但是推荐写法还是 GRUB_DEFAULT="1>2"
修改 /etc/default/grub 以后需要执行 update-grub 以更新 grub 配置
当然,同理 GRUB_DEFAULT 也可以写为 GRUB_DEFAULT=gnulinux-5.15.0-105-generic-advanced-a6097def-7c8d-4ed3-91c4-83e0916f1a03 这样更稳妥