优先用名字,如GRUB_DEFAULT="Windows Boot Manager (on /dev/nvme0n1p1)";数字索引易因系统变动失效,名字匹配更稳定;改完/etc/default/grub后必须运行sudo update-grub生效;启用saved-entry需同时设置GRUB_DEFAULT=saved和GRUB_SAVEDEFAULT=true。

GRUB_DEFAULT 用数字还是用名字?
优先用名字,比如 GRUB_DEFAULT="Windows Boot Manager (on /dev/nvme0n1p1)"。数字索引(如 GRUB_DEFAULT=4)看似简单,但只要系统更新内核、装新驱动、或插拔硬盘,/boot/grub/grub.cfg 里 menuentry 的顺序就可能变——上次是第 4 项,下次可能变成第 5 或第 3,导致默认启动错乱。
名字匹配靠的是 grub-mkconfig 生成时写死的字符串,只要 Windows 分区没重装、EFI 路径没动,它就稳定。确认名字的方法只有一条:grep "menuentry" /boot/grub/grub.cfg
在输出里找带 Windows、Boot Manager 的那行,整段复制进去,前后加英文双引号。
为什么改完 /etc/default/grub 还不生效?
因为 /etc/default/grub 只是“配方”,不是“成品”。GRUB 不会实时读它,而是靠 update-grub 把它和 /etc/grub.d/ 下的脚本一起编译成最终的 /boot/grub/grub.cfg。
常见漏掉的操作:
- 改完
/etc/default/grub后忘记运行sudo update-grub - 运行了命令但没看到
Generating grub configuration file ... done结尾(说明执行失败,可能是权限或磁盘挂载问题) - 误以为改完就能立刻生效,其实得重启才触发新配置
想让 GRUB 记住上次选的系统怎么办?
这不是“记住偏好”,而是靠 GRUB 自身的 saved-entry 机制。需要两步配合:
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
- 把
GRUB_DEFAULT设为saved,即:GRUB_DEFAULT=saved - 启用保存开关:
GRUB_SAVEDEFAULT=true
这两行必须同时存在,缺一不可。否则即使你手动选了 Windows,下次还是回退到初始默认项。设置完仍要 sudo update-grub。
注意:这个机制依赖 /boot/grub/grubenv 文件,如果它损坏或被清空(比如某些恢复工具操作后),saved 行为就会失效,得手动重设一次再触发保存。
修改顺序 ≠ 修改默认项,别混淆
真正影响菜单显示顺序的是 /etc/grub.d/ 下脚本的执行顺序,比如 30_os-prober 探测 Windows、10_linux 列出 Ubuntu 内核。这些脚本名前的数字决定它们在 grub.cfg 中的排列位置。
如果你发现 Windows 条目总排在最后,又不想改默认项,可以复制一份 30_os-prober 改名为 05_os-prober(数字更小),再 sudo update-grub。但要注意:
- os-prober 本身有依赖逻辑,强行提前提前可能导致探测失败
- 多数用户根本不需要动这里,改 GRUB_DEFAULT 就够了
- 真正容易出问题的是 EFI 分区未挂载或 os-prober 被禁用(Ubuntu 22.04+ 默认关闭),这时 grep menuentry 根本看不到 Windows 条目,得先检查并启用它

















