恢复 Windows 10 EFI 文件而不弄乱现有分区

恢复 Windows 10 EFI 文件而不弄乱现有分区

tl;dr:GPT、EFI、双启动 Antergos-Windows 10,Windows 的 EFI 分区已被删除,所以我只能启动到 Antergos 并想修复它。

我有一个 Debian-Windows-10 双启动设置,使用 MBR 来启动 grub2。最近我将 Debian 切换到 Antergos,并借此机会迁移到具有 EFI 引导加载的 GPT 分区格式。

我有一个像这样的分区列表:

  1. Windows 系统保留
  2. Windows 10
  3. Debian
  4. 交换

重新安装后变成了:

  1. Windows 系统保留
  2. Windows 10
  3. 安特戈斯
  4. 交换
  5. EFI 分区

之后os-probe没有找到 Windows,所以我尝试手动将其添加到 grub,但显然该设置是用于 MBR 安装的。然后我尝试使用 UEFI 设置重新安装 Windows。最后我得到了这样的配置:

  1. Windows 系统恢复
  2. Windows EFI 分区
  3. Windows 系统保留
  4. Windows 10
  5. Windows 系统保留
  6. 安特戈斯
  7. 交换
  8. 安格斯电喷

(我不知道为什么,当给出一大块空白空间时,安装的 Windows 决定创建 5 个独立的分区......)

显然,由于我有 2 个 EFI 分区,Antergos 停止启动。我认为只需要 1 个,而 Windows EFI 仅包含可以用 grub 替换的引导加载程序,所以我删除了第二个分区。

只有在那之后我才能真正恢复 grub 的工作。显然,该分区中的一些文件是运行 Windows 所必需的。因此,我尝试使用 Windows 安装磁盘和自动修复以及创建 EFI 分区并用 恢复它来恢复该分区bcdboot。但是我只收到错误failure when attempting to copy boot files

目前 - 根据我尝试的选项,我会看到如下错误:

  • ntldr 丢失
  • EFI 缺少一些配置

我目前不确定我应该尝试什么,因为应用互联网上的随机解决方案已经花了我整个周末的时间,而且这不是找出解决办法的有效方法。所以我的问题是:有什么方法可以恢复 Windows 10,而无需从头开始重新安装所有内容?

我可以访问 Windows 分区、Windows 安装磁盘、Antergos Live cd 进行 chrooting。我可以提供所有可能有帮助的日志和列表。

答案1

我设法创建了 Windows EFI 的副本。

首先,我使用以下命令挂载了 EFI 分区diskpart

> diskpart      # start diskpart tool
list volumes    # prints all disks I have: C:, D:, etc
sel vol 8       # on my list EFI partition was unmounted and next to a number 8
assign letter=Z # since I marked EFI partition as selected I can now assign it a letter so that I could use it later on
exit            # I am leaving the tool

早些时候它失败了——当我尝试使用时,assign mount=z我看到诸如“无法挂载系统 EFI 分区”之类的错误,即使help命令建议这样做。

安装 EFI 后我可以

bcdboot C:\Windows /s Z:

它将 Windows EFI 文件放入 EFI 分区不会影响现有的 grub 文件。结果 grub 没有损坏,但我现在拥有在 UEFI 设置中启动 Windows 所需的文件。

之后os-probe能够找到 Windows,因此update-grub将缺失的条目添加到列表中。


我想如果有人遇到和我一样的情况,他们必须做好以下准备:

  • windows 将创建几个新的分区,EFI 将是其中之一
  • 因为该分区大约有 100 MB,而且我认为建议它应该更大,所以我们可以用我们提供的分区替换它(关于如何做到这一点有很多很好的资源,在 Arch wiki 和 Microsoft 文档上,具体取决于我们将使用哪种工具)
  • 在此之前,我们可以复制 Windows EFI 分区的文件(如果您看不到它们,则它们是隐藏的)或像我一样将其删除,然后执行上述所有步骤。您需要 Windows 安装 CD 才能完成此操作。

答案2

我很难对你电脑的当前状态建立一个良好的心理模型,因为你做了这么多的改变,而且你采取的任何步骤的结果并不总是很清楚。(这并不是对你的问题的批评;只是很难理解电脑本身在进行这些改变时做了什么。)因此,我建议你备份重要的用户文件,删除全部删除磁盘上的分区,然后重新开始。首先安装 Windows,然后在其上安装 Linux。然后,您可以恢复用户文件。

如果无法从头开始,请运行启动修复实用程序并选择“创建 BootInfo 摘要”选项。(不要单击“推荐修复”,至少现在还不行!)当系统询问是否上传报告时,单击“是”,然后发布此处提供的 URL。这将提供诊断问题所需的有关计算机当前状态的详细信息。

为了帮助您了解 EFI 启动过程并完成双启动配置,我强烈建议您至少阅读以下部分页面:

如果您只阅读其中之一,请阅读我的关于在 EFI 系统上安装 Linux 的页面;它是这四页中最实用的指南。Adam Williamson 的博客文章是第二优先的,或者如果您很着急,可以阅读超级用户的帖子;这些页面将提供必要的背景信息。如果您不想使用您的发行版默认使用的任何引导加载程序或引导管理器,我的 EFI 引导加载程序页面可能会有所帮助。

相关内容