Windows 8.1 UEFI x64 无法启动 UEFI 映像

Windows 8.1 UEFI x64 无法启动 UEFI 映像

问完这个问题后出现了。看来 Win8.1 UEFI x64 启动管理器无法启动除 Windows 本身(winload.efi)之外的任何东西。尝试从它启动任何其他 UEFI 映像(.efi)会出现错误代码 0xC000007B,我很确定这不是因为缺少文件,而是因为文件“无效”,因为当我重命名该文件时,错误变为 0xC000000F。我已经禁用了安全启动,但没有任何运气。

目前我正在尝试整合重新索引引导加载程序。我可以说它的 UEFI 映像正在工作,因为它能够使用固件从 USB 闪存驱动器启动。但是,使用 Windows 启动管理器会产生上述相同的结果(错误代码 0xC000007B)。目前我的 BCD 配置是(图片):

命令行截图http://imageshack.com/a/img811/7857/kbth.png

F:\rEfit\refind与存储 refind 的目录一样,“refind_x64.efi”是程序映像。

注意:我还想知道是否只有 UEFI 映像(.efi 文件)才允许在 UEFI Windows 中启动,以及非 UEFI 映像的格式是什么(例如ntldrbootmgr)?

编辑:将 rEFInd 移动到标准目录(“EFI”)并不能解决问题。

答案1

一年后,我再次遇到了同样的问题。幸运的是,这次我找到了解决方案。为了在 Windows Boot-Manager 中添加加载非 Windows UEFI 映像的 OsLoader,您需要手动编辑 BCD 注册表。在 RegEdit 中有一个名为“HKEY_LOCAL_MACHINE\BCD00000000”的键 - 它是从 Windows EFI System-Partition 加载的,编辑它的子键直接编辑 BSD 文件。它下面有一个名为“Description”的键,但我们将重点介绍另一个名为“Objects”的键。在它下面,您需要一个新对象(或修改现有对象)。然后在目标对象 GUID 名称下,您需要将“Description”类型值编辑为“0x10100003”(这意味着固件应用程序 osloader - 此发现的功劳归于此)。就是这样 - 然后该对象的“路径”和“设备”元素指定一个 UEFI 文件,该文件将在选择 OS-Loader 时加载。

重大警告:

不要仅仅为了测试而执行上述操作 - 以这种方式加载 Uefi 会将其烧录到 Uefi Boot 配置中,并且加载后 - 您可能无法再次启动 Windows(除非您加载的应用程序不会重置 Uefi Boot Cfg) - 所以只有当您确定时才使用它。

我这样做了,然后我应该使用以下方法手动修复我的 Windows 启动Uefi 启动配置. 优先使用哪一个。

编辑:我忘了补充说,您首先需要拥有编辑“HKEY_LOCAL_MACHINE\BCD00000000”的权限,这很容易 - 只需单击其上的属性并更改权限即可;)。

编辑:这一发现表明,编辑 Windows BSD 最强大(且最简单 - 至少对我来说)的方法是使用注册表。我通过这样做实现的行为 - 无法使用 BCDedit 或 BCD WMI 完成。

答案2

EFI 是一种预启动环境。因此,EFI 本身不是 Windows 工具、Linux 工具或任何其他操作系统级工具。我想澄清这一点,因为您的某些说法听起来好像您认为 EFI 是 Windows 的一部分。但事实并非如此。

对于 EFI 引导程序来说,该路径rEfit\refind是不寻常的。此类程序通常位于EFIESP 目录的子目录中,如EFI\refindEFI\Microsoft。虽然这种非标准位置不太可能是问题的根源,但我不能排除这种可能性。因此,我的第一个建议是使用更正常的位置。

我不太熟悉bcdedit您展示的 Windows 命令的输出,因此无法评论;不过,我建议您查看 rEFInd 安装说明,了解如何从 Windows 安装。您很可能在输入某个命令时犯了错误。

如果这没有帮助,请尝试从其他操作系统安装 rEFInd。假设您已安装 rEFInd 来与 Windows 一起启动其他系统。对于大多数人来说,那是 Linux,如果 Windows 工具不起作用,您应该能够从 Linux 安装 rEFInd。

答案3

所有 efi 启动管理器/加载程序都需要位于 ESP 分区上;您不能在 F: 驱动器上安装 refind,该驱动器可能被格式化为 NTFS 驱动器。EFI 系统会查找标记为“ESP”并格式化为 fat32 的特定分区。EFI 系统没有其他文件系统的驱动程序。

refind 包含 ext2/4 reiserfs btrfs 和 iso9660 的驱动程序,但如您所见,您的 Windows EFI 加载程序位于 \EFI\Microsoft\Boot\bootmgfw.efi。由于此分区是隐藏的,因此无法从 Windows 查看,但如果您使用 Linux Live(例如使用 gparted)启动,那么您将能够看到它。然后您需要将 refind 放入 \EFI\refind,这样 rEFInd 加载程序就位于 \EFI\refind\bootx64.efi

然后,您可以尝试从 Windows 加载程序中进行链式加载,但最好将您的系统指向 refind 的 .efi 文件作为默认加载程序,因为这将扫描您的系统并为您提供代表可用的 efi/legacy 启动选项的图标。我使用 refind,当我打开笔记本电脑时,我有一个 Windows 7 图标、一个 Windows 8 图标、一个 ubuntu 图标、一个 Fedora 图标和一个 ubuntustudio 图标可供选择。如果我插入了可启动的 USB 或 DVD,也会显示它们的图标。

它在默认设置下运行良好,但也可以轻松自定义。您无法从 fat32 ESP 分区以外的任何分区加载 efi 引导加载程序,尽管一旦从 ESP 分区加载了 refind,它就可以访问其他分区上的加载程序 efi 和旧式加载程序。

相关内容