必须修改 /etc/default/grub 并执行 grub2-mkconfig 才生效,直接改 /boot/grub2/grub.cfg 会被覆盖;UEFI 系统还需确保 ESP 分区挂载到 /boot/efi。

GRUB_TIMEOUT 改对了才生效,直接改 /boot/grub2/grub.cfg 是白忙活——它每次更新都会被覆盖。
改 /etc/default/grub 才是正解
/etc/default/grub 是 GRUB2 的源配置文件,所有持久化修改必须从这里入手。
常见错误是跳过这步,直接去改 /boot/grub2/grub.cfg,结果重启后变回原样。
- 打开文件:
sudo vi /etc/default/grub - 找到
GRUB_TIMEOUT=5这行,改成你需要的秒数(比如GRUB_TIMEOUT=30) - 若想隐藏菜单但保留按键唤出能力,加一行:
GRUB_TIMEOUT_STYLE="hidden" - 保存退出后,必须执行:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg - UEFI 系统(常见于较新服务器或品牌机)可能需额外指定路径:
sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
grub2-mkconfig 不生效?检查 EFI 分区挂载状态
很多“改了不生效”的 case 其实是 UEFI 系统没把 ESP(EFI System Partition)挂载到 /boot/efi。
- 运行
ls /boot/efi/EFI/,如果返回空或报错No such file or directory,说明 ESP 没挂载 - 查看实际 ESP 设备:
sudo blkid -t TYPE="vfat" - 临时挂载(假设设备是
/dev/sda1):sudo mount /dev/sda1 /boot/efi - 再跑一次
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg - 为永久生效,把挂载项写进
/etc/fstab(格式类似:/dev/sda1 /boot/efi vfat umask=0077 0 2)
改完还是只停 0 秒?可能是 GRUB_TIMEOUT_STYLE 干扰
GRUB_TIMEOUT_STYLE 控制菜单行为逻辑,和 GRUB_TIMEOUT 是联动关系:
-
GRUB_TIMEOUT_STYLE="menu"(默认):显示菜单 + 倒计时 -
GRUB_TIMEOUT_STYLE="hidden":不显示菜单,但按住Shift或Esc可呼出 -
GRUB_TIMEOUT_STYLE="countdown":只显示倒计时数字,无菜单 - 如果设了
GRUB_TIMEOUT=0但又没配GRUB_TIMEOUT_STYLE,GRUB2 会 fallback 到hidden行为,看起来像“没反应”
验证当前生效值:grep -E "^(GRUB_TIMEOUT|GRUB_TIMEOUT_STYLE)" /etc/default/grub
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离
临时调试:直接改 grub.cfg 能看到效果,但别依赖它
仅用于快速验证或紧急场景(比如系统卡在启动前无法进 shell):
-
sudo vi /boot/grub2/grub.cfg - 搜索
timeout=,你会看到两处:-
if [ x$feature_timeout_style = xy ] ; then块内的set timeout=5 -
else分支里的set timeout=5
-
- 两个都改,比如全改成
set timeout=10 - 保存后重启——立刻生效,但下次
grub2-mkconfig或内核更新就会丢
真正要命的点不是改哪行,而是改完没重生成配置,或者 UEFI 下压根没挂载 ESP。这两处漏掉一个,改十次都白搭。










