Как изменить возвращаемое значение CPUID окон, созданных KVM

Я создаю виртуальную машину Windows 7 x86 с помощью KVM.
Когда она выполняет следующие инструкции:

mov eax, 0x40000000
cpuid

Он вернет это:

eax=0x40000005
ebx=0x7263694d
ecx=0x666f736f
edx=0x76482074

Это Майкрософт Хв.

Как настроить KVM для возврата пользовательского значения?


person qux    schedule 21.10.2020    source источник


Ответы (1)


Если вы имеете в виду QEMU/KVM, то вам нужно убедить просветления гипервизора иметь другую конфигурацию.

  • Для кли QEMU используйте флаг hv-vendor-id=foobarbaz. Дополнительные сведения см. в документах.
  • Для libvirt: добавьте <vendor_id state='on' value='foobarbaz'/> между тегами <hyperv> </hyperv>.

Одна ленивая альтернатива - отключить просветления по всем направлениям (что скроет лист HyperV cpuid).

Следующее, вероятно, не относится к делу, но это прямой ответ на этот вопрос. Для пользовательского VMM, который напрямую использует KVM, используйте ioctl kvm_set_cpuid2. Дополнительные сведения см. в документации.

person ruthafjord    schedule 21.12.2020