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?


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.


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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.