最可靠的方式是结合 grub2-editenv 和 /etc/default/grub 两处信息,因为实际生效的是 GRUB 运行时保存的状态,而非配置文件里的静态设置;运行 sudo grub2-editenv list 查看 saved_entry 值,再对照 /etc/default/grub 中的 GRUB_DEFAULT 和 GRUB_SAVEDEFAULT 设置,并用 awk 命令解析 grub.cfg 确认菜单项顺序。

可以直接查看 GRUB 的环境变量和配置文件,确认当前默认启动项。最可靠的方式是结合 grub2-editenv 和 /etc/default/grub 两处信息,因为实际生效的是 GRUB 运行时保存的状态,而非配置文件里的静态设置。
查看当前生效的默认启动项
运行以下命令:
sudo grub2-editenv list
输出中重点关注 saved_entry=... 这一行。如果看到类似:
saved_entry=6752e052c66d4923aeeb3f42f123175e-4.18.0-348.7.1.el8_5.x86_64
说明系统正使用“按内核 ID 保存”的方式记住上次选中的项;若显示 saved_entry=0 或数字,则表示按菜单序号(从 0 开始)固定选择第几项。
查看 GRUB 配置中设定的默认行为
打开主配置文件:
cat /etc/default/grub
检查这两项:
-
GRUB_DEFAULT:值可能是
0、saved或一个具体菜单名(如"CentOS Linux (5.14.0-427.13.1.el9_4.x86_64) 9") -
GRUB_SAVEDEFAULT:若为
true,且GRUB_DEFAULT=saved,则每次手动选择都会更新saved_entry
列出所有可用的启动菜单项
执行命令可直观看到当前 GRUB 菜单里有哪些内核或系统:
sudo awk -F\' '/menuentry / {print $2}' /boot/grub2/grub.cfg | nl -w3 -s'. '
输出类似:
1. CentOS Linux (5.14.0-427.13.1.el9_4.x86_64) 9 2. CentOS Linux (4.18.0-348.7.1.el8_5.x86_64) 8 3. CentOS Linux (0-rescue-6752e052c66d4923aeeb3f42f123175e) 9
注意:序号从 1 开始显示,但 GRUB 内部索引从 0 开始。若 saved_entry=1,实际对应第二项(即 4.18.0 内核)。
验证是否为 UEFI 或 BIOS 模式影响路径
多数现代服务器/桌面用 UEFI,配置文件实际读取的是:
/boot/efi/EFI/redhat/grub.cfg
或(取决于发行版):
/boot/efi/EFI/centos/grub.cfg
可通过以下命令确认引导模式:
ls /sys/firmware/efi/efivars &>/dev/null && echo "UEFI" || echo "BIOS"
UEFI 系统下,grub2-editenv 操作的是 EFI 分区中的环境变量,路径可能为 /boot/efi/EFI/redhat/grubenv。


















