grub_default推荐用精确字符串名称而非数字索引,因内核更新易导致索引偏移;字符串必须与grub.cfg中menuentry引号内内容逐字一致,包括空格、括号及设备路径(如/dev/nvme0n1p1),写错将导致默认项失效。

GRUB_DEFAULT 用数字索引还是字符串名称?
必须用数字索引(如 GRUB_DEFAULT=4)或精确匹配的字符串(如 GRUB_DEFAULT="Windows Boot Manager (on /dev/nvme0n1p1)"),不能混用。数字索引最稳定,但前提是启动项顺序不随内核更新变动;字符串名称更语义化,但括号内设备路径必须完全一致——/dev/sda1 和 /dev/nvme0n1p1 是不同设备,写错会导致默认项失效。
常见错误现象:update-grub 成功但重启后仍进 Ubuntu,大概率是字符串里设备名或空格多了一个、少了一个,或者用了中文括号。
- 先用
grep menuentry /boot/grub/grub.cfg | cat -n查清实际顺序和完整名称 - 若 Windows 条目显示为
menuentry 'Windows Boot Manager (on /dev/nvme0n1p1)',就照抄单引号内的全部内容,包括括号和空格 - 改完
/etc/default/grub后,必须执行sudo update-grub,否则修改不生效
GRUB_TIMEOUT 设为 0 还是 1?
GRUB_TIMEOUT=0 表示跳过菜单直接启动默认项,没有交互机会;GRUB_TIMEOUT=1 是最小可操作值,能让你在开机瞬间按 Shift 或 Esc 强制唤出菜单。设为 0 虽快,但一旦默认项损坏(比如 Windows EFI 文件被误删),系统将黑屏卡死,无法手动干预。
性能影响几乎为零,但容错性差很多。日常使用建议设为 1 或 3,既省时间又留退路。
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
-
GRUB_TIMEOUT_STYLE=hidden配合GRUB_TIMEOUT=1可隐藏倒计时,只在按键时显示菜单 - 不要设
GRUB_TIMEOUT=0除非你确定永不需修 Windows 或调试 GRUB - 修改后务必
sudo update-grub,否则超时设置不会刷新
为什么 update-grub 后 grub.cfg 没变?
/boot/grub/grub.cfg 是自动生成文件,不是配置源。它由 /etc/default/grub 和 /etc/grub.d/ 下所有可执行脚本共同生成。如果你直接编辑了 grub.cfg,下次内核更新或运行 update-grub 会立刻被覆盖——这也是为什么所有教程都强调“别动它”。
真正决定行为的是 /etc/default/grub 的参数和 /etc/grub.d/40_custom 里的自定义条目。如果发现修改没生效,优先检查:
- 是否漏掉
sudo update-grub步骤(最常见) -
GRUB_DEFAULT值是否超出当前菜单总项数(比如只有 3 个项却设成 5) -
/etc/grub.d/下有无冲突脚本(例如第三方工具添加的重复 Windows 条目)
UEFI 引导顺序和 GRUB 是两套机制
BIOS/UEFI 层面的引导顺序(用 efibootmgr 看到的 BootOrder)控制的是“先加载哪个 bootloader”,而 GRUB 的 GRUB_DEFAULT 控制的是“在 GRUB 菜单里默认选哪个 OS”。两者不冲突,但优先级不同:UEFI 决定是否进 GRUB,GRUB 决定进哪个系统。
例如,你把 UEFI 引导顺序设为 0001,0002(0001 是 Windows Boot Manager,0002 是 Ubuntu),那电脑根本不会启动 GRUB,直接进 Windows —— 此时改 GRUB_DEFAULT 完全无效。
- 确认你在 BIOS/UEFI 中已将 Ubuntu 的 EFI 条目(通常是
ubuntu或grub)设为第一启动项 - 用
sudo efibootmgr核对当前顺序,避免和 GRUB 配置逻辑打架 - 双系统环境下,99% 的场景只需调 GRUB,不用碰 UEFI 引导顺序










