QEMU(quick emulator)是一款由免费的可执行硬件虚拟化的开源托管虚拟机(VMM)。其与Bochs,PearPC类似,但拥有高速(配合KVM),跨平台的特性。
QEMU 是一套由法布里斯·贝拉(Fabrice Bellard)所编写的以 GPL 许可证分发源码的模拟处理器,在 GNU/Linux 平台上使用广泛。Bochs,PearPC 等与其类似,但不具备其许多特性,比如高速度及跨平台的特性,通过 KQEMU 这个闭源的加速器,QEMU 能模拟至接近真实电脑的速度。
QEMU 是一个托管的虚拟机镜像,它通过动态的二进制转换,模拟 CPU,并且提供一组设备模型,使它能够运行多种未修改的客户机 OS,可以通过与 KVM(kernel-based virtual machine 开源加速器)一起使用进而接近本地速度运行虚拟机(接近真实电脑的速度)。
QEMU 还可以为 user-level 的进程执行 CPU 仿真,进而允许了为一种架构编译的程序在另外一种架构上面运行(借由 VMM 的形式)。
目前,0.9.1 及之前版本的 qemu 可以使用 kqemu 加速器。在 qemu1.0 之后的版本,都无法使用 kqemu,主要利用 qemu-kvm 加速模块,并且加速效果以及稳定性明显好于 kqemu。
运作模式
QEMU 有两种主要运作模式:
* User mode 模拟模式,亦即是用户模式。QEMU 能启动那些为不
同中央处理器编译的 Linux 程序。而 Wine 及 Dosemu 是其主要目标。
* System mode 模拟模式,亦即是系统模式。QEMU 能模拟整个电脑系统,包括中央处理器及其他周边设备。它使得为跨平台编写的程序进行测试及除错工作变得容易。其亦能用来在一部主机上虚拟数部不同虚拟电脑。
QEMU的主体部份是在 LGPL 下发布的,而其系统模式模拟则是在 GPL 下发布;而 kqemu 这个加速器则是在免费但闭源的条件下发布的。使用 kqemu 可使 QEMU 能模拟至接近实机速度,但其在虚拟的操作系统是 Microsoft Windows 98 或以下的情况下是无用的。
软件优点
默认支持多种架构。可以模拟 IA-32 (x86)个人电脑,AMD 64 个人电脑,MIPS R4000, 升阳的 SPARCsun3 与 PowerPC(PReP 及 Power Macintosh)架构
可扩展,可自定义新的指令集
开源,可移植,仿真速度快
在支持硬件虚拟化的 x86 构架上可以使用 KVM 加速配合内核 ksm 大页面备份内存,速度稳定远超过 VMware ESX
增加了模拟速度,某些程序甚至可以实时运行
可以在其他平台上运行 Linux 的程序
可以储存及还原运行状态(如运行中的程序)
可以虚拟网络卡
软件缺点
对微软视窗及某些主机操作系统的不完善支持(某些模拟的系统仅能运行)
对不常用的架构的支持并不完善
除非使用 kqemu 或 KVM 加速器,否则其模拟速度仍不及其他虚拟软件,如 VMware
比其他模拟软件难安装及使用
使用实例
以下的指令可以建立一个 500MB 大小的"qcow"格式的硬盘映像。
qemu-img create -f qcow c.img 500M
而以下的指令会使虚拟机器在 128MB 内存,使用 c.img 这个用以上介绍的指令所建立的硬盘映像及以 linux.iso 为光盘映像的情况下运行。注意,如果使用物理光驱,请将-cdrom linux.iso 这个参数变为 -cdrom /dev/cdrom 或您所用的光驱。
qemu -clock dynticks -rtc-td-hack -localtime -hda c.img -cdrom linux.iso -boot d -m 128 -enable-audio -localtime
如果想缺省使用全萤幕启动子操作系统,可作以上指令后再加上"-full-screen"这个参数,如想在运行时离开全萤幕,请使用组合键 Ctrl-Alt-F 便可。
参数简介
-L dir 指向 BIOS 和 VGA BIOS 所在目录
-hda/-hdb/-hdd/-hdc “文件名” 使用“文件名”作为硬盘 0/1/2/3 镜像。
-cdrom “文件名” 使用“文件名”作为光盘镜像(文件应该是 ISO 类型)。
Windows 下的使用者,可以透过下列指令使用实体光盘:
-cdrom //./x: -> x 代表光盘名称/位置
例如:-cdrom //./e: -> 使用 E:\ 为光盘
-fda/-fdb “文件名” 使用“文件名”作为磁盘 0/1 镜像。
-boot [a|d|c] 使用磁盘<a>,光盘<d>,或者硬盘<c>启动。
-m 容量指定内存的大小,单位是 MB。
-soundhw c1,... 使用声卡设备。
-soundhw ? 列出所有可使用的声卡
-soundhw all 使用全部声卡
-usb 允许使用 usb 设备。
-usbdevice 名字 添加一个 usb 设备“名字”。
-net nic 创建一块新的网卡。
加速模块
The QEMU 加速模组 (kqemu)
kqemu 这个加速模组是 Fabrice Bellard 专为 Linux 核心而设计的闭源附加程序,目的是为了加速 QEMU 的子系统运行速度。在 x86 硬件上模拟 x86 的操作系统可达到主机速度。
QEMU 加速模组 - 使用者限制条件
QEMU 加速模组,kqemu,是一套闭源商业产品。可作个人使用而不受限制。但如果想使用光碟, ISO 映像或附加套件等方法分发 QEMU 加速模组,则必须联络作者并取得其同意后方可进行。
QVM86
现时除了以上的 kqemu 这个闭源的 QEMU 加速模组外,亦有一个在 GPL 下发布的 QEMU 加速模组。