VM mit einer bestimmten CPU

VM mit einer bestimmten CPU

Ist es möglich, eine VM mit einer bestimmten CPU zu erstellen, die nur einen bestimmten Befehlssatz unterstützt?

Ich möchte beispielsweise etwas auf einer Maschine ausprobieren, deren CPU keine AVX- oder SSE-Befehle unterstützt. Ist es möglich, eine VM mit einer CPU zu erstellen, die keine AVX- oder SSE-Unterstützung bietet?

Antwort1

So in etwa. VMware und VirtualBox unterstützen keine Emulation, sondern nur Virtualisierung. Das heißt, Sie können nichthinzufügenFunktionen. Das Entfernen von Funktionen sollte jedoch kein Problem darstellen.

Dieser Artikelenthält einige Details zum Fälschen der CPUID, wie sie dem Gast gemeldet wird. Beachten Sie, dass dadurch keine Funktionen deaktiviert werden.

Anleitung für VMware Produkte (Zitat):

Verwenden Sie einen Editor (z. B. Notepad), öffnen Sie die Konfigurationsdatei der virtuellen Maschine (.vmx)
und fügen Sie die folgenden Zeilen hinzu:

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

Wenn sich die CPUID immer noch nicht geändert hat oder ungültig ist, versuchen Sie Folgendes hinzuzufügen:

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

Speichern Sie die Konfigurationsdatei und starten Sie Ihre virtuelle Maschine.

Anleitung für VirtualBox (Zitat):

Öffnen Sie die Eingabeaufforderung und wechseln Sie zum VirtualBox-Arbeitsverzeichnis.
Führen Sie den folgenden Befehl aus, um die CPUID zu ändern.

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

Starten Sie Ihre virtuelle Maschine.

Wie Sie diese CPUID-Werte erhalten, bleibt Ihnen überlassen. Wahrscheinlich müssen Sie das Handbuch zur Befehlssatzarchitektur Ihres CPU-Herstellers zu Rate ziehen.

Wenn Sie Funktionen emulieren möchten, müssen Sie einen Emulator verwenden. QEMU kann sowohl Virtualisierung als auch vollständige Emulation durchführen. Es unterstützt auch viele andere CPU-Architekturen als x86/x64.

Antwort2

In der VMware-Dokumentation wird eine „CPUID-Maske“ erwähnt, aber ich weiß nicht, wie konfigurierbar diese ist.

Wenn Sie mit anderen VMMs experimentieren möchten, können Sie mit QEMU CPUID-Flags in der Befehlszeile aktivieren und deaktivieren. Beispielsweise qemu-system-i386 -cpu n270,fpu=offführt dies zu einer virtuellen CPU mit den Funktionen eines n270, aber mit deaktiviertem FPU-Flag. Eine vollständige Liste der unterstützten CPU-Modelle und CPUID-Flags finden Sie unter qemu-system-i386 -cpu help.

verwandte Informationen