必须运行 update-grub(ubuntu/debian)或 grub2-mkconfig(rhel/centos/fedora)更新配置,否则修改 /etc/default/grub 无效;可用 grep 命令查看真实菜单项及索引,grub_default 推荐用精确匹配的完整菜单名,设为 saved 需配合 grub_savedefault=true,grub_timeout=-1 才无限等待,调整菜单顺序需重命名 /etc/grub.d/ 下脚本并确保 os-prober 启用。

GRUB 默认启动项和等待时间改不了?不是配置没写对,而是漏了关键一步:改完 /etc/default/grub 必须运行 update-grub(Debian/Ubuntu)或 grub2-mkconfig -o /boot/grub2/grub.cfg(RHEL/CentOS/Fedora),否则所有修改都不生效。
怎么查当前 GRUB 菜单里有哪些启动项、顺序是什么
别靠肉眼数菜单——grub.cfg 是自动生成的,显示顺序和实际索引可能不一致。先看真实加载项:
-
grep -E "menuentry |submenu " /boot/grub/grub.cfg | sed "s/^.*['\"]\([^'\"]*\)['\"].*$/\1/" | nl—— 输出带编号的菜单名,编号从 1 开始,但 GRUB 内部索引从 0 开始(即第 1 行对应索引 0) - 注意:带
submenu的行是子菜单(如 “Advanced options for Ubuntu”),它本身不可启动,不参与默认选择 - 用
sudo grub-editenv list查当前生效的默认项,输出可能是saved_entry=0或saved_entry=Windows Boot Manager (on /dev/nvme0n1p1)
GRUB_DEFAULT 用数字索引还是菜单名更安全
用数字(如 GRUB_DEFAULT=2)最简单,但极容易失效:内核更新后,Ubuntu 子菜单里新增一个 menuentry,整个顶级菜单索引就偏移了。
- 推荐用完整菜单名:
GRUB_DEFAULT="Windows Boot Manager (on /dev/nvme0n1p1)",必须和grub.cfg中menuentry引号内字符串**逐字一致**(空格、括号、设备路径都不能差) - 如果菜单名含单引号,比如
Ubuntu's recovery mode,要写成GRUB_DEFAULT="Ubuntu\'s recovery mode" - 想让下次重启自动回到上次手动选的系统?设
GRUB_DEFAULT=saved,并确保同时有GRUB_SAVEDEFAULT=true
为什么改了 GRUB_TIMEOUT 还是秒进系统
GRUB_TIMEOUT=0 并不等于“完全隐藏菜单”——在 UEFI 系统上,它只是跳过倒计时,仍可能闪出菜单;而 GRUB_TIMEOUT=-1 才是真正无限等待(需手动按键)。
- 常见误区:只改
GRUB_TIMEOUT却没配GRUB_TIMEOUT_STYLE=menu,导致即使设了 30 秒,菜单也不显示(尤其在某些笔记本 BIOS 设置下) - UEFI 模式下,如果启用了
GRUB_TERMINAL_OUTPUT=console,也可能压制图形菜单显示 - 改完记得检查是否启用了
GRUB_HIDDEN_TIMEOUT,这个参数会覆盖GRUB_TIMEOUT的行为
如何让 Windows 启动项排在 GRUB 菜单最前面
GRUB 菜单项顺序由 /etc/grub.d/ 下脚本执行顺序决定,不是靠 GRUB_DEFAULT 控制的。
- 默认
30_os-prober负责探测 Windows,排在10_linux之后,所以 Windows 总在 Linux 后面 - 把
30_os-prober改名为05_os-prober:sudo mv /etc/grub.d/30_os-prober /etc/grub.d/05_os-prober - 确认
os-prober已启用:grep GRUB_DISABLE_OS_PROBER /etc/default/grub应为false(Ubuntu 22.04+ 默认是true) - 改完必须运行
sudo update-grub,否则新顺序不会写入grub.cfg
最容易被忽略的是:所有通过编辑 /etc/default/grub 做的修改,都依赖 update-grub 重新生成 grub.cfg;而 grub-set-default 这类命令是直接写 /boot/grub/grubenv,绕过了配置文件重生成流程——两者机制不同,混用时要注意优先级。











