修复Windows的 EFI 分区

修复Windows EFI 分区

问题描述

电脑有两块硬盘,一个装 Windows 11,一个装 Ubuntu。觉得 Ubuntu 不好用,就想着把它重装成 Manjaro。安装时选择了覆盖整个 Ubuntu 硬盘。安装好了以后就无法进入 Windows 系统了。

查找原因
本来想着把 Windows 的启动项添加到 Manjaro 的 grub 菜单中,这样开机时可以在 grub 菜单中选择进入 Windows 。但是用fdisk -l发现 Windows 硬盘中竟然没有 EFI 分区,只有一个保留分区和C盘分区(是的,我只分了一个C盘)。
没有 EFI 分区,那在这之前是怎么进入 Windows 系统的呢?之前也是通过 Ubuntu 的 grub 菜单进入 Windows 系统的。那么只有一种可能,就是 Windows 的 EFI 分区存在于之前的 Ubuntu 的硬盘中,也就是现在的 Manjaro 硬盘中。安装 Manjaro 时这个分区被抹掉了。所以只有给 Windows 重建一个 EFI 分区,才能进入 Windows 系统。

解决方法
Windows的 EFI 分区也叫 ESP 分区。这个 EFI 分区可以在两块硬盘中的任意一个硬盘上创建,都能正确引导 Windows 系统。为了避免再次误删 EFI 分区,我决定在 Windows 所在的硬盘上创建一个 EFI 分区。具体过程如下:

  1. 我们需要进入Windows系统的安装界面进行修复。找一个 Windows 系统的安装U盘,修改 BIOS 设置U盘为首选启动设备,通过U盘进入Windows系统的安装界面。
  2. 选择 修复计算机 > 疑难解答 > 命令提示符,下面将使用 diskpart 创建 EFI 分区。
  3. 运行diskpart
    diskpart
    列出电脑中的所有磁盘
    list disk
    选择Windows磁盘,X为Windows 所在的磁盘号
    select disk X
    我的 Windows 安装在磁盘1上,所以我输入
    select disk 1
    列出所选磁盘上的分区
    list partition
    如果有EFI分区,则跳到5
  4. 正如前面所说,我没有EFI分区,所以需要创建一个,由于磁盘没有剩余空间,只能在其他分区划分一部分空间。EFI分区一般在100MB以上,找一个剩余空间比较充分的分区,通过缩小这个分区得到100MB的空间。
    先选择一个分区,X为分区编号
    select partition X
    缩小分区,得到 100MB 的未分配空间
    shrink desired=100
    在未分配的空间上创建一个 100MB 的 EFI 分区
    create partition efi size=100
  5. 选择新分区,如果没有分配新分区,则选择原来的 EFI 分区,假设该分区的编号为X,可以通过list partition查看
    select partition X
    格式化
    format fs=fat32 quick
    分配盘符为Z
    assign letter=Z
    退出diskpart
    exit
  6. 查看系统所在的盘符,通常是C,但也有可能是其他字母。可以使用下面的命令查看。
    fsutil fsinfo drives
    输出类似
    C:\ D:\ ... X:\ Z:\
    使用dir C:dir D:等逐个尝试,如果输出中包含Program Files (x86),Program Files,Windows等文件夹,则应该就是系统所在的盘符。假设系统盘符为C。
    使用bcdboot 将引导文件复制到新的 EFI 分区
    bcdboot C:\Windows /s Z: /f UEFI
    这样就成功修复了EFI分区。

如果电脑有多个系统的话,可能需要在 BIOS 里设置一下 UEFI 的启动顺序。设置Windows EFI分区所在的盘为首选启动项,这样就可以进入 Windows 了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值