在 /boot 分区中重建 Windows EFI 文件(Linux+Windows 双启动)

在 /boot 分区中重建 Windows EFI 文件(Linux+Windows 双启动)

我在 Lenovo IdeaPad N580(英特尔奔腾 B960 2.2GHz、4GB RAM、UEFI 且禁用了安全启动)上双启动 Windows 10(周年更新前)和 Fedora 24。我最初只有 Windows 10,然后安装了 Fedora 23,一切运行正常 - 当我升级到 Fedora 24 时,它运行良好。不久前,我决定尝试 Ubuntu,并安装它,只覆盖根、/boot 和 SWAP 分区,并保留我的主分区。Windows 10 仍然可以在这里启动。然后我决定我不喜欢 Ubuntu,并使用 24 安装程序重新安装了 Fedora,尝试执行我对 Ubuntu 所做的操作。界面有点不同,但我确信我做对了:在我完成所有分区配置后,它弹出一个窗口,说“我们只会接触这些分区”,它列出的分区是根、/boot 和 SWAP。没有其他的。

然后,安装完成后,我重新启动。GRUB 菜单中唯一的选项是 Fedora 和 Fedora Recovery - 没有其他选项。没有 Windows。

我尝试安装 rEFInd,它以前对我有用。但它没有帮助,它给了我同样的两个选项。

Windows 分区仍然存在,我可以从 Fedora 访问它 - /bootmgr 和 /Boot/BCD 等重要文件似乎完好无损。Windows 分区位于 /dev/sda5。

此外,在 BIOS 设置中,Windows 启动管理器曾经出现过,但现在却不见了。它只有 rEFInd 和一个带有我的硬盘型号的条目 - 我假设它只是将我带到 GRUB 菜单。(不过我还没有真正尝试过将它带到列表顶部并重新启动 - 我有点懒 :P)

有人可以帮忙吗?

更新:Manoj 确定了问题所在:通过格式化 /boot 分区,我删除了 Windows EFI 文件。所以我需要重建 处的文件/boot/efi/EFI/Microsoft。我想我已经重建了 目录/boot/efi/EFI/Microsoft/Boot,但我需要 中的其他文件Microsoft。有人能告诉我我需要那里的哪些文件吗?

答案1

由于您已将所有必需文件复制到boot/efi/EFI/Microsoft/Boot,因此您需要重建 Windows 加载器配置。您将需要一个 Windows 可启动 USB 或 DVD(最好是 64 位):

  1. 从可启动介质启动。确保您在 UEFI 模式下启动。

  2. 在第一个屏幕(要求您选择语言和键盘)上,按Shift + F10。这将为您提供命令提示符。

  3. 输入diskpart然后list disk(列出所有可用磁盘)。输入 选择适当的硬盘select disk #

  4. 现在输入list partition并确保有一个类型为system(efi 分区) 的分区。通过输入选择此分区select partition #并为其分配一个临时驱动器号,例如G输入assign letter=G

  5. 为了确保驱动器号分配正确,请键入。您应该看到带有& 的list voldrive letter (Ltr) as Gfile system (Fs) as FAT32

  6. 输入 exit 即可关闭diskpart。请确保您处于X:\Sources

  7. 输入cd /d G:\EFI\Microsoft\Boot\。现在逐一运行这些命令。

    bootrec /scanos     
    bootrec /fixmbr    
    bootrec /fixboot
    bootrec /rebuildbcd    
    bcdboot C:\Windows /l en-us /s G: /f ALL
    
  8. 关闭命令提示符并重新启动系统。您现在应该可以启动 Windows。

  9. 当然,您现在可能没有 grub 菜单。但安装 grub 要容易得多。请点击以下任一链接获取更多信息:链接1链接2链接3

资料来源:1234

编辑- 确保尽快删除分配给 efi 分区的驱动器号 G,以防止它出现在“我的电脑”中。

答案2

开始之前,请使用 备份您的启动分区mkdir $HOME/backup && sudo cp -R /boot $HOME/backup。启动分区通常限制为 100MB,因此它应该非常小。

如果您仍有 Windows 10 可启动介质(如 USB 记忆棒或 DVD),您将能够在那里找到 EFI 文件。

如果你没有 Windows 可启动介质,你可以安装 ISO(如有需要请下载) 使用命令sudo mkdir /tmp/win10iso && sudo mount -o loop /location/of/win10.iso /tmp/win10iso

当您成功将这些 EFI 文件复制到 Windows 分区后,向文件中添加一个条目/etc/grub.d/40_custom

该条目看起来如下:

menuentry 'Windows 10' {
set root='(hd0,msdos5)'
chainloader +1
}

在 GRUB 配置中hdX代表/dev/sdXmsdosY代表/dev/sdXY。请注意,hdX 从 0 开始,而 /dev/sdX 从 A 开始。

完成后,使用 更新您的 GRUB。Windowssudo update-grub2启动项现在应该在那里。

相关内容