填菜单名更稳,因数字索引易随内核增减或双系统扫描顺序变化而错位;应使用英文双引号包裹、与grub.cfg中完全一致的完整菜单名,如grub_default="windows boot manager (on /dev/nvme0n1p1)"。

GRUB_DEFAULT 该填数字还是菜单名
填菜单名更稳,数字容易错位。GRUB 默认用 GRUB_DEFAULT=0 表示第一个可见菜单项,但“第一个”会随内核更新、os-prober 扫描顺序变化而变动——比如你刚装了个新内核,Ubuntu 的主启动项可能从第 0 项变成第 1 项,原来写死的 GRUB_DEFAULT=2 就可能指向 Recovery 模式甚至 Windows 子菜单里的某个隐藏项。
稳妥做法是先查真实菜单名:
grep -i "menuentry" /boot/grub/grub.cfg | cut -d "'" -f2
输出类似:
Ubuntu Advanced options for Ubuntu Windows Boot Manager (on /dev/nvme0n1p1)
然后在 /etc/default/grub 中直接写:
GRUB_DEFAULT="Windows Boot Manager (on /dev/nvme0n1p1)"
- 必须用英文双引号包裹,且内容要和
grub.cfg里完全一致(包括空格和括号) - 如果菜单名含单引号或特殊字符,改用
GRUB_DEFAULT=menuentry_id形式(需先用grep -A1 "menuentry" /boot/grub/grub.cfg查 ID) - 填数字仅适用于临时调试,且得确认当前没隐藏子菜单(
GRUB_HIDDEN_TIMEOUT关闭时才可靠)
update-grub 为什么执行了却没生效
最常见原因是没真正写入 /boot/grub/grub.cfg,或者写到了错误路径。GRUB 不读 /etc/default/grub,只认最终生成的 grub.cfg 文件。
检查步骤:
- 运行
sudo update-grub后,看终端是否输出Generating grub configuration file ... done;若报错(如Permission denied或No space left on device),得先解决 - 确认
grub.cfg时间戳已更新:ls -l /boot/grub/grub.cfg - RHEL/CentOS/Fedora 系统不用
update-grub,得用sudo grub2-mkconfig -o /boot/grub2/grub.cfg,路径和命令都不同 - 某些 OEM 机器(如 Dell、Lenovo)启用了 Secure Boot + Fast Startup,会导致 GRUB 菜单被跳过——这时改配置无效,得进 BIOS 关掉 Fast Startup 或调高 GRUB_TIMEOUT
想让下次重启进 Windows,但之后自动切回 Ubuntu
用 grub-reboot,它只影响下一次启动,不改默认项,适合测试或临时切换。
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
操作流程:
- 先确认 Windows 菜单项全名:
grep -i "windows" /boot/grub/grub.cfg | head -n1 | cut -d "'" -f2 - 设下一次启动目标:
sudo grub-reboot "Windows Boot Manager (on /dev/nvme0n1p1)" - 立刻重启:
sudo reboot(关机再开机也生效,但如果中间手动选了别的系统,这个设定会被覆盖)
注意:grub-reboot 和 grub-set-default 都依赖 GRUB_SAVEDEFAULT=true 才能持久化“上次选择”,但 grub-reboot 本身不需要该配置。
修改后 GRUB 菜单不显示,直接进 Windows
不是配置错了,是 BIOS/UEFI 启动顺序被覆盖了。GRUB 是一个 EFI 应用,它的优先级取决于固件中 “Boot Order” 列表里 ubuntu 和 Windows Boot Manager 的相对位置。
典型现象:
- 明明改了
GRUB_DEFAULT并update-grub成功,但开机黑屏几秒就进 Windows,压根不出现 GRUB 菜单 -
efibootmgr -v显示Boot0001* Windows Boot Manager排在Boot0002* ubuntu前面
解决方法只有两个:
- 进 BIOS/UEFI(开机狂按 F2/Del/F12),把
ubuntu条目拖到Windows Boot Manager上方 - 用命令修复(需在 Ubuntu 中以 root 运行):
sudo efibootmgr --bootorder 0002,0001(其中 0002 是 ubuntu 的 BootXXXX 编号)
别指望靠改 /etc/default/grub 让 GRUB 菜单重新出现——菜单都不加载,配置根本没机会执行。










