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

相关推荐
森森-曦2 小时前
在windows系统上制作启动ubuntu_22.04.5_desktop_amd64.iso启动盘
windows·ubuntu·启动盘
开发者联盟league2 小时前
在ubuntu上安装harbor
linux·运维·ubuntu
luoqice2 小时前
Windows下局域网rtsp流媒体服务器搭建-测试
服务器·windows·音视频
MIXLLRED2 小时前
Ubuntu22.04 + ROS2 Humble 安装部署 PCT Planner
ubuntu·ros2·三维路径规划·pct
Bruce_Liuxiaowei2 小时前
当Windows成为Agent的监狱-操作系统级Agent安全架构深度解读
人工智能·windows·安全·安全架构·智能体
ulias2123 小时前
深挖进程间通信的奥秘
java·linux·服务器·开发语言·c++·算法
love530love3 小时前
根治 PyTorch CUDA `pynvml` 弃用警告:直接修改 `torch/cuda/__init__.py` 的实践记录
人工智能·pytorch·windows·python·深度学习·机器学习·pynvml
AOwhisky3 小时前
MySQL 学习笔记(第三期):SQL 语言之数据操作与单表查询
linux·运维·笔记·sql·学习·mysql·云计算
键盘上的猫头鹰4 小时前
【Linux 基础教程(四)】文件内容查看、打包压缩与搜索、重定向管道及环境变量
linux·服务器·python