Возможно ли создать виртуальную машину с определенным процессором, поддерживающим только определенный набор инструкций?
Например, я хочу попробовать что-то на машине с ЦП, который не поддерживает инструкции AVX или SSE. Возможно ли создать виртуальную машину с ЦП, который не поддерживает инструкции AVX или SSE?
решение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, решать вам, возможно, придется обратиться к руководству по архитектуре набора инструкций поставщика вашего процессора.
Если вы хотите эмулировать функции, вам понадобится эмулятор. QEMU может выполнять как виртуализацию, так и полную эмуляцию. Он также поддерживает множество архитектур ЦП, отличных от x86/x64.
решение2
В документации VMware упоминается «маска CPUID», но я не знаю, насколько ее можно настроить.
Если вы готовы поэкспериментировать с другими VMM, QEMU может включать и отключать флаги CPUID в командной строке. Например, qemu-system-i386 -cpu n270,fpu=off
приводит к виртуальному CPU с функциями n270, но с отключенным флагом fpu. Полный список поддерживаемых моделей CPU и флагов CPUID можно найти по адресу qemu-system-i386 -cpu help
.