修改GRUB启动顺序需改/etc/default/grub中GRUB_DEFAULT值(推荐用菜单名如"Ubuntu, with Linux 6.5.0-15-generic"避免序号错位),再运行sudo update-grub(Debian/Ubuntu)或sudo grub2-mkconfig -o /boot/grub2/grub.cfg(RHEL系),切勿手动编辑grub.cfg。

GRUB启动项顺序怎么改
直接改 /etc/default/grub 里的 GRUB_DEFAULT 值,再运行 sudo update-grub(Debian/Ubuntu)或 sudo grub2-mkconfig -o /boot/grub2/grub.cfg(RHEL/CentOS/Fedora)。别手动编辑 grub.cfg —— 它是自动生成的,一更新就覆盖。
常见错误:把 GRUB_DEFAULT=2 理解成“第三个菜单项”,其实它从 0 开始数;但更稳妥的是用菜单项名,比如 GRUB_DEFAULT="Ubuntu, with Linux 6.5.0-15-generic",避免因内核增减导致序号错位。
-
GRUB_DEFAULT=0:默认启动第一个可见菜单项(含子菜单) -
GRUB_DEFAULT=saved:配合grub-reboot或grub-set-default使用,适合临时切换 - 子菜单项(如“Advanced options for Ubuntu”)里的内核不能直接用数字索引,得写全名或用
saved+grub-reboot
怎么临时只改下一次启动项
用 grub-reboot,它只影响下一次重启,之后自动恢复默认。比改配置快,也更安全。
使用场景:升级内核后想先试跑新内核,但不确定是否稳定;或者进 recovery 模式修完问题,不想下次还卡在那里。
- 先查可用菜单名:
grep -i "menuentry" /boot/grub/grub.cfg | cut -d "'" -f2 - 设下一次启动项:
sudo grub-reboot "Ubuntu, with Linux 6.5.0-15-generic" - 必须紧接着重启才生效,关机再开机也有效,但执行后又手动选了别的项,就会被覆盖
为什么改了 GRUB_DEFAULT 却没生效
大概率是忘了重新生成配置文件,或者生成目标路径错了。GRUB 不读 /etc/default/grub 本身,只读最终的 grub.cfg。
典型现象:编辑完 /etc/default/grub,sudo update-grub 显示 “Generating grub configuration file ... done”,但重启还是老顺序 —— 这时要确认 grub.cfg 是否真被写入。
- 检查输出里有没有警告,比如 “Warning: Setting GRUB_TIMEOUT to a non-zero value...”(这不影响顺序,但提示你可能漏了其他配置)
- 确认
grub.cfg时间戳是否更新:ls -l /boot/grub/grub.cfg - RHEL系用户注意:
update-grub不存在,必须用grub2-mkconfig,且输出路径通常是/boot/grub2/grub.cfg,不是/boot/grub/grub.cfg - 某些双系统(尤其Win+Linux)启用了 Fast Startup 或 Secure Boot,可能导致 GRUB 不加载或跳过菜单 —— 这不是配置问题,得进 BIOS/UEFI 关掉 Fast Startup
GRUB菜单不显示、秒过怎么办
本质是超时时间太短或隐藏了菜单。核心参数是 GRUB_TIMEOUT 和 GRUB_TIMEOUT_STYLE。
常见表现:屏幕闪一下就进系统,根本来不及选;或者只有按 Shift 才出现菜单(这是旧版 GRUB 的 fallback 行为,新版本默认禁用)。
-
GRUB_TIMEOUT=10:显示菜单 10 秒,设为 -1 表示无限等待(需人工选择) -
GRUB_TIMEOUT_STYLE=menu:强制显示菜单(默认可能是hidden或countdown) - 改完必须
sudo update-grub或对应命令,否则无效 - 部分笔记本/UEFI 固件会拦截 GRUB 菜单,即使配置正确也不显示 —— 这时候只能靠
grub-reboot临时切系统
最麻烦的情况是 GRUB 配置和 UEFI 启动顺序打架:比如你把 GRUB 设为默认,但 BIOS 里 Windows Boot Manager 排第一,那 GRUB 根本没机会运行。这时候得进固件设置(通常开机按 F2/F10/DEL),手动调高 “ubuntu” 或 “grubx64.efi” 的启动优先级。










