Qemu 是一款功能强大且广泛使用的开源机器模拟与虚拟化软件。它主要有两种运作模式:其一,作为系统模拟器,它能完整模拟整个计算机系统(包括CPU、内存、外设等),使得为一个硬件平台(如ARM)编译的操作系统和程序,无需修改就能在另一个不同的主机平台(如x86 PC)上运行,这在跨平台开发和嵌入式领域至关重要;其二,作为虚拟机管理器,当与KVM等主机硬件虚拟化扩展结合时,它能以接近原生硬件的性能运行虚拟机,常用于服务器虚拟化和云计算。Qemu因其高度的灵活性和可移植性,已成为开发者、测试人员和系统管理员不可或缺的工具。
软件亮点
动态二进制翻译(Dynamic Binary Translation):
QEMU 通过动态二进制翻译技术模拟不同架构的 CPU 指令,支持跨平台运行未修改的操作系统和应用程序。
全系统模拟模式下,通过 TCG(Tiny Code Generator)将客户机指令动态翻译为宿主机指令,实现架构的完整系统仿真。
性能优化方面,通过缓存翻译后的代码块(TCG 缓存)减少重复翻译开销,提升执行效率。
高性能虚拟化:
与 KVM 深度集成,利用 CPU 硬件虚拟化扩展(Intel VT-x/AMD-V)实现高性能虚拟化。
CPU 虚拟化通过 KVM 模块将虚拟机指令直接映射到物理 CPU 执行,避免二进制翻译的性能损耗。
内存虚拟化采用 EPT(Intel)或 NPT(AMD)技术实现客户机物理地址到宿主机物理地址的直接映射,减少内存访问延迟。
I/O 虚拟化优化结合 Virtio 半虚拟化驱动,通过共享内存(Vring)减少虚拟机退出(VM_Exit)次数,提升网络和存储性能。
安全与隔离:
支持安全启动(Secure Boot),通过 OVMF 固件实现 UEFI 安全启动,防止恶意代码注入。
提供 vIOMMU 虚拟化,为虚拟机提供独立 I/O 地址空间,防止设备 DMA 攻击。
支持内存加密(SEV 技术),保护虚拟机内存数据。
利用 Linux cgroups 和 namespace 限制虚拟机资源访问权限,实现权限隔离。
软件功能
系统模拟:
QEMU 能够模拟多种计算机架构,包括 x86、x86-64(AMD64/Intel 64)、ARM、PowerPC、SPARC、MIPS、RISC-V、LoongArch 等。
用户可以在一种架构上运行专为另一种架构编译的操作系统和程序,例如在 x86 计算机上运行 ARM 架构的操作系统。
用户模式模拟:
支持单个程序在不同操作系统用户空间中运行,无需修改程序代码。
对于开发和测试跨平台应用程序非常有用,例如在 Linux 主机上运行 Windows 或 macOS 程序。
KVM 硬件辅助虚拟化:
当在支持硬件虚拟化的处理器(如 Intel VT 或 AMD-V)上运行时,QEMU 可以利用 KVM 模块提供快速虚拟化。
虚拟机能够以接近物理硬件的速度运行,同时保持隔离性和资源控制。
网络模拟:
支持复杂的网络拓扑配置,允许虚拟机之间相互通信或访问互联网。
提供虚拟网络设备(如虚拟网卡、交换机),模拟真实网络环境。
设备模拟:
能够模拟多种硬件设备,包括硬盘、网络接口卡、图形适配器、USB 设备、串口等。
提供 PCIe 直通(VFIO)功能,将物理设备直接分配给虚拟机,实现接近原生性能。
软件特色
跨平台开发与测试:
开发者可以在一台机器上模拟多种不同的硬件环境,测试软件在不同平台上的兼容性和性能。
支持持续集成与自动化测试流程,确保软件在不同环境中的稳定性和性能。
嵌入式系统开发:
适用于嵌入式系统开发,模拟嵌入式设备的硬件环境,帮助开发者在不具备实际硬件的情况下进行软件开发和调试。
提供交叉编译工具链,支持在一个平台上编译运行在另一个平台上的软件。
教育与研究:
在教育和研究领域,QEMU 可以用来模拟不同的硬件平台,帮助学生和研究人员更好地理解计算机体系结构和操作系统的工作原理。
支持 GDB 调试器连接,支持单步执行、断点设置和内存监控,方便教学和实验。
虚拟化技术:
QEMU 可以与 Xen 和 KVM 等虚拟化管理器配合使用,提供高效的虚拟化解决方案,适用于服务器虚拟化和桌面虚拟化。
支持虚拟机快照功能,可以保存虚拟机运行状态(内存、磁盘、设备配置),便于快速恢复或调试。
支持热迁移(Live Migration),在不中断服务的情况下,将运行中的虚拟机从一台宿主机迁移至另一台,适用于负载均衡或硬件维护。
软件优势
开源与免费:
QEMU 遵循 GNU 通用公共许可证第 2 版(GPLv2),源代码开放,用户可以自由使用、修改和分发。
高性能与灵活性:
通过动态二进制翻译和 KVM 硬件辅助虚拟化,提供接近原生性能的仿真效果。
支持多种硬件平台和操作系统的仿真,具有很高的通用性和灵活性。
易于集成:
提供稳定的命令行接口和监控 API,方便与其他管理系统集成。
通常通过 libvirt 库间接调用,与 oVirt、OpenStack 和 virt-manager 等开源应用程序兼容。
丰富的功能:
支持超过 200 种硬件设备的模拟,包括标准外设和特殊设备。
提供虚拟机快照、热迁移、跨存储迁移、安全启动、内存加密等高级功能。
常见问题
启动时提示“No bootable device”
原因:未正确指定启动介质或镜像文件损坏。
解决方案:
使用 -boot 参数指定启动顺序(如 -boot d 表示从光盘启动)。
检查镜像文件完整性,重新下载或修复。
确保镜像文件路径正确,避免空格或特殊字符。
驱动人生 8.16.11.28
CrossOver2021 官方版 v2021
电讯云网咖 最新版 v2.2.5