开机直接进Windows说明GRUB未被UEFI调用,根源是启动顺序中“Windows Boot Manager”排第一或“ubuntu”项被移出NVRAM;需进BIOS确认并调整UEFI启动项顺序,或用efibootmgr重建。

开机直接进Windows,说明GRUB没被UEFI固件调用
这不是GRUB文件丢了,而是UEFI固件的启动顺序里,“Windows Boot Manager”排在了第一位,甚至可能把“ubuntu”或“grubx64.efi”这一项完全踢出了NVRAM。Ubuntu安装时确实写进了ESP分区(/EFI/ubuntu/grubx64.efi或/EFI/ubuntu/shimx64.efi),但固件根本没去加载它。
最快速验证方式:开机时狂按F2/F10/DEL(看主板LOGO提示),进BIOS/UEFI设置 → 找到【Boot Option Priorities】或【UEFI Boot Order】 → 拉列表看有没有“ubuntu”“grub”或“shimx64.efi”字样。有,就只是顺序问题;没有,才需要重建启动项。
- 某些品牌机(如极光Pro、机械革命)BIOS不支持拖拽排序,必须用F5/F6逐级上移
- 部分UEFI固件会把“Windows Boot Manager”硬编码为默认项,即使你手动调高ubuntu优先级,下次Windows更新后又自动回落
- 别信“重启进Windows再运行
bcdedit就能修GRUB”——bcdedit只管Windows BCD,对UEFI NVRAM里的Linux启动项无效
用efibootmgr从Linux Live USB直接修复NVRAM
如果你能用Ubuntu或麒麟Live USB启动进试用桌面,这是最干净、最可控的方式。它绕过Windows、不依赖BCD,直接操作UEFI固件的启动项数据库。
先确认ESP分区位置:lsblk -f | grep vfat,通常为/dev/nvme0n1p1或/dev/sda1;再挂载:sudo mount /dev/nvme0n1p1 /mnt;然后检查GRUB文件是否还在:ls /mnt/EFI/ubuntu/,应能看到grubx64.efi或shimx64.efi。
- 若文件存在,执行:
sudo efibootmgr -c -d /dev/nvme0n1 -p 1 -L "ubuntu" -l "\EFI\ubuntu\grubx64.efi"(注意-d是磁盘,-p是ESP分区号) - 若用Secure Boot,建议用
shimx64.efi:-l "\EFI\ubuntu\shimx64.efi" - 执行后用
efibootmgr不带参数查看结果,新条目应显示为Boot000X*,星号表示已激活 - 某些机器需加
-w参数强制写入(如ASUS部分主板)
update-grub没用,因为问题不在grub.cfg生成逻辑
很多人一出问题就本能地进Linux系统跑sudo update-grub,输出一堆“Found linux image…”却始终不提Windows——这很正常,因为update-grub只负责扫描本机已挂载的Windows分区并写入/boot/grub/grub.cfg,它完全不碰UEFI启动顺序或NVRAM。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
换句话说:就算grub.cfg里明明写着Windows引导项,只要UEFI固件压根不加载grubx64.efi,菜单就永远出不来。
-
os-prober是否启用不影响此问题——它只影响GRUB菜单内容,不影响GRUB能否被调用 - 如果
update-grub连Linux内核都扫不出来,那才是/boot挂载异常或grub-pc包损坏,和当前问题无关 - 强行重装
grub-efi-amd64包(如sudo apt install --reinstall grub-efi-amd64)也没用,因为ESP里文件本来就有,缺的是NVRAM注册
Windows端只能临时干预,不能替代UEFI层修复
在Windows里用bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi,看似让Windows Boot Manager“跳转”到GRUB,实则是在BCD里伪造了一个链式入口。它依赖Windows Boot Manager仍被UEFI调用的前提——一旦某次Windows更新重置NVRAM,这条路径就失效。
更麻烦的是:这个命令对Secure Boot开启的机器大概率报错,因为grubx64.efi未签名,而Windows Boot Manager不允许加载未签名EFIs。
- EasyUEFI比
bcdedit可靠,因为它直接读写NVRAM,但前提是Windows能识别ESP分区(某些OEM预装Win11机器会隐藏ESP) - Windows“启动修复”功能90%情况下只会恢复Windows自己的启动项,对Linux无感
- 真正要一劳永逸,必须确保UEFI固件本身知道“ubuntu”这个启动项存在且可执行——其他都是补丁
最容易被忽略的一点:ESP分区是否被Windows误标为“恢复分区”或格式化过。有些用户在磁盘管理里看到100MB FAT32分区就手贱右键“格式化”,结果/EFI/ubuntu/整个目录消失。这时候efibootmgr会报“no such file or directory”,得先用Live USB重装GRUB到ESP,再注册启动项。

















