VM z określonym procesorem

2

Czy można utworzyć maszynę wirtualną z określonym procesorem, który obsługuje tylko określony zestaw instrukcji.

Na przykład chcę wypróbować coś na maszynie, która ma procesor, który nie obsługuje instrukcji AVX lub SSE, czy można utworzyć maszynę wirtualną z procesorem, który nie obsługuje AVX ani SSE?

Humam Helfawi
źródło
Czy dotyczy to programów, dla których nie masz kodu źródłowego (a zatem nie można wykluczyć użycia tych funkcji podczas kompilacji)?
RonJohn

Odpowiedzi:

3

Dokumentacja VMware wspomina o „CPUID Mask”, ale nie wiem, jak to jest konfigurowalne.

Jeśli chcesz eksperymentować z innymi maszynami VMM, QEMU może włączać i wyłączać flagi CPUID w wierszu polecenia. Na przykład qemu-system-i386 -cpu n270,fpu=offprowadzi do wirtualnego procesora z funkcjami n270, ale z wyłączoną flagą procesora. Pełna lista obsługiwanych modeli procesorów i flag CPUID znajduje się pod adresem qemu-system-i386 -cpu help.

dsstorefile1
źródło
3

Sortuj VMware i VirtualBox nie obsługują emulacji, a jedynie wirtualizację. Oznacza to, że nie możesz dodawać funkcji. Jednak usunięcie funkcji nie powinno stanowić problemu.

W tym artykule podano szczegółowe informacje na temat fałszowania identyfikatora CPUID zgłoszonego gościowi. Pamiętaj, że tak naprawdę nie wyłącza to żadnych funkcji.

Instrukcje dotyczące produktów VMware (oferta):

Użyj edytora (np. Notatnika) otwórz plik konfiguracji maszyny wirtualnej (.vmx)
Dodawanie następujących wierszy:

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

Jeśli CPUID nadal się nie zmienia lub jest nieprawidłowy, spróbuj dodać:

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

Zapisz plik konfiguracji i uruchom maszynę wirtualną.

Instrukcje do VirtualBox (cytat):

Otwórz wiersz polecenia i przejdź do katalogu roboczego VirtualBox.
Uruchom następujące polecenie, aby zmienić CPUID.

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

Uruchom maszynę wirtualną.

To, jak uzyskasz te wartości CPUID, zależy od ciebie, prawdopodobnie będziesz musiał zapoznać się z instrukcją architektury swojego dostawcy procesora.

Jeśli chcesz emulować funkcje, musisz użyć emulatora. QEMU może wykonywać zarówno wirtualizację, jak i pełną emulację. Obsługuje również wiele architektur CPU innych niż x86 / x64.

Daniel B.
źródło
1
Jest to dobre w przypadku dobrze zachowującego się oprogramowania, które testuje obecność funkcji przed użyciem, ale zakładam, że w przypadku źle zachowanego oprogramowania „brakujące” funkcje będą nadal działać normalnie.
Mokubai