如何修改KVM创建的windows的CPUID返回值
Posted
技术标签:
【中文标题】如何修改KVM创建的windows的CPUID返回值【英文标题】:How to modify the return value of CPUID of windows created by KVM 【发布时间】:2020-10-21 09:31:50 【问题描述】:我通过 KVM 创建了一个 windows 7 x86 虚拟机。 当它执行以下指令时:
mov eax, 0x40000000
cpuid
它会返回这个:
eax=0x40000005
ebx=0x7263694d
ecx=0x666f736f
edx=0x76482074
那是“Microsoft Hv”。
如何调整 KVM 以返回自定义值?
【问题讨论】:
【参考方案1】:如果您的意思是 QEMU/KVM,那么您需要说服 hyperv 启蒙系统采用不同的配置。
对于 QEMU cli,使用 hv-vendor-id=foobarbaz 作为标志。请参阅the docs 了解更多信息。 对于 libvirt:在<hyperv>
</hyperv>
标签之间添加 <vendor_id state='on' value='foobarbaz'/>
。
一种懒惰的替代方法是全面禁用启蒙(这将隐藏 hyperv cpuid 叶)。
以下内容可能不相关,但它是对这个问题的直接回答。 对于直接使用 KVM 的自定义 VMM,请使用 kvm_set_cpuid2 ioctl。查看documentation 了解更多信息。
【讨论】:
以上是关于如何修改KVM创建的windows的CPUID返回值的主要内容,如果未能解决你的问题,请参考以下文章
如何以未使用的 x86 操作码在 linux KVM 中实现新指令
KVM修改网络模式为Bridge后,原有虚拟机该如何修改配置