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


19

我正在Lenovo IdeaPad N580(Intel Pentium B960 2.2GHz,4GB RAM,禁用了安全启动的UEFI)上双重启动Windows 10(周年纪念更新)和Fedora 24。我最初只有Windows 10,然后在其旁边安装了Fedora 23,并且一切正常-在升级到Fedora 24时,它也能正常工作。前一段时间,我决定尝试使用Ubuntu,并仅覆盖root来安装它, / boot和SWAP分区,并保留我的主分区。Windows 10仍可以在此处启动。然后,我决定我不喜欢Ubuntu,并使用24安装程序重新安装了Fedora,以尝试完全执行对Ubuntu的操作。界面有些不同,但是我敢肯定我做对了:完成所有分区的配置后,它弹出一个对话框,说“我们只会触摸这些分区”。它列出的分区是root,/ boot和SWAP。没有其他的。

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

我尝试安装rEFInd,该功能过去对我有用。但这没有帮助,它给了我同样的两个选择。

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

同样,在Windows引导管理器曾经出现过的BIOS设置中,它没有出现。它只有rEFInd和带有我的硬盘驱动器型号的条目-我假设这只是使我进入GRUB菜单。(我实际上并没有尝试过将其放在列表的顶部并重新启动-我有点懒:P)

有人可以帮忙吗?

更新: Manoj确定了问题所在:通过格式化/ boot分区,我摆脱了Windows EFI文件。因此,我需要在处重建文件/boot/efi/EFI/Microsoft。我想我已经重建了目录/boot/efi/EFI/Microsoft/Boot,但是我需要其他文件Microsoft。有人可以告诉我那里需要什么文件吗?


哦,对bootmgfw.efibootmgr.efi而且memtest.efi不存在...
TheInitializer

这些文件在windows partition/Windows/Boot/EFI
TheInitializer '16


由于您没有进行备份(为什么?),因此您应该修改问题。“如何重新创建Windows UEFI引导文件?”
Xalorous

我用在Windows分区上找到的文件组成了一个EFI文件夹,认为它可以工作吗?storage2.static.itmages.com/i/16/0809/…–
TheInitializer

Answers:


21

由于已将所有必需的文件复制到boot/efi/EFI/Microsoft/Boot,因此需要重新构建Windows loader配置。您将需要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 vol。您应该会看到带有drive letter (Ltr) as G&的音量file system (Fs) as FAT32

6: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链接2LINK3

来源:1234

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


谢谢,但是我没有恢复USB(对我来说有点愚蠢),并且无法访问Windows无法创建一个。我将尝试找到一种制作方法
TheInitializer

1
非常感谢你,这个工作!!从Windows发布:D
TheInitializer '16

1
bootrec /rebuildbcd对于我来说失败了,但是在我跳过它后还是成功了。
en4bz

1
感谢您提供的Source链接,仅帮助您理解和应用了必要的内容。之后要重新加载rEFInd引导加载程序,我按如下所述使用bcdedit : bcdedit /set "{bootmgr}" path \EFI\refind\refind_x64.efi
Pau Coma Ramirez

如果您的分区未列出,该list disk怎么办?
Harsha Goli19年

0

在开始使用备份启动分区之前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 sudo update-grub2。Windows启动项现在应该在那里。


谢谢,我现在正在下载ISO(这是个大文件!)
TheInitializer

我已经安装了ISO,并且有一个问题-我应该将哪些文件复制到哪个文件夹?我的猜测是从Windows ISO/boot/boot/efi/EFI/Microsoft,但我不确定。
TheInitializer '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.