Скрытие статуса виртуальной машины от гостевой операционной системы

ОС хоста: Гостевая ОС Fedora: Windows 10 Виртуализация: KVM

Таким образом, идея состоит в том, чтобы запустить хост-компьютер Windows 10, который не знает, что это виртуальная машина. Поэтому, когда я открываю диспетчер задач на компьютере с гостевым Windows и захожу на вкладку "Производительность", для тега "Виртуальная машина" устанавливается значение "НЕТ". До сих пор я понял, что диспетчер задач делает определения на основе этих двух параметров:

  1. Тестирование присутствующего бита гипервизора CPUID
  2. Тестирование информации виртуального 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"
Другие вопросы по тегам