在 64 位 UEFI 上为 Windows 8.1 32 位操作系统设置 VHD 启动

在 64 位 UEFI 上为 Windows 8.1 32 位操作系统设置 VHD 启动

我有一台 Surface Pro 3,它原生运行 Windows 8.1 64 位。因此,设备上的 UEFI 有一个 64 位引导加载程序。

我正在尝试设置设备以允许 VHD 启动到 Windows 8.1 32 位操作系统。当我最终启动到 VHD 映像时,我收到一条错误消息,指出映像已损坏。

我采取的步骤如下。首先,我创建了 vhdx 文件:

diskpart
create vdisk file=D:\windows8.vhdx maximum=40960 type=expandable
select vdisk file=D:\windows8.vhdx
attach vdisk
create partition primary
assign letter=F
format quick label=VHDX
exit

然后我将 Windows 8.1 32 位映像挂载到我的E:\驱动器并将该映像应用到 .vhdx 文件:

dism /Apply-Imaeg /ImageFile:E:\Sources\install.wim /index:1 /ApplyDir:F:\

完成后,我使用 bcdboot 生成引导加载程序条目:

F:\Windows\system32\bcdboot.exe F:\Windows /s F: /f ALL /d /addlast

之后,我查找了引导加载程序条目并添加了虚拟机管理程序启动类型和适当的描述:

bcdedit /v
bcdedit /set {GUID-FROM-ABOVE} hypervisorlaunchtype auto
bcdedit /set {GUID-FROM-ABOVE} description Windows 8.1 32-bit (VHDX)

然后我重新启动设备,以便可以选择 VHD 启动映像:

shutdown /r /o /t 0

当我最终启动映像时,出现以下错误:

Your PC needs to be repaired
File: \windows\system32\winload.efi
Error code: 0xc0000359  
The application or operating system couldn't be loaded because a required file is missing or contains errors.

我在这里做错了什么?

答案1

有关的其他更新信息UEFI Windows 跨平台引导

Windows 对 UEFI 的支持

微软首先在服务器上支持 EFI 1.10,然后在客户端和服务器上增加了对 UEFI 的支持。

UEFI 2.3.1 有 x86 和 x64 版本的 UEFI。Windows 10 支持这两种版本。但是,UEFI 不支持跨平台启动。这意味着具有 UEFI x64 的计算机只能运行 64 位操作系统,而具有 UEFI x86 的计算机只能运行 32 位操作系统。


添加了一些关于从 Windows 10 启动、Windows To Go for UEFI 与 Legacy | 32 位与 64 位的信息。

https://technet.microsoft.com/en-us/library/mt185782(v=vs.85).aspx

检查主机电脑与 Windows To Go 驱动器之间的体系结构兼容性

除了 BIOS 中的 USB 启动支持之外,Windows To Go 驱动器上的 Windows 10 映像还必须与主机 PC 的处理器架构和固件兼容,如下表所示。


我也有 Surface Pro 3,并且发现并经历了一些奇怪的事情。

Surface Pro 3 具有以下功能/问题:

  • 它是UEFI“唯一”设备
  • 不支持旧版 BIOS/CSM(兼容模式)(大多数机器的固件中都有一个设置允许您启用该功能,但这台机器没有)
  • 因此,启动较旧的操作系统此类新机器不支持。
  • 它似乎不受支持,而且很可能无法完成;除非有人找到破解方法或解决方法(不受 Microsoft 官方支持)。
    • 此外,Surface Pro 3 出厂时配备了安全启动、TPM,并且其硬盘和分区默认处于 Bit Locker 状态。
    • 这 3 件事导致了启动操作系统的一系列完全不同的问题。
    • 为了实现 VHD 的原生启动,我必须禁用它们

为什么这是一个问题并且为什么会发生这种情况?

类似的例子:

基本概要: 在较新的机器(例如 Surface Pro 3 和东芝笔记本电脑)中,OEM 已开始删除某些东西(上面列出的例子),这些东西原本是为了帮助向后兼容以启动和运行较旧的操作系统。

引用类似线回复由“JHoff80”在 Microsoft 论坛上发布:

抱歉,但我认为你很无助。我的理解是 UEFI 必须具有与你尝试运行的操作系统相同的架构。Surface Pro UEFI 是 64 位的,因此你只能在其上运行 64 位操作系统。

不幸的是,Surface 也没有像许多其他 PC 那样具有“传统启动”选项来模拟 BIOS。

有关 32 位 UEFI 启动的其他文章和信息:

看来 32 位 UEFI 启动存在问题和限制,尤其是在各种硬件 + 固件 + 分区 + 操作系统组合的情况下。

我遇到了下面的情况,它可能对帮助人们调试和解决他们的问题有一定意义。

下面引用的是 Ubuntu 网站。 https://help.ubuntu.com/community/UEFI

要在 UEFI 模式下安装 Ubuntu:

  1. 使用 Ubuntu 的 64 位磁盘。(Ubuntu32bit 无法轻松以 UEFI 模式安装。如果 32 位 UEFI 是您的计算机启动的唯一方式,例如,如果您有一台基于 Intel Atom 的现代笔记本电脑,则会出现问题。在这种情况下,您需要一个复杂的解决方法

使用 E2B 进行 32 位 UEFI 启动:
http://rmprepusb.blogspot.com/2014/09/32-bit-uefi-booting-using-e2b.html

一些基于 Intel Atom 的平板电脑仅为 32 位 UEFI(即使 Atom CPU 本身是 64 位 CPU)。
问题是,如果用户的平板电脑是 32 位 UEFI 系统(不支持 CSM\MBR 模式),那么他们需要找到一个可启动 32 位 UEFI 的操作系统 - 但这样的操作系统并不多!
注意:如果它们是 32 位 UEFI 可启动的,则它们将包含 \EFI\boot\bootia32.efi 文件(以及其他文件)。如果它们不包含该文件,则它们将无法从 32 位 UEFI 系统上的 E2B USB 驱动器启动。
从华硕 T100 启动 Ubuntu 的说明(由 Karan 发现)位于 [此处][5]。Karan 发现他可以将 bootia32.efi 文件从 [此处][6] 复制到 Ubuntu 14.04 64 位 .imgPTN 文件 (\EFI\boot\bootia32.efi),然后他的 Intel Atom 系统就可以启动了。我怀疑这只有在您的固件是 32 位 UEFI 但您的 CPU 是 64 位时才会起作用,就像 Karan 的 [Notion Ink CN89553G][7]。

相似的:https://superuser.com/a/889802/183467

某些系统不支持 Legacy\CSM\MBR 启动。在固件设置中查找这些选项并禁用快速启动。没有 Legacy\CSM\MBR 选项的系统只能进行 UEFI 启动。LinuxLive 和 E2B 适用于 Legacy\CSM\MBR 启动系统。

相关内容