Ubuntu 修复 Windows 引导:双系统开机进不去 Windows 的完整解决方案
目标关键词:Ubuntu 修复 Windows 引导
很多人装了 Ubuntu 和 Windows 双系统后,都会遇到一个很常见的问题:
开机只剩 Ubuntu,Windows 不见了;或者更新 Ubuntu 后,Windows 引导项消失;再或者 BiOS 里明明还有 Windows,却无法正常进入。
这类问题大多不是 Windows 真坏了,而是 引导顺序、GRUB 启动项、EFI 分区 出了问题。只要思路对,通常都能修回来。
一、先弄清楚问题到底出在哪
双系统启动,核心就是两件事:
- 主板 BIOS/UEFI 负责先选谁启动
- GRUB 或 Windows Boot Manager 负责继续引导系统
所以 Ubuntu 修复 Windows 引导,常见情况有下面几种:
1. 开机只进 Ubuntu,没有 Windows 选项
这通常是 GRUB 没识别到 Windows。
2. 选 Windows 直接黑屏或报错
这可能是 Windows 启动文件损坏,或者 EFI 引导项丢失。
3. BIOS 里 Windows 启动项还在,但顺序变了
这往往只是启动顺序被 Ubuntu 改了,改回去就行。
4. UEFI 和 Legacy 启动模式混装
这是最麻烦的一种。比如 Ubuntu 是 UEFI 装的,Windows 却是 Legacy 装的,或者反过来,就容易互相看不见。
二、先判断你的电脑是哪种启动方式
这是修复前最重要的一步。
因为 UEFI 和 Legacy 的修复方法不一样。
查看方法 1:进 BIOS 看启动模式
重启电脑,按 Del、F2、F12、Esc 等进入 BIOS/Boot Menu,看看有没有这些字样:
- UEFI
- Legacy
- CSM
- Secure Boot
如果现在是 UEFI 模式,修复引导主要操作 EFI 分区。
如果是 Legacy 模式,就更多是 MBR/传统引导。
查看方法 2:进入 Ubuntu 后检查
打开终端,输入:
[ -d /sys/firmware/efi ] && echo UEFI || echo Legacy
输出:
UEFI:说明你当前是 UEFI 启动Legacy:说明你当前是传统模式
三、最简单的修复思路:先让 GRUB 重新识别 Windows
如果你现在还能正常进 Ubuntu,建议先试这个方法,成本最低。
第一步:更新 GRUB 配置
打开终端,执行:
sudo update-grub
然后看输出内容里有没有类似:
Found Windows Boot Manager on /dev/nvme0n1p1
或者:
Found Windows 10 on /dev/sda2
如果能识别到,重启后一般就会出现 Windows 启动项。
第二步:如果没识别到 Windows,先安装 os-prober
很多新版本 Ubuntu 默认不再自动扫描其他系统,需要手动启用。
执行:
sudo apt update
sudo apt install os-prober
安装完后,编辑 GRUB 配置:
sudo nano /etc/default/grub
找到这一行:
GRUB_DISABLE_OS_PROBER=true
改成:
GRUB_DISABLE_OS_PROBER=false
如果没有这一行,就手动添加一行:
GRUB_DISABLE_OS_PROBER=false
保存后退出。
然后再执行:
sudo update-grub
重启查看 Windows 是否回来。
四、如果 GRUB 还是找不到 Windows,手动检查 Windows 分区
有时候不是 Windows 没了,而是系统没有正确识别分区。
先查看磁盘分区:
lsblk -f
你要重点看这些内容:
- 有没有
ntfs分区 - 有没有标记为 EFI 的分区,通常格式是
FAT32 - Windows 分区是否还在
常见情况:
- Windows 分区还在:说明系统没删,主要是引导坏了
- Windows 分区没了:那可能是误删、重装覆盖或磁盘损坏
如果 Windows 分区还在,继续往下修。
五、UEFI 模式下,修复 Windows 引导的核心方法
如果你是 UEFI 模式,重点修复的是 Windows Boot Manager。
方法 1:用 Ubuntu 直接挂载 EFI 分区,检查引导文件
先找到 EFI 分区,通常是一个小容量的 FAT32 分区,比如:
/dev/sda1/dev/nvme0n1p1
挂载它:
sudo mkdir -p /mnt/efi
sudo mount /dev/sda1 /mnt/efi
把 /dev/sda1 换成你自己的 EFI 分区。
查看里面内容:
ls /mnt/efi/EFI
正常情况下应该能看到:
Microsoftubuntu
如果 Microsoft 文件夹还在,说明 Windows 引导文件大概率还没坏。
方法 2:用 efibootmgr 检查启动项
安装工具:
sudo apt install efibootmgr
查看启动项:
sudo efibootmgr
你会看到类似:
Boot0000* ubuntu
Boot0001* Windows Boot Manager
如果有 Windows Boot Manager,但不是默认启动,可以改启动顺序。
比如把 Windows 调到第一位:
sudo efibootmgr -o 0001,0000
注意:数字要根据你机器实际显示的编号来填。
方法 3:Windows 启动项丢失时,用 bcdboot 修复
如果你还能进入 Windows 安装 U 盘,或者临时进入 Windows 恢复环境,可以直接修复引导。
进入命令提示符后,执行:
diskpart
list vol
找到:
- Windows 所在分区
- EFI 分区(FAT32,小容量)
然后给 EFI 分区分配盘符,例如 S:
select vol X
assign letter=S
exit
假设 Windows 安装在 C: 盘,执行:
bcdboot C:\Windows /s S: /f UEFI
这条命令会重新写入 Windows 引导文件。
如果是双系统,修复后有时 GRUB 会被 Windows 覆盖,之后再进 Ubuntu 执行一次:
sudo update-grub
让 GRUB 把 Windows 重新加回来。
六、Legacy 模式下,修复 Windows 引导的方法
如果你是 Legacy/MBR 启动,修复方式和 UEFI 不一样。
这时常见问题是:
- Windows MBR 引导损坏
- GRUB 被覆盖
- 主引导记录丢失
方法 1:先重装 GRUB 到硬盘主引导
如果现在只能进 Ubuntu,可以先把 GRUB 修好。
先确认硬盘名,比如 /dev/sda,然后执行:
sudo grub-install /dev/sda
sudo update-grub
注意这里是硬盘名,不是分区名,比如不是 /dev/sda1。
方法 2:用 Windows 安装盘修复 MBR
如果想修 Windows 引导,建议使用 Windows 安装 U 盘进入修复环境。
依次选择:
- 修复计算机
- 疑难解答
- 命令提示符
然后执行:
bootrec /fixmbr
bootrec /fixboot
bootrec /rebuildbcd
如果 bootrec /fixboot 报拒绝访问,可以继续试:
bootsect /nt60 sys
bootrec /fixboot
修复完成后,重启看看 Windows 是否能进。
七、如果你想保留双系统,最稳妥的做法
很多人修好 Windows 后,又会遇到 Ubuntu 不见了。
这是因为 Windows 更新经常会改启动顺序,把自己放到第一位。
解决办法
进 BIOS/UEFI 设置,把启动顺序改成:
- Ubuntu / GRUB
- Windows Boot Manager
这样每次开机先进入 GRUB,再从 GRUB 里选 Windows,更稳定。
如果你想开机默认进 Windows,也可以把 Windows Boot Manager 调到第一位。
八、修复后还是进不去 Windows 的常见原因
1. Windows 快速启动没关
Windows 开了快速启动后,双系统切换可能出问题。
建议在 Windows 里关闭:
路径:
控制面板 → 电源选项 → 选择电源按钮的功能 → 更改当前不可用的设置
取消勾选:
- 启用快速启动
2. Windows 分区被挂成只读或有错误
如果 NTFS 分区有文件系统错误,Ubuntu 可能无法正确识别。
可以在 Ubuntu 下查看磁盘健康:
sudo ntfsfix /dev/sda3
注意这不是完整修复,只是临时处理。
更彻底的方法还是进 Windows 执行:
chkdsk /f
3. UEFI Secure Boot 导致引导异常
有些机器开了 Secure Boot 后,Ubuntu 和 Windows 的启动链会出问题。
可以进 BIOS 试试:
- 临时关闭 Secure Boot
- 看 Windows 是否能恢复正常启动
如果关闭后正常,说明问题大概率和签名验证有关。
4. Windows 启动文件真的损坏了
如果 EFI 分区里连 Microsoft 文件夹都没有,或者 bcdboot 也失败,那就需要 Windows 安装盘重新写引导。
九、推荐的实战修复顺序
如果你现在已经遇到问题,建议按这个顺序排查,效率最高:
第 1 步:在 Ubuntu 下执行
sudo update-grub
第 2 步:安装并启用 os-prober
sudo apt install os-prober
sudo nano /etc/default/grub
把:
GRUB_DISABLE_OS_PROBER=false
写进去后再执行:
sudo update-grub
第 3 步:检查 EFI 启动项
sudo efibootmgr
第 4 步:如果 Windows 引导缺失,进 Windows 恢复环境执行
bcdboot C:\Windows /s S: /f UEFI
第 5 步:必要时在 BIOS 里调整启动顺序
把 Ubuntu/GRUB 或 Windows Boot Manager 调整到合适位置。
十、最容易踩坑的地方
1. 把分区写错
很多人把 /dev/sda 和 /dev/sda1 搞混。
记住:
/dev/sda是整块硬盘/dev/sda1是第一个分区
grub-install 通常写硬盘名,mount 通常挂分区名。
2. UEFI 和 Legacy 混装
这是双系统最大坑之一。
装系统前最好统一:
- 要么都用 UEFI
- 要么都用 Legacy
不要一个 UEFI,一个 Legacy。
3. 误删 EFI 分区
EFI 分区很小,但很关键。
它一般是:
- FAT32
- 100MB 到 500MB 左右
- 带
EFI标记
这个分区不能随便格式化。
4. 重装 Windows 后 Ubuntu 消失
这不是 Ubuntu 真没了,而是 Windows 把默认启动项改了。
多数情况下,进 BIOS 改回启动顺序,或者在 Ubuntu 里重新 update-grub 就能恢复。
十一、给不同水平用户的快速建议
新手用户
如果你只想快速恢复双系统,按这个顺序做:
- 先进入 Ubuntu
- 执行
sudo update-grub - 安装
os-prober - 再次执行
sudo update-grub - 还不行就进 BIOS 看启动顺序
- 再不行用 Windows 安装盘执行
bcdboot
进阶用户
如果你熟悉命令行,建议直接检查:
lsblk -f
sudo efibootmgr
sudo update-grub
再根据 EFI 分区内容判断是否需要重建 Windows Boot Manager。
专业用户
如果是多系统、RAID、BitLocker、Secure Boot、独显直连或自定义 EFI 启动链环境,建议优先确认:
- 启动模式是否统一
- EFI 分区是否完整
- BCD 是否损坏
- GRUB 是否被覆盖
- 是否存在多个 ESP 分区冲突
必要时直接用 Windows PE 或安装介质重建 BCD,再回 Ubuntu 侧重建 GRUB 菜单。
十二、总结
Ubuntu 修复 Windows 引导,核心就一句话:
先判断是 GRUB 没识别 Windows,还是 Windows 引导文件真的坏了。
大多数情况,按下面流程就能解决:
sudo update-grub- 启用
os-prober - 检查
efibootmgr - 进 Windows 恢复环境执行
bcdboot - BIOS 调整启动顺序
如果是 UEFI 双系统,重点是 EFI 分区和 Windows Boot Manager。
如果是 Legacy 双系统,重点是 MBR 和 bootrec。
只要分清启动模式,再按步骤排查,Windows 引导一般都能修回来。

还没有评论,来说两句吧...