首页 > 解决方案 > 如何修改KVM创建的windows的CPUID返回值

问题描述

我通过 KVM 创建了一个 windows 7 x86 虚拟机。
当它执行以下指令时:

mov eax, 0x40000000
cpuid

它将返回:

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

那是“Microsoft Hv”。

如何调整 KVM 以返回自定义值?

标签: kvmcpuid

解决方案


如果您的意思是 QEMU/KVM,那么您需要说服 hyperv 启蒙具有不同的配置。

  • 对于 QEMU cli,使用 hv-vendor-id=foobarbaz 作为标志。有关更多信息,请参阅文档
  • 对于 libvirt:在标签<vendor_id state='on' value='foobarbaz'/>之间添加。<hyperv> </hyperv>

一种懒惰的选择是全面禁用启蒙(这将隐藏 hyperv cpuid 叶)。

以下可能不相关,但它是对这个问题的直接回答。 对于直接使用 KVM 的自定义 VMM,请使用 kvm_set_cpuid2 ioctl。查看文档了解更多信息。


推荐阅读