QEMU 提供系统仿真器、用户模式 CPU 仿真器和存储工具。系统仿真器会模拟一台完整的机器,包括 CPU、内存、固件、总线和设备。用户模式仿真器会转换异构架构的用户空间程序,并将其系统调用映射到主机内核;它不会启动客户机内核。
系统仿真 #
qemu-system-x86_64 会创建一个 x86-64 虚拟机。-m 用于选择客户机内存,-smp 用于选择虚拟 CPU。固件是机器配置的一部分:SeaBIOS 在 x86 上提供传统 BIOS,而 OVMF 提供 UEFI 固件。存储后端与设备彼此独立:-blockdev 定义后端,-device 连接客户机控制器或设备。-drive 是常见组合的便捷简写。
qemu-img create -f qcow2 guest.qcow2 32G
qemu-system-x86_64 \
-m 4G -smp 4 \
-drive file=guest.qcow2,format=qcow2,if=virtio \
-cdrom installer.iso \
-boot order=d \
-display gtk-boot order=d 会选择 CD-ROM 作为初始启动设备。只有在 QEMU 监视器需要与控制终端共享时才使用 -monitor stdio;使用串行控制台的客户机通常改用 -serial stdio。在兼容的 Linux 主机上,可以通过 -accel kvm 启用 KVM 加速。它会改变执行速度,但不会改变客户机设备语义。
支持工具 #
qemu-img 用于创建、转换、检查磁盘镜像以及创建磁盘镜像快照。qemu-nbd 通过 Network Block Device 协议公开镜像。qemu-io 用于向镜像发出受控 I/O,以进行测试。qemu-storage-daemon 通过 QEMU 的块层提供存储后端服务。qemu-pr-helper 协助处理 SCSI 持久预留,qemu-edid 用于测试 EDID 生成。
用户模式可执行文件包括 qemu-aarch64、qemu-riscv64 和 qemu-mips 等命令。当程序具有动态解释器时,需要目标用户空间库树;-L 用于选择该前缀。Binfmt 集成可以为异构架构的可执行文件注册用户模式仿真器,但系统调用的实现仍由主机内核提供。
评论
在 GitHub 上阅读或评论(发表评论需要登录)