具有特定CPU的VM


2

是否可以使用仅支持特定指令集的特定CPU创建VM。

例如,我想在具有不支持AVX或SSE指令的CPU的机器上尝试某些东西,是否可以使用没有AVX或SSE支持的CPU创建VM?


这是针对您没有源代码的程序(因此在构建期间不能排除这些功能的使用)?
RonJohn

Answers:


3

VMware文档提到了“CPUID Mask”,但我不知道它是如何配置的。

如果您愿意尝试其他VMM,QEMU可以在命令行启用和禁用CPUID标志。例如,qemu-system-i386 -cpu n270,fpu=off导致虚拟CPU具有n270的功能但禁用了fpu标志。有一个支持的CPU型号和CPUID标志的完整列表qemu-system-i386 -cpu help


3

有点。VMware和VirtualBox不支持仿真,只支持虚拟化。这意味着您无法添加功能。但是,删除功能不应该成为问题。

本文提供了有关如何伪造报告给guest虚拟机的CPUID的一些详细信息。请记住,这并没有真正禁用任何功能。

VMware产品说明(报价):

使用编辑器(例如记事本)打开虚拟机配置文件(.vmx)
添加以下行:

cpuid.1.eax = "00000000000000110100011010101001"
cpuid.1.edx = "10111111111010111111101111111011"

如果CPUID仍未更改或无效,请尝试添加:

cpuid.1.ebx = "00000000000000110100011010101001"
cpuid.1.ecx = "10111111111010111111101111111011"

保存配置文件并启动虚拟机。

VirtualBox说明(引用):

打开命令提示符并切换到VirtualBox工作目录。
运行以下命令以更改CPUID。

vboxmanage modifyvm  --cpuidset 1 000306a9 00100800 3d9ae3bf bfebfbff

启动虚拟机。

如何获得这些CPUID值取决于您,您可能需要查阅CPU供应商的指令集架构手册。

如果要模拟功能,则需要使用模拟器。QEMU可以同时进行虚拟化和完全仿真。它还支持除x86 / x64之外的许多CPU架构。


1
这对于在使用之前测试功能是否存在的性能良好的软件很有用,但我认为对于性能不佳的软件,“缺失”功能将继续正常工作。
Mokubai
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.