Скрытие статуса виртуальной машины от гостевой операционной системы
ОС хоста: Гостевая ОС Fedora: Windows 10 Виртуализация: KVM
Таким образом, идея состоит в том, чтобы запустить хост-компьютер Windows 10, который не знает, что это виртуальная машина. Поэтому, когда я открываю диспетчер задач на компьютере с гостевым Windows и захожу на вкладку "Производительность", для тега "Виртуальная машина" устанавливается значение "НЕТ". До сих пор я понял, что диспетчер задач делает определения на основе этих двух параметров:
- Тестирование присутствующего бита гипервизора CPUID
- Тестирование информации виртуального BIOS DMI и порта гипервизора
Я хочу запустить Windows 10 на виртуальной машине (как гость) и убедить ее, что ее нет на виртуальной машине. Причин действительно много: прохождение через GPU, переключатели уничтожения драйверов, тестирование и т. Д.
Может кто-нибудь помочь мне настроить эту ВМ, чтобы он больше не знал, что это ВМ.
Я также использую Virt-Manager.
Ответ от Майкла, приведенный ниже, решает проблему и дает четкие указания. Однако даже если цель была достигнута и в диспетчере задач об этом больше не сообщается как о виртуальной машине, когда в PowerShell выполняется команда "systeminfo", все в порядке, за исключением "Версии BIOS", которая выглядит примерно так: SeaBios-......fedora28....."и" Производитель системы ", которая гласит"QEMU".
Можно ли изменить эти параметры?
Спасибо за ваше время и усилия.
2 ответа
Чтобы скрыть гипервизор от гостевой ОС, нужно сделать две вещи:
- Скрыть флаг функции процессора гипервизора.
- Скрыть гипервизор CPUID оставляет.
Ничто из этого не может быть сделано полностью в virt-manager; вам придется редактировать виртуальную машину XML.
По умолчанию для ЦПУ установлено значение "Гипервизор по умолчанию":
Это приводит к "QEMU Virtual CPU версии 2.5+"
Во-первых, вам нужно будет установить тип процессора в virt-manager. Виртуальный процессор QEMU по умолчанию не может удалить свой флаг гипервизора в libvirt.
Для лучшей производительности и функциональности вам просто нужно выбрать "Копировать конфигурацию центрального процессора" и "Применить". Это позволит вам использовать вложенную виртуализацию, запуская 64-битные ускоренные виртуальные машины внутри этой виртуальной машины.
Теперь в виртуальной машине будет раздел CPU, который вы можете редактировать. Бежать sudo virsh edit <vmname>
, Раздел процессора будет выглядеть так:
<cpu mode='host-model' check='partial'>
<model fallback='allow'/>
</cpu>
Вам нужно добавить элемент для удаления функции ЦП гипервизора, чтобы он выглядел так:
<cpu mode='host-model' check='partial'>
<model fallback='allow'/>
<feature policy='disable' name='hypervisor'/>
</cpu>
Теперь вам также нужно отключить гипервизор CPUID листья. Это позволяет работать некоторым другим вещам, таким как драйверы NVIDIA.
Это делается путем добавления нового элемента внутри <features>
элемент.
Чуть выше:
</features>
Вы должны добавить:
<kvm>
<hidden state='on'/>
</kvm>
Теперь выключите виртуальную машину и запустите ее снова (перезагрузка не достаточна; требуется полное отключение).
На этом этапе диспетчер задач показывает:
Вы также можете запустить systeminfo
в PowerShell или командной строке. Внизу, если все хорошо, вы увидите все ответы "Да" в разделе Hyper-V:
Hyper-V Requirements: VM Monitor Mode Extensions: Yes
Virtualization Enabled In Firmware: Yes
Second Level Address Translation: Yes
Data Execution Prevention Available: Yes
Теперь вы можете делать все, что хотели.
Добавьте их в свой файл VMX: -
monitor_control.virtual_rdtsc = "FALSE"
monitor_control.restrict_backdoor = "TRUE"
isolation.tools.getPtrLocation.disable = "TRUE"
isolation.tools.setPtrLocation.disable = "TRUE"
isolation.tools.setVersion.disable = "TRUE"
isolation.tools.getVersion.disable = "TRUE"
monitor_control.disable_directexec = "TRUE"
hypervisor.cpuid.v0 = "FALSE"