Ubuntu 修复 GRUB 引导并找回 Windows 双系统启动项(NVMe + MBR 环境)

前言

最近启动windows系统的时候,报了0xc000000e。

随后利用微pe中的DISM++进行引导修复(MBR分区,不是GPT分区),修复完了之后却只能默认进入windows系统,看不到原来的GRUB菜单。

接着在Ubuntu live U盘中使用 Boot Repair 工具成功修复了 Ubuntu 的引导后,虽然能顺利进入 Linux 系统,但 GRUB 菜单中却找不到 Windows 10 的启动项。

硬件与环境背景

硬盘情况:

nvme0n1:纯数据盘(非系统盘)。

nvme1n1 (WD_BLACK SN770 1TB):系统盘。

nvme1n1p1:Windows 10 系统分区。

nvme1n1p4:Ubuntu 系统分区。

分区表格式:MBR (Legacy BIOS 模式)。

操作系统:Ubuntu 20.04 LTS / Windows 10。

首先要给网,并且安装boot-repair

bash 复制代码
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo nano /etc/apt/sources.list.d/yannubuntu-ubuntu-boot-repair-focal.list

使用键盘的方向键移动光标,将所有的 focal 修改为 jammy。

修改完成后,按 Ctrl + O 保存,然后按 Enter 确认,最后按 Ctrl + X 退出编辑器。

bash 复制代码
sudo apt update
sudo apt install -y boot-repair
boot-repair

第一步:使用 Boot Repair 修复基础引导

由于无法进入系统,首先使用 Live USB 启动盘进入试用模式,运行 boot-repair 工具。

打开 Boot Repair,点击"Recommended repair"(推荐修复)。

等待修复完成,软件提示 "Boot successfully repaired"。

关键操作:根据软件提示,重启电脑进入 BIOS,务必将第一启动项设置为安装系统的硬盘(本例中为 nvme1n1 / WD_BLACK SN770)。

注意:此时虽然 Ubuntu 可以启动了,但 GRUB 菜单里可能还没有 Windows 的选项。

第二步:解决 GRUB 不显示 Windows 的问题

进入 Ubuntu 系统后,发现 GRUB 菜单只有 Linux 选项。这是因为新版本的 GRUB 为了安全,默认禁用了探测其他操作系统的功能 (os-prober)。我们需要手动开启它。

  1. 编辑 GRUB 配置文件
    打开终端,输入以下命令编辑配置:
bash 复制代码
sudo nano /etc/default/grub
  1. 修改配置项
    在文件中向下滚动,找到 GRUB_DISABLE_OS_PROBER 这一行。
    如果前面有 # 号:删除 # 号取消注释。
    如果没有这一行:直接在文件末尾添加。
    将其修改为:
bash 复制代码
GRUB_DISABLE_OS_PROBER=false

解释:将值设为 false 意为"不要禁用 os-prober",即允许 GRUB 去扫描硬盘上的其他系统。

  1. 保存并退出

按 Ctrl + O 保存文件。

按 Enter 确认文件名。

按 Ctrl + X 退出编辑器。

  1. 更新 GRUB 配置(核心步骤)

修改完配置文件必须执行更新命令才能生效:

bash 复制代码
sudo update-grub

观察输出结果:

在执行过程中,请留意终端的输出信息。如果你看到类似以下的提示,说明修复成功:

bash 复制代码
(base) a@a:~$ sudo update-grub
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
正在生成 grub 配置文件 ...
找到 Linux 镜像:/boot/vmlinuz-5.15.0-139-generic
找到 initrd 镜像:/boot/initrd.img-5.15.0-139-generic
找到 Linux 镜像:/boot/vmlinuz-5.15.0-67-generic
找到 initrd 镜像:/boot/initrd.img-5.15.0-67-generic
找到 Windows 10 位于 /dev/nvme1n1p1
完成

(注:如果你的系统是 UEFI 引导,可能会显示 "Found Windows Boot Manager";如果是 Legacy/MBR 引导,通常显示 "Found Windows 10/7 on ...")

第三步:验证与重启

确认终端输出了找到 Windows 的信息。

重启电脑:

bash 复制代码
sudo reboot

开机时,你应该能看到熟悉的 GRUB 黑底白字菜单,其中包含了 Ubuntu 和 Windows 10 两个选项。选择 Windows 即可正常进入。

避坑指南(FAQ)

为什么我改了配置还是没显示?

检查是否执行了 sudo update-grub。

检查 Windows 是否开启了"快速启动"。建议在 Windows 电源选项中关闭"启用快速启动",否则 Linux 可能无法读取被锁定的 NTFS 分区。

关于 MBR 和 UEFI

本案例基于 MBR 分区表。如果你的电脑是较新的 UEFI 启动,操作步骤基本一致,但 update-grub 的输出通常会显示 "Windows Boot Manager"。

BIOS 设置

修复引导后,一定要进 BIOS 确认启动顺序(Boot Priority),确保主引导记录所在的硬盘排在第一位。

相关推荐
ShineWinsu12 小时前
对于Git:远程操作的超详细保姆级解析
linux·git·gitee·github·远程仓库·分布式版本控制系统·远程操作
小张成长计划..12 小时前
【Linux】21:进程间通信
linux
赵民勇13 小时前
systemd-sysusers命令详解
linux·运维
灿烂的贝壳13 小时前
FC SAN多路径负载均衡配置指南
linux
binqian13 小时前
【Linux】内核怎么管理侦听socket
linux·网络协议
江湖人称菠萝包13 小时前
【Windows】《深入浅出Windows API程序设计:核心编程篇》笔记-Chapter11-PE文件格式深入剖析
windows·笔记
j7~13 小时前
【Linux网络】三十七.TCP 协议通讯流程
linux·网络编程·三次握手·四次挥手·tcp 协议通讯流程
普通人613 小时前
win系统docker运行
windows·docker
程序员大阳13 小时前
使用Putty登录阿里云Ubuntu ECS服务器方法
ubuntu·云计算·ssh·ecs·putty
顶点多余13 小时前
9.15 面试问题总结(一面挂)
linux·面试·职场和发展