具有特定CPU的VM

具有特定CPU的VM

是否可以建立具有僅支援特定指令集的特定 CPU 的 VM。

例如,我想在具有不支援 AVX 或 SSE 指令的 CPU 的電腦上嘗試某些操作,是否可以使用不支援 AVX 或 SSE 指令的 CPU 建立虛擬機器?

答案1

有點。 VMware和VirtualBox不支援仿真,僅支援虛擬化。所以這意味著你不能添加特徵。但是,刪除功能應該不會造成問題。

本文有一些關於如何偽造向來賓報告的 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 架構。

答案2

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

如果您願意嘗試其他 VMM,QEMU 可以在命令列啟用和停用 CPUID 標誌。例如,qemu-system-i386 -cpu n270,fpu=off導致虛擬 CPU 具有 n270 的功能,但停用了 fpu 標誌。上有支援的 CPU 型號和 CPUID 標誌的完整清單qemu-system-i386 -cpu help

相關內容