唯一推荐的持久化修改方式是修改 /etc/default/grub 中的 grub_timeout 并运行 grub2-mkconfig 生成新配置,直接编辑 /boot/grub2/grub.cfg 会被内核更新等操作覆盖。

修改 /etc/default/grub 中的 GRUB_TIMEOUT
这是唯一推荐的持久化修改方式。直接改这个文件,再生成配置,才能确保下次内核更新、系统升级后依然有效。
用 root 权限编辑:sudo vi /etc/default/grub
找到这行(通常在开头附近):GRUB_TIMEOUT=5
改成你想要的秒数,比如 10 秒:GRUB_TIMEOUT=10
注意:
- 设为 0 表示不等待、直接启动默认项(但菜单仍可能闪现)
- 若想彻底隐藏菜单且需手动触发(如按 Esc),可加一行:GRUB_TIMEOUT_STYLE="hidden"
- 不要删掉这行,只改数值;空值或非数字会导致 fallback 到 5 秒
必须运行 grub2-mkconfig 生效
改完 /etc/default/grub 后,grub.cfg 不会自动更新——它只是个生成结果,不是源配置。
执行这条命令重写启动配置:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离
常见错误场景:
- UEFI 系统(尤其是 Dell/HP 服务器或某些笔记本):实际 EFI 分区路径可能是 /boot/efi/EFI/centos/grub.cfg,此时得指定:sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
- 执行后提示 error: cannot open directory:说明 /boot/efi 未挂载,先 mount /boot/efi
- 输出里没看到 “done” 或报错“no such file”,检查 /boot/grub2 是否存在、权限是否为 root:root
验证修改是否真正生效
别急着重启,先确认生成的 grub.cfg 里确实写了新 timeout:
sudo grep -E "set timeout=|GRUB_TIMEOUT" /boot/grub2/grub.cfg
你应该看到类似:set timeout=10
如果还是 set timeout=5,说明 grub2-mkconfig 没成功执行,或写入路径错了。
也可以临时看当前环境变量:sudo grub2-editenv list | grep timeout(但该命令不显示 GRUB_TIMEOUT 值,仅用于调试 saved_entry)
真正生效必须重启;BIOS/UEFI 固件层有时会缓存旧配置,冷重启比热重启更可靠。
为什么不能直接改 /boot/grub2/grub.cfg
这个文件是自动生成的,人工修改会被以下任一操作覆盖:
- 内核升级(yum update kernel)
- 运行 grub2-mkconfig(哪怕没改 /etc/default/grub)
- 安装新 bootloader 或第三方工具(如某些虚拟化平台管理脚本)
有人试过改完立刻 reboot,发现又变回 5 秒——大概率就是被后续某个 yum update 触发了自动重生成。
真要临时应急(比如进不了系统、等不及重装),可以改它,但务必同步备份:sudo cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.manual-backup
改完记得加注释,比如在 set timeout=... 上一行写 # MANUAL OVERRIDE — DO NOT AUTO-GENERATE,提醒自己和他人。










