如何使用 QEMU 模拟 vmx 功能?

How do I emulate the vmx feature with QEMU?

我从 here 了解到,必须通过向命令提供 +vmx 选项来显式启用 QEMU 上的 vmx 功能支持,但问题是它似乎不起作用。在我的系统中,VMX 功能仍然未被检测到。

命令:

qemu-system-x86_64 -no-kvm -cpu qemu64,+vmx,-svm  ...

在我的客人 OS 中,当我执行 cpuid 1 时,我得到 ECX = 0x80802001;位 5 = 0 表示我的虚拟 CPU 没有 VMX。

这是一个错误吗?

或者有其他方法可以在 QEMU 中启用 vmx 功能吗?

以下命令对我有用:

qemu-system-x86_64 -cpu host -kernel kernel/kernel -serial stdio -enable-kvm

-cpu host 使 QEMU 报告主机 CPU VM 内的功能(因此您的 CPU 必须支持 vmx)

-enable-kvm-cpu host

所要求的

尽管根据 this -cpu qemu64,+vmx 应该有效,但它对我也不起作用。

不,QEMU 的处理器仿真模式不支持 vmx 标志。为了在 QEMU 中使用 vmx,您必须将 KVM 与 QEMU 一起使用(将 -no-kvm 替换为 -enable-kvm);并且您的主机处理器必须支持 vmx.

this document中显示了在Linux KVM中支持嵌套的vmx指令;这意味着此功能必须与 -enable-kvm.

一起使用

在我的测试中,选项 -enable-kvm -cpu kvm64,+vmx 有效,因为在客户机 OS.

中检测到 vmx 功能