虚拟化 x86-64 的挑战

虚拟化 x86-64 的挑战

我已经使用 VirtualBox 在虚拟机中成功安装了 Windows Vista 32 位。现在我试图对 Windows Vista 64 位进行同样的操作,但就是不行。我已经创建了虚拟机,但似乎无法从 64 位 Vista ISO 映像启动。它弹出此启动管理器错误。

A

主机操作系统是 64 位 Intel Core 2 Duo 处理器上的 Windows 7 64 位。现在,我做了同样的事情,在另一台计算机上安装了相同的 VirtualBox 版本,也运行 Windows 7 64 位,创建了虚拟机,然后...在虚拟机设置过程中,我注意到当我选择客户操作系统时,它有其他选项可供选择。这是屏幕截图。

b

您可以在中间看到那些选项,上面写着 64 位,而我在另一台电脑上没有这些选项。现在,这台电脑运行的是 Intel Core 2 Quad,这是一种高端型号。它支持 Intel 虚拟化技术,而另一台电脑不支持。

这是 Core 2 Duo 计算机上的相同对话框。以下是屏幕截图。

C

这可能是原因吗?这是否意味着您无法模拟 64 位 Windows 客户操作系统根本使用 VirtualBox,除非您的处理器支持 Intel 虚拟化技术?我知道这项技术可以让速度更快,但根本不允许您模拟该操作系统...这有点极端,不是吗?

如果可以的话,您建议我使用什么来代替?

答案1

VirtualBox 手册第 3.1.2 节明确指出,您需要硬件虚拟化支持才能使用 64 位客户操作系统(重点添加):

VirtualBox 支持 64 位客户操作系统,即使在 32 位主机操作系统上也可以支持,只要满足以下条件:

  1. 您需要一个具有硬件虚拟化支持的 64 位处理器(请参见第 10.3 节“硬件与软件虚拟化”)。

  2. 您必须为需要 64 位支持的特定 VM 启用硬件虚拟化;64 位 VM 不支持软件虚拟化。

  3. 如果您想在 32 位主机操作系统上使用 64 位客户机支持,您还必须为特定 VM 选择 64 位操作系统。由于在 32 位主机上支持 64 位会产生额外开销,因此 VirtualBox 仅在明确请求时才启用此支持。

来源:https://www.virtualbox.org/manual/ch03.html#intro-64bitguests

第 10.3 节也指出了这一点(强调):

VirtualBox 的 64 位客户机支持(2.0 版新增)和多处理(SMP,3.0 版新增)都需要启用硬件虚拟化(这不是什么限制,因为当今绝大多数 64 位和多核 CPU 都带有硬件虚拟化功能;这条规则的例外是例如较旧的 Intel Celeron 和 AMD Opteron CPU。)

来源:https://www.virtualbox.org/manual/ch10.html#hwvirt

因此,您需要一个支持 VT-x 或 AMD-V 的处理器才能在 VirtualBox 中使用 64 位客户机。然而、QEMU、Bochs 和 VMWare Player 均支持 64 位客户机,且无需硬件虚拟化支持(至少根据这一页)。

答案2

没有虚拟机管理程序支持在没有虚拟化的情况下在 x86 CPU 上运行 64 位虚拟机,因为虚拟机的隔离是不可能的没有它。

原因在维基百科(重点是我的):

x86-64(AMD64)的初始版本不允许纯软件完全虚拟化,原因是长模式下缺乏分段支持,这使得无法保护虚拟机管理程序的内存,特别是在客户内核地址空间中运行的陷阱处理程序的保护。

修订版 D 及更高版本的 64 位 AMD 处理器(一般来说,采用 90 nm 或更低工艺制造的处理器)添加了对长模式下分段的基本支持,从而可以通过二进制转换在 64 位主机上运行 64 位客户机。英特尔没有在其 x86-64 实现(英特尔 64)中添加分段支持,因此无法在英特尔 CPU 上实现 64 位纯软件虚拟化,但英特尔 VT-x 支持使得在英特尔平台上实现 64 位硬件辅助虚拟化成为可能

虚拟机还表示,缺乏虚拟化使得保护虚拟机面临挑战

虚拟化 x86-64 的挑战

  • 最初的 AMD64 架构不包括 64 位模式下的分段
    • EM64T 也缺少分段

我们如何保护 VMM?

  • 64 位客户机支持需要额外的硬件协助
    • 在较新的 AMD 处理器上,64 位模式下可进行段限制检查
    • VT-x 可用于保护 EM64T 上的 VMM
      • 需要采用“诱捕与模拟”方法,而非 BT 方法

阅读更多:

Intel CPU 需要芯片和 BIOS 中的 EM64T 和 VT 支持才能运行 64 位虚拟机。本文可帮助您确保您的处理器支持 VT,并指导您如何启用此功能
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1003944


在这种情况下,唯一的方法是使用模拟器喜欢量子计算单元或者波克斯半虚拟化软件像 Xen。

阅读更多:在 x86-32 处理器上运行 x86-64 ASM

相关内容