用途:指导代理完成 QEMU 系统模拟与 KVM 加速相关任务,覆盖 qemu-system-x86_64 关键参数、virtio 设备、VFIO 设备直通、QMP 监控协议、libvirt/virsh 管理,以及用 -kernel -initrd -append 直接引导内核做内核开发。
适用场景:硬件加速运行 Linux 虚拟机;无需裸机测试自定义内核;用 VFIO 向虚拟机直通 GPU 或网卡;用 libvirt 与 virsh 管理虚拟机;创建快照做可复现测试;直接内核引导开发内核或引导加载程序。
主要能力与用法:
- 基础 KVM 虚拟机:先检查 KVM 支持(egrep -c '(vmx|svm)' /proc/cpuinfo、ls -l /dev/kvm),再用 -enable-kvm、-cpu host、-m、-smp、-drive、-netdev/-device 等参数启动。
- virtio 设备:virtio-blk、virtio-net、virtio-balloon、virtio-scsi,性能优于模拟设备。
- VFIO 直通:将设备绑定到 vfio-pci(如 echo 10de 1c03 | sudo tee /sys/bus/pci/drivers/vfio-pci/new_id、sudo virsh nodedev-detach pci_0000_01_00_0),再用 -device vfio-pci,host=01:00.0;需内核命令行启用 IOMMU(intel_iommu=on 或 amd_iommu=on)。
- QMP 监控:用 -qmp unix:/tmp/qmp.sock,server,nowait 启动,通过 socat - UNIX-CONNECT:/tmp/qmp.sock 发送 qmp_capabilities、query-status、system_powerdown、savevm 等命令。
- libvirt/virsh:virsh define/start/shutdown/destroy/console/snapshot-create-as/list,或用 virt-install 交互式创建虚拟机。
- 内核开发引导:-kernel arch/x86/boot/bzImage、-initrd、-append "console=ttyS0 root=/dev/sda rw nokaslr"、-serial stdio、-display none、-no-reboot;也可用 virtio 磁盘挂载自定义 rootfs。
- 内核调试:-s -S 开启 GDB stub(端口 1234 并等待 GDB),主机 gdb vmlinux 后 target remote :1234、break start_kernel、continue。
- qcow2 磁盘管理:qemu-img create/snapshot/convert/info。
限制与常见问题:KVM 被禁用多因 BIOS 未开 VT-x/AMD-V 或嵌套问题;虚拟机很慢通常是未启用 KVM;VFIO 组错误说明设备不在 IOMMU 组;虚拟机无网络多为 netdev 后端选择错误;内核 panic 常因 root= 错误或缺少驱动;QMP 连接被拒多为套接字未就绪。具体平台与版本差异资料未提供。