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),确保主引导记录所在的硬盘排在第一位。

相关推荐
杨云龙UP1 天前
MySQL 数据库常用备份工具对比:mysqldump、mydumper 与 XtraBackup
linux·运维·服务器·数据库·mysql·dba·备份恢复
风曦Kisaki1 天前
Kubernetes(K8s)笔记Day06: 持久化存储(emptyDir,hostPath,NFS),PV 和 PVC,StorageClass存储类
linux·运维·笔记·云原生·容器·kubernetes
_艾伦 耶格尔.1 天前
基础I/O
linux
fb_123451 天前
Linux磁盘分区从入门到实操:MBR_GPT全解析+分区工具实战指南
java·linux·gpt
深念Y1 天前
随身WiFi设备记录
linux·嵌入式·无线·射频·随身wifi·zte
柒号华仔1 天前
【LINUX】Linux从闹钟到高精度定时器的实现
linux
初级炼丹师(爱说实话版)1 天前
Ubuntu服务器配置docker
服务器·ubuntu·docker
深爱水瓶 血影S狂风1 天前
函数调用过程探究
linux·运维·服务器
酷可达拉斯1 天前
Linux操作系统-磁盘空间使用率100%如何处理?
linux·运维·服务器·云计算·bash
AIgorithmGEEK1 天前
Linux 权限管理:从「Permission Denied」到「畅行无阻」
linux·权限·chmod·粘滞位·umask·文件权限的构成