填菜单名更稳妥,因数字索引易因内核增减或双系统变动而偏移;必须用grep查出精确菜单名(含括号、空格、设备路径),严格匹配写入GRUB_DEFAULT,并运行update-grub或grub2-mkconfig生效。

GRUB_DEFAULT 该填数字还是菜单名
填菜单名更稳妥,尤其在双系统或频繁更新内核的场景下。填 GRUB_DEFAULT=2 看似简单,但只要新增一个内核、或 Windows 引导项位置变动,索引就偏移,下次重启可能进错系统。
正确做法是用 grep -E "menuentry " /boot/grub/grub.cfg | sed "s/^.*['\"]\([^'\"]*\)['\"].*$/\1/" | nl 查出所有可启动项(注意过滤掉 submenu 行),再复制完整名称,比如 "Windows Boot Manager (on /dev/nvme0n1p1)" —— 括号、空格、设备路径必须一字不差。然后写进 /etc/default/grub:
GRUB_DEFAULT="Windows Boot Manager (on /dev/nvme0n1p1)"
如果菜单名含单引号(如 Ubuntu's recovery mode),得写成 GRUB_DEFAULT="Ubuntu\'s recovery mode"。
改完配置为什么没生效
90% 是因为漏了生成配置这步。GRUB 不读 /etc/default/grub,只认最终的 /boot/grub/grub.cfg(Ubuntu/Debian)或 /boot/grub2/grub.cfg(RHEL/CentOS/Fedora)。
- Ubuntu/Debian:必须运行
sudo update-grub - RHEL/CentOS/Fedora:必须运行
sudo grub2-mkconfig -o /boot/grub2/grub.cfg - 检查是否真写入:执行命令后
ls -l /boot/grub/grub.cfg,看时间戳是否更新 - UEFI 系统还要确认 EFI 分区挂载正常,
/boot/efi可写
常见假象:update-grub 显示 “done”,但 grub.cfg 时间没变 —— 很可能是权限错误或目标路径写错(比如 RHEL 用户误用了 /boot/grub/grub.cfg)。
想临时换一次启动项怎么办
用 grub-reboot,不用改配置、不用重生成文件,只影响下一次重启。
先查可用项:grep -i "menuentry" /boot/grub/grub.cfg | cut -d "'" -f2
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
再设下一次目标:sudo grub-reboot "Ubuntu, with Linux 6.5.0-15-generic"
注意:grub-reboot 的效果会被你手动在 GRUB 菜单里选其他项覆盖;关机再开机仍有效,但若执行后又进 BIOS 或手动选了别的项,就失效了。
配套需设 GRUB_DEFAULT=saved,否则 grub-reboot 不起作用。
菜单不显示或秒进系统
GRUB_TIMEOUT=0 不等于“隐藏菜单”——它只是跳过倒计时,UEFI 下仍可能闪一下;真正无限等待要设 GRUB_TIMEOUT=-1,且必须配合 GRUB_TIMEOUT_STYLE=menu,否则即使设了 30 秒,菜单也不出现。
另外检查有没有启用 GRUB_HIDDEN_TIMEOUT,它会直接压制倒计时逻辑;GRUB_TERMINAL_OUTPUT=console 在某些 UEFI 固件下也会禁用图形菜单。
双系统用户还要留意 Windows 的 Fast Startup 和 Secure Boot 是否干扰 GRUB 加载 —— 这类问题改配置无效,得进 BIOS 关闭 Fast Startup 或调整 Secure Boot 策略。

















