我可以在 32 位机器上运行 64 位 VMware 映像吗?

Posted

技术标签:

【中文标题】我可以在 32 位机器上运行 64 位 VMware 映像吗?【英文标题】:Can I run a 64-bit VMware image on a 32-bit machine? 【发布时间】:2010-09-08 12:57:20 【问题描述】:

我已经用谷歌搜索了这个,但似乎没有一个决定性的答案。

我知道它必须被完全模拟并且会像狗一样运行 - 但性能缓慢不一定是问题,因为我只是对在 64 位平台上测试我的一些后台服务代码感兴趣。

【问题讨论】:

我可以为您提供一种安装 64 bit based virtual machine 的方法,甚至无需安装虚拟机管理程序(如 vmware 或 hyper v)。 【参考方案1】:

是的,如果您有 64 位处理器,则可以从 32 位操作系统在 VMWare 中运行 64 位操作系统。

我有一个旧的 Intel Core 2 Duo,上面运行着 Windows XP Professional 2002,我让它工作了。

首先,看看您的 CPU 是否能够运行 64 位操作系统。在 VMware 站点上搜索“处理器检查 64 位兼容性”。运行程序。

如果显示您的处理器有能力,请重新启动计算机并进入 Bios 并查看您是否有“虚拟化”并能够启用它。我能够在这台旧笔记本电脑上的 VMware 下运行 Windows Server 2008 R2。

我希望它对你有用!

【讨论】:

Core 2 Duo 是 64 位处理器。有趣的是,它可以在 32 位版本的 Windows XP 上的 VMWare 中运行。 首先你说你可以在 32 位处理器上运行 64 位操作系统,然后你说你应该检查你的处理器是否是 64 位的? 我使用的是 32 位,2GB RAM,windows 7。嘿,我的虚拟机出现此错误drive.google.com/file/d/0B9LzXNh-gDLNVml5bHl0clZIdUk/…【参考方案2】:

如果您有 32 位硬件,不,您不能运行 64 位客户操作系统。 "VMware software does not emulate an instruction set for different hardware not physically present".

但是,QEMU 可以模拟 64 位处理器,因此您可以转换 VMWare 机器并使用它运行它

来自this 2008-era blog post (mirrored by archive.org):

$ cd /path/to/vmware/guestos
$ for i in \`ls *[0-9].vmdk\`; do qemu-img convert -f vmdk $i -O raw i/vmdk/raw;done
$ cat *.raw >> guestos.img

要运行它,

qemu -m 256 -hda guestos.img

缺点?我们大多数人在没有为虚拟磁盘预分配空间的情况下运行 VMware。因此,当我们从 VMware 转换到 QEMU 时,原始文件将是预分配的总空间。我还在用-f qcow 格式测试它会解决 问题与否。如:

for i in `ls *[0-9].vmdk`; do qemu-img convert -f vmdk $i -O qcow $i/vmdk/qcow; done && cat *.qcow >> debian.img

【讨论】:

【参考方案3】:

如果您的处理器是 64 位并且启用了虚拟化技术 (VT) 扩展(可以在 BIOS 中将其关闭),则可以。你不能在 32 位处理器上做到这一点。

要在 Linux 下检查这一点,您只需查看 /proc/cpuinfo 文件。只需查找适当的标志(vmx 用于 Intel 处理器或 svm 用于 AMD 处理器)

egrep '(vmx|svm)' /proc/cpuinfo

要在 Windows 下检查这一点,您需要使用 CPU-Z 之类的程序,它会显示您的处理器架构和支持的扩展。

【讨论】:

据我了解 John 希望在 32 位处理器上运行虚拟机【参考方案4】:

VMware 不允许您在 32 位主机上运行 64 位客户机。您只需阅读文档即可找到答案。

如果你真的想这样做,你可以使用QEMU,我推荐一个Linux主机,但它会很慢(我真的是说慢)。

【讨论】:

【参考方案5】:

这归结为您机器中的 CPU 是否具有 VT 位(虚拟化),并且 BIOS 允许您将其打开。例如,我的笔记本电脑是 Core 2 Duo,它能够使用它。但是,我的 BIOS 无法打开它。

请注意,我了解到打开此功能会使正常操作速度降低 10-12%,这就是它通常关闭的原因。

【讨论】:

【参考方案6】:

如果您的硬件仅为 32 位,则不会。如果您有 64 位硬件和 32 位操作系统,那么也许可以。详情请参阅Hardware and Firmware Requirements for 64-Bit Guest Operating Systems。它与一个处理器与多个处理器无关。

【讨论】:

【参考方案7】:

是的,你可以。我有一个 64 位 Debian 在 Windows XP 32 位的 VMware 中运行。只要您将 Guest 设置为使用两个处理器,它就可以正常工作。

【讨论】:

【参考方案8】:

VMware?不会。不过,QEMU 有一个可以使用的 x86_64 系统目标。您可能无法直接使用 VMware 映像(IIRC,没有转换工具),但您可以自己安装操作系统等并在其中工作。 QEMU 在启动和运行时可能有点像 PITA,但它往往工作得很好。

【讨论】:

【参考方案9】:

检查工作站的最简单方法是从 VMware 网站下载 VMware Processor Check for 64-Bit Compatibility 工具。

您无法在 32 位处理器上运行 64 位 VM 会话。但是,如果您有 64 位处理器但安装了 32 位主机操作系统并且您的处理器支持正确的扩展,则可以运行 64 位 VM 会话。上面链接的工具会告诉你是否有。

【讨论】:

太棒了!从来不知道这个工具存在! 以上链接不再将您带到引用处理器检查工具的页面。这是一个直接链接:downloads.vmware.com/d/details/… @Phil Ross - 谢谢!我已使用您发布的 URL 更新了答案中的链接。 所以你是说 VMWare 本身做不到。但是您可以按照 dbr 的说明将图像转换为 qemu 图像。或者(给定足够的 RAM)从 64 位主机 VM 中运行 VMWare,该 VM 又是在 qemu 或另一个模拟 64 位处理器的 VM 实用程序中运行的 VM。复杂,但直截了当地说不可能是不正确的。 这里也是 Windows 和 Linux 版本的链接:my.vmware.com/web/vmware/details/processor_check_5_5_dt/…【参考方案10】:

老实说,我对此表示怀疑,原因有很多,但最重要的是,有些指令在 32 位模式下是允许的,但在 64 位模式下是不允许的。具体来说,在 64 位模式下用于编码某些指令和寄存器的 REX 前缀是 0x4f:0x40 形式的字节,但在 32 位模式下,相同的字节是具有固定操作数的 INC 或 DEC。 因此,任何以 REX 为前缀的 64 位指令都将被解释为 INC 或 DEC,并且不会让 VMM 有机会模拟 64 位指令(例如通过发出未定义的操作码异常信号)。

唯一可行的方法是在每条指令之后使用陷阱异常返回到 VMM,以便它可以查看是否需要特殊的 64 位处理。我根本看不到这种情况发生。

【讨论】:

VMWare 不需要这样的陷阱系统。当他们不使用硬件虚拟化支持时,他们会检查每个基本块是否有特权指令,并将其替换为对其处理程序的调用。他们/可以/对 x64 指令做同样的事情,但这会让它成为一个模拟器——不是他们的事。

以上是关于我可以在 32 位机器上运行 64 位 VMware 映像吗?的主要内容,如果未能解决你的问题,请参考以下文章

在 64 位机器上捕获的 32 位进程的调试转储

如何在 64 位机器上以 32 位模式运行 VBScript?

32 位 dll 参考在 64 位机器上没有失败

64 位比较交换 (CAPS) 是不是应该在 32 位机器上工作? (或 64 位机器?)

在 32 位操作系统上运行 64 位 jvm

如何根据目标机器(32 位或 64 位)有条件地使用 WiX 安装文件?