You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Linux下不使用KVM,通过QEMU模拟X86 VMX功能?

用QEMU模拟X86 CPU测试VMX特性的完整指南

刚好我之前做过类似的测试,给你详细梳理一下整个流程,分三个核心部分讲清楚:

1. 启用VMX模拟的QEMU启动参数

要让QEMU模拟支持VMX的x86 CPU,关键是指定带有VMX扩展的CPU型号,同时搭配必要的启动参数。这里分两种场景:

纯软件模拟(TCG模式,无需宿主机硬件支持)

如果你的宿主机CPU没开VT-x/AMD-V,或者想完全用QEMU软件模拟,用以下命令:

qemu-system-x86_64 \
  -m 4G \
  -cpu qemu64,+vmx \
  -hda linux-disk.img \
  -bios /usr/share/qemu/OVMF.fd \
  -display gtk \
  -monitor stdio

参数解释:

  • -m 4G:给模拟系统分配4GB内存,足够Linux运行和嵌套虚拟化测试
  • -cpu qemu64,+vmx:基于qemu64基础CPU,强制开启VMX扩展;也可以用更贴近真实硬件的型号,比如-cpu Haswell,+vmx
  • -hda linux-disk.img:指定你的Linux系统磁盘镜像
  • -bios /usr/share/qemu/OVMF.fd:用UEFI BIOS启动,更适配现代Linux和VMX特性
  • -display gtk:直接弹出GTK窗口显示模拟系统,也可以用-vnc :0通过VNC连接
  • -monitor stdio:把QEMU监控器绑定到终端,方便实时查看模拟状态和调试

硬件加速模式(KVM,需宿主机开启VT-x/AMD-V)

如果宿主机CPU支持并开启了VT-x/AMD-V,加上-enable-kvm可以大幅提升模拟速度,命令如下:

qemu-system-x86_64 \
  -m 4G \
  -cpu Haswell,+vmx \
  -hda linux-disk.img \
  -bios /usr/share/qemu/OVMF.fd \
  -enable-kvm \
  -display gtk \
  -monitor stdio

2. 模拟系统中Linux的启动与VMX测试方法

首先你需要准备一个Linux系统镜像,步骤如下:

  1. 创建空白磁盘镜像:

    qemu-img create -f qcow2 linux-disk.img 20G
    
  2. 挂载Linux ISO安装系统:
    下载Ubuntu/CentOS等Linux发行版的ISO,用QEMU启动并安装:

    qemu-system-x86_64 \
      -m 4G \
      -cpu qemu64,+vmx \
      -hda linux-disk.img \
      -cdrom ubuntu-22.04.3-server-amd64.iso \
      -bios /usr/share/qemu/OVMF.fd \
      -display gtk
    

    按照安装向导完成Linux系统安装即可。

  3. 启动Linux并测试VMX:
    安装完成后,用前面的启动命令启动Linux,进入系统后:

    • 验证VMX是否生效:
      grep -E 'vmx|svm' /proc/cpuinfo
      
      如果输出包含vmx(Intel)或svm(AMD),说明QEMU的VMX模拟已经成功。
    • 测试嵌套虚拟化:
      安装KVM工具链,尝试创建嵌套虚拟机:
      # Ubuntu/Debian系统
      sudo apt update && sudo apt install qemu-kvm libvirt-daemon-system virt-manager
      sudo systemctl start libvirtd
      
      然后用virt-manager图形界面或命令行创建虚拟机,能正常启动就说明VMX功能工作正常。

3. QEMU模拟日志的查看方式

QEMU的日志分两类,宿主机端的模拟日志和模拟系统内部的日志:

宿主机端的QEMU日志

  • 监控器日志:如果启动时加了-monitor stdio,QEMU的实时状态、调试信息会直接输出到终端;如果用了-monitor unix:/tmp/qemu-monitor.sock,可以通过socat连接查看。
  • 调试日志:如果需要详细的VMX相关日志,启动时添加调试参数:
    qemu-system-x86_64 \
      # 其他参数...
      -D qemu-vmx.log \
      -d vmx,guest_errors,cpu
    
    这样所有VMX模拟、CPU相关的调试信息都会写入qemu-vmx.log文件,方便排查问题。
  • 串口输出:加-serial stdio可以把Linux内核的启动日志、系统输出重定向到宿主机终端,适合查看启动阶段的问题。

模拟系统内部的日志

和真实Linux系统完全一样,日志保存在/var/log/目录下,比如:

  • /var/log/syslog:系统通用日志
  • /var/log/kern.log:内核日志,包含VMX相关的内核信息
  • 可以直接在模拟的Linux系统里用cat、tail等命令查看。

内容的提问来源于stack exchange,提问作者wangt13

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:58:07