windows修复双系统引导失败过程

2026-01-06 18:38:25 世界杯外围赛

windows修复双系统引导失败过程

背景efibootmge修复前提进入ubuntu系统efibootmgr修复引导1.打开终端2.识别硬盘和分区3.挂载EFI系统分区4.查看当前的UEFI启动项5.重建Windows启动项6.再次查看并设置启动顺序7.卸载分区并重启

说明

GRUB逃生舱GRUB临时进入windows系统获取分区信息寻找EFI分区和Windows分区设置Root并加载核心模块(针对UEFI系统)启动!

背景

现状是笔记本电脑上安装了windows和ubuntu双系统,由于磁盘空间不足打算删除ubuntu系统,将磁盘空间归还windows系统,于是一顿操作,将ubuntu分区格式化之后,导致系统引导失败,修复系统引导有挺多方法的,这里是使用ubuntu系统的efibootmgr工具成功修复的,下面记录修复步骤。

efibootmge修复

前提

准备一个ubuntu优盘,修复需要借助ubuntu系统,使用一个空的U盘+ubuntu镜像+软碟通刻录好ubuntu U盘。

进入ubuntu系统

插入ubuntu系统盘启动电脑,按F12进入引导页面,选择U盘启动。(不同品牌电脑可能进入引导页按键不同,可以百度+尝试一下)

efibootmgr修复引导

1.打开终端

在Ubuntu桌面,按 Ctrl + Alt + T 快捷键打开一个终端窗口。

2.识别硬盘和分区

输入以下命令来查看您的磁盘分区情况:

sudo fdisk -l

您会看到类似下面的输出,需要找到两个关键分区:

EFI系统分区:通常大小在100MB到500MB之间,类型为 EFI System,文件系统是 FAT32。在下面的例子中,它是 /dev/nvme0n1p1。

Windows主分区:通常是最大的NTFS分区。在下面的例子中,它是 /dev/nvme0n1p3。

Disk /dev/nvme0n1:...

...

设备 起点 末尾 扇区 大小 类型

/dev/nvme0n1p1 2048 1050623 1048576 512M EFI System

/dev/nvme0n1p2 1050624 15482879 14432256 6.9G Linux swap

/dev/nvme0n1p3 15482880 209715199 194232320 92.6G Microsoft basic data # 这就是Windows分区

3.挂载EFI系统分区

我们需要将EFI分区挂载到Ubuntu系统中才能操作它。通常挂载到 /mnt 目录。

sudo mount /dev/nvme0n1p1 /mnt

请将 /dev/nvme0n1p1 替换为上一步骤中确认的EFI分区。

4.查看当前的UEFI启动项

输入命令:

sudo efibootmgr -v

这会列出当前所有的启动项。您很可能会看到一个指向 grubx64.efi 的旧Ubuntu启动项。

5.重建Windows启动项

现在,我们告诉UEFI固件,Windows Boot Manager在哪里。

sudo efibootmgr -c -d /dev/nvme0n1 -p 1 -l "\\EFI\\Microsoft\\Boot\\bootmgfw.efi" -L "Windows Boot Manager"

-c:创建新的启动项。

-d /dev/nvme0n1:指定硬盘设备。请根据您的实际情况修改,比如可能是 /dev/sda。

-p 1:指定分区号。这里 1 表示第一个分区(即EFI分区)。请根据您的EFI分区号修改,例如在 fdisk -l 里是 p1 就写 -p 1。

-l "\\EFI\\...:指定EFI引导文件的位置。这个路径是固定的,通常不需要改。

-L "Windows Boot Manager":为新启动项设置一个您喜欢的名字。

6.再次查看并设置启动顺序

再次运行 sudo efibootmgr,您会看到新创建的“Windows Boot Manager”启动项,它有一个类似 Boot0003 的编号。 假设新创建的Windows启动项是 Boot0003,您可以将它设置为第一启动项:

sudo efibootmgr -o 0003

请将 0003 替换为您实际看到的Windows启动项编号。

7.卸载分区并重启

sudo umount /mnt

sudo reboot

重启时,请拔掉Ubuntu U盘。现在,您的电脑应该会直接启动到Windows系统了。

说明

由于我之前安装的双系统,所以在4步查看当前UEFI启动项时就能看到旧的windows启动项还好好待在那里,所以就可以省略创建的一步,直接查看旧的windows启动项并执行sudo efibootmgr -o 0003设置启动顺序就行了。

GRUB逃生舱

当系统损坏时,启动电脑后经常会看到进入了一个黑漆漆的grub页面,这个页面有什么用呢?可以利用它来临时进入windows系统。

GRUB临时进入windows系统

获取分区信息

在 grub> 提示符下,输入以下命令来列出所有磁盘分区:

ls

您会看到类似这样的输出:

(hd0) (hd0, gpt1) (hd0, gpt2) (hd1) (hd1, gpt1) ...

这里的 (hd0, gpt1) 或 (hd0, msdos1) 就是您的分区。gpt 表示磁盘是GPT分区表(UEFI电脑),msdos 表示是MBR分区表(传统BIOS电脑)。

寻找EFI分区和Windows分区

现在需要逐个分区查看,找到两个关键分区:

EFI系统分区:里面有一个 EFI 文件夹,再里面有 Microsoft 子文件夹。

Windows启动文件所在分区:里面有 Windows 文件夹。

使用 ls 命令来查看分区内容,例如:

ls (hd0, gpt1)/

ls (hd0, gpt2)/

技巧:您可以按 Tab 键自动补全,比如输入 ls (hd0, 再按 Tab,GRUB会列出所有 hd0 上的分区。

当您执行 ls (hdX, gptY)/ 后,如果看到 EFI/ 目录,那很可能就是EFI分区。再执行 ls (hdX, gptY)/EFI/,如果能看到 Microsoft/,那就确认了。 同样,找到包含 Windows/ 和 Users/ 等目录的分区,那就是您的Windows系统分区。

记下您找到的这两个分区的编号! 假设我们找到:

EFI分区是 (hd0, gpt1)

Windows系统分区是 (hd0, gpt3)

设置Root并加载核心模块(针对UEFI系统)

首先,将根设备设置为EFI分区:

set root=(hd0, gpt1)

然后,加载启动Windows所需的EFI模块:

chainloader /EFI/Microsoft/Boot/bootmgfw.efi

启动!

输入命令:

boot

如果一切顺利,您会看到Windows的启动标志(旋转的小圆点),然后系统会正常启动进入Windows。