特定のCPUを搭載したVM

特定のCPUを搭載したVM

特定の命令セットのみをサポートする特定の CPU を備えた VM を作成することは可能ですか。

たとえば、AVX または SSE 命令をサポートしていない CPU を搭載したマシンで何かを試したいのですが、AVX または SSE をサポートしていない CPU で VM を作成することは可能ですか?

答え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 マスク」について記載されていますが、それがどの程度構成可能なのかはわかりません。

他の VMM を試してみたい場合は、QEMU でコマンド ラインから CPUID フラグを有効または無効にすることができます。たとえば、qemu-system-i386 -cpu n270,fpu=offn270 の機能を持つ仮想 CPU になりますが、fpu フラグは無効になっています。サポートされている CPU モデルと CPUID フラグの完全なリストは にありますqemu-system-i386 -cpu help

関連情報