QEMU(Quick EMUlator)简单理解是一个虚拟机工具,可以方便的在Linux平台上模拟运行另一个计算机系统,也可以用来运行另一个计算机系统的程序。
它通常被用来在基于x86的Linux计算机上运行Windows和DOS应用程序。也可以在x86 PC平台上运行ARM软件。
在实际的软件开发和测试活动中,经常会发布一个镜像文件,这个镜像文件可以用QEMU打开,里面的环境是已经配置好的。
使用QEMU还有一个好处,就是可以在Ubuntu的虚拟机中,使用QEMU再打开一个虚拟机。
QEMU简介
QEMU: A generic and open source machine emulator and virtualizer.
QEMU是一个通用的开源仿真计算机和虚拟机。
官网路径:
QEMU用于创建仿真和虚拟机环境的开源软件,由Fabrice Bellard开发。作为一个仿真器,它被用来运行为另一个硬件平台编写的操作系统和应用程序;例如,在基于x86的PC上运行ARM软件。
QEMU是一个免费和开源的hypervisor(虚拟化平台)。它通过动态二进制转换来模拟机器的处理器,并为机器提供一套不同的硬件和设备模型,使其能够运行各种客户操作系统。
当作为机器模拟器使用时,QEMU可以在不同的机器(例如你自己的PC)上运行为另一台机器(例如ARM板)制作的操作系统和程序。通过使用动态翻译,它可以实现非常好的性能。
当作为一个虚拟化器使用时,QEMU通过直接在主机CPU上执行客户代码,实现了接近本地执行的性能。QEMU的虚拟化包括在Xen hypervisor下执行或在Linux中使用KVM内核模块。当使用KVM时,QEMU可以虚拟化X86、服务器和嵌入式PowerPC、64位POWER、S390、32位和64位ARM以及MIPS客户程序。
hypervisor(虚拟化平台)
- Kernel Virtual Machine (KVM)
KVMhttp://www.linux-kvm.org/page/Main_Page
KVM(基于内核的虚拟机)是一个完整的虚拟化解决方案,适用于含有虚拟化扩展(Intel VT或AMD-V)的x86硬件上的Linux。它由一个可加载的内核模块(kvm.ko)和一个特定的处理器模块(kvm-intel.ko或kvm-amd.ko)组成,前者提供了核心的虚拟化组件,后者提供了处理器相关功能。
使用KVM,人们可以创建多个虚拟机,来运行未经修改的Linux或Windows镜像。每个虚拟机都有私有的虚拟化硬件:网卡、磁盘、图形适配器(显卡)等。
KVM是开放源码软件。从2.6.20的Linux mainline开始包含KVM的内核组件。从1.3版的QEMU mainline开始包含KVM的用户空间组件。
- XEN
Home - Xen Projecthttps://xenproject.org/
同样是一款开源的hypervisor,2003年产生于剑桥大学的研究项目中。
Xen项目是几个虚拟化相关开源项目的源头。该社区专注于在一些不同的商业和开源应用中推进虚拟化,包括服务器虚拟化、基础设施即服务(IaaS)、桌面虚拟化、安全应用、嵌入式和硬件设备,以及汽车/航空。
Xen项目开发的虚拟化技术为世界上最大的云提供动力,也是(Citrix, Huawei, Inspur, and Oracle)思杰、华为、浪潮和甲骨文的许多商业虚拟化产品的基础。Xen项目代码是一些安全解决方案的基础,包括Qubes OS、Bromium vSentry、A1Logic、AIS SecureView、Adventium Labs Magrana Server、Bitdefender HVI、Star Labs Crucible Hypervisor、Zentific Zazen和Dornerwork的Virtuosity Hypervisor。
Xen项目在其15年中创造的成熟性、稳定性和多功能性是首屈一指的。
上面两种是QEMU所使用的虚拟化平台,都是在基于Linux的。
除了这两种,主流的虚拟化平台还有:VMware公司的hypervisor,和微软的Hyper-V平台。
QEMU是type 2 hypervisor ,在用户空间内运行,进行虚拟硬件仿真,而KVM是type 1 hypervisor,在内核空间内运行,它允许用户空间程序访问各种处理器的硬件虚拟化功能。
如何安装
Debian/Ubuntu下可以直接安装:
$ sudo apt-get install qemu
版本编号规则
从3.0.0版本开始,QEMU使用了一个基于时间的版本编号方案。
主要版本号
第一次发布时为1,之后每年加1.
次要版本号
每次主要版本号更新时重置为0,之后从git master上release的版本逐次加1.
修正版本号
从git master上release的版本,修正版本号为0。从稳定分支上发布的版本逐次加1。
这意味着主要版本号的变化对版本中包含的变化范围没有任何影响。非向后兼容的修改可以在任何主分支版本中进行,只要它们遵循了废止政策,要求在修改前至少有两个版本发出警告。
管理规则
QEMU是软件自由保护协会(Software Freedom Conservancy)的成员,这是一个为开源项目提供法律和管理援助的非营利组织。
软件自由保护协会代表项目持有资产,包括域名和项目基金/捐款。
简单尝试
官网提供了一些测试image以供使用。
Testing/System Images - QEMUhttps://wiki.qemu.org/Testing/System_Images
也可以去网上下载,比如:
Index of /downloads/qemuhttps://busybox.net/downloads/qemu/
这里下载文件:rh-9-shrike.img.bz2,然后解压缩。
也可以在Windows中下载,然后copy到Ubuntu虚拟机中。
使用命令qemu-system-i386和qemu-system-x86_64都可以,取决于你相应用哪个平台来运行这个镜像系统。
$ wget http://busybox.net/downloads/qemu/rh-9-shrike.img.bz2
$ bunzip2 rh-9-shrike.img.bz2
$ ls
rh-9-shrike.img
$ qemu-system-x86_64 rh-9-shrike.img
然后就会弹出一个新的窗口,里面运行着RedHat 9。
以用户 "busybox "或root身份登录,密码都是 "busybox"。
如果你喜欢gui而不是文本模式,可以运行 "startx",但可能不成功。
仿真的系统应该有一个仿真的(伪装的)网络连接,所以你可以用scp方式输入和输出文件。
参考:
https://en.wikibooks.org/wiki/QEMU/https://en.wikibooks.org/wiki/QEMU/Images
Old kernels and new compilers [LWN.net]https://lwn.net/Articles/196929/
Definition of QEMU | PCMaghttps://www.pcmag.com/encyclopedia/term/qemu
更多推荐