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