Windows + Ubuntu 双系统开机直接进 Windows 的解决记录
问题
安装 Ubuntu + Windows 双系统后:
- 按
F12可以手动选择 Ubuntu - 选择 Ubuntu 后,GRUB 可以正常显示 Ubuntu 和 Windows
- 但如果开机不操作,就会直接进入 Windows
说明:
Ubuntu 正常 GRUB 正常 Windows 正常真正的问题是:
BIOS/UEFI 每次重启都会把 Windows Boot Manager 放到第一启动项。
尝试过的方法
1. 修改 GRUB 菜单
编辑:
sudonano/etc/default/grub修改:
GRUB_TIMEOUT_STYLE=menu GRUB_TIMEOUT=10然后:
sudoupdate-grub这一步成功,GRUB 可以显示 Ubuntu 和 Windows。
2. Ubuntu 中修改启动顺序
查看:
sudoefibootmgr修改 Ubuntu 为第一启动项:
sudoefibootmgr-o0003,0000,0001虽然当时修改成功,但重启后又变成 Windows 第一。
所以失败原因是:
BIOS 重启后又把 Windows Boot Manager 调回第一位3. Windows 中修改 UEFI 启动顺序
管理员 CMD:
bcdedit /enum firmware然后把 Ubuntu 调到第一位。
修改成功,但重启后还是被恢复成:
Windows Boot Manager 第一所以再次确认:
这台电脑的 BIOS 会自动优先 Windows Boot Manager。
最终成功的方法
既然 BIOS 一定要启动 Windows Boot Manager,那就不再修改“谁排第一”。
而是修改 Windows Boot Manager 实际加载的 EFI 文件。
修改前先备份:
bcdedit /export C:\bcd-backup然后执行:
bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi检查:
bcdedit /enum {bootmgr}看到:
path \EFI\ubuntu\shimx64.efi修改成功。
原理
原来的启动过程:
BIOS ↓ Windows Boot Manager ↓ Windows修改后:
BIOS ↓ Windows Boot Manager 入口 ↓ Ubuntu shim ↓ GRUB ↓ 选择 Ubuntu / Windows也就是说:
BIOS 还是认为自己在启动 Windows Boot Manager,但实际上这个入口被改成先加载 Ubuntu 的 GRUB。
这样就绕过了 BIOS 强制 Windows 第一的问题。
目前的小问题
进入 GRUB 前会短暂出现类似:
Invalid Parameter falling back to default loader停留几秒后仍然可以正常进入 GRUB。
目前不影响正常使用,所以暂时不继续修改。
恢复方法
如果以后想恢复成开机直接进入 Windows,在 Windows 管理员 CMD 执行:
bcdedit /set {bootmgr} path \EFI\Microsoft\Boot\bootmgfw.efi然后检查:
bcdedit /enum {bootmgr}看到:
path \EFI\Microsoft\Boot\bootmgfw.efi就恢复完成。
总结
这次问题的核心:
BIOS 总是自动把 Windows Boot Manager 放第一普通修改启动顺序的方法都会被恢复。
最终解决思路:
不再改启动顺序 而是让 Windows Boot Manager 入口先加载 Ubuntu GRUB最终实现:
开机 ↓ GRUB ↓ 选择 Ubuntu / Windows