QEMU

QEMU

infobox software
developer = Fabrice Bellard
latest release version = 0.9.1
latest release date = release date and age|2008|01|06
operating system = Cross-platform
genre = Emulator
license = Various
website = http://bellard.org/qemu/

QEMU is a processor emulator that relies on dynamic binary translation to achieve a reasonable speed while being easy to port on new host CPU architectures.

In conjunction with CPU emulation, it also provides a set of device models, allowing it to run a variety of unmodified guest operating systems, thus it can be viewed as a hosted virtual machine monitor. It also provides an accelerated mode for supporting a mixture of binary translation (for kernel code) and native execution (for user code), in the same fashion as VMware Workstation and Microsoft Virtual PC.

QEMU can also be used purely for CPU emulation for user level processes; in this mode of operation it is most similar to valgrind.

One feature exclusive to QEMU is that of portability: the virtual machines can be run on any PC, even those where the user has only Limited Rights with no Administrator access, making the 'PC-on-a-USB-stick' concept very real. Similar applications exist (such as MojoPac) but they currently require Administrator rights to run, making them useless in areas such as public libraries, internet cafes, and so on.

Licensing

QEMU was written by Fabrice Bellard and is free software. Specifically, the QEMU virtual CPU core library is released under the GNU Lesser General Public License (GNU LGPL). Many hardware device emulation sources are released under the BSD license. [ [http://bellard.org/qemu/license.html QEMU license] ] When running on Windows, although by default it uses DirectSound, there is the option to use the proprietary FMOD library, which if used disqualifies it for a single, unified, Open Source software license.

Details

QEMU has two operating modes [ [http://bellard.org/qemu/qemu-tech.html QEMU Internals] ] :

; User mode emulation: QEMU can launch Linux or Darwin/Mac OS X processes compiled for one CPU on another CPU. Target OS system calls are thunked for endianness and 32/64 bit mismatches. Wine windows API reimplementation and DOSEMU are the main targets for QEMU in user mode emulation. This mode also eases cross-compilation and cross-debugging. ; Complete Computer System mode emulation: QEMU emulates a full computer system, including a processor and various peripherals. It can be used to provide virtual hosting of several virtual computers on a single computer. QEMU can boot many guest operating systems, including Linux, Solaris, Microsoft Windows, DOS, and BSD [http://www.claunia.com/qemu/] ; it supports emulating several hardware platforms, including x86, AMD64, Alpha, ETRAX CRIS, MIPS, and SPARC.

Features

*Supports emulating IA-32 (x86) PCs, AMD64 PCs, MIPS R4000, Sun's SPARC sun4m, Sun's SPARC sun4u, ARM development boards (Integrator/CP and Versatile/PB), SH4 SHIX board, PowerPC (PReP and Power Macintosh), and ETRAX CRIS architectures.
*Support for other architectures in both host and emulated systems (see homepage for complete list).
*Increased speed—some applications can run in close to real time.
*Implements Copy-On-Write disk image formats. You can declare a multi-gigabyte virtual drive, the disk image will only be as large as what is actually used.
*Also implements overlay images. You can keep a snapshot of the guest system, and write changes to a separate image file. If the guest system breaks, it's simple to roll back to the snapshot.
*Support for running Linux binaries for other architectures.
*Can save and restore the state of the machine (programs running, etc.).
*Virtual network card emulation.
*SMP support.
*Guest OS does not need to be modified/patched
*Performance is improved when the KQEMU kernel module is used.
*Command line tools allow a full control of QEMU without having to run X11.
*Remote control of emulated machine via integrated VNC server
*USB tablet support—this provides "grabless" mouse control. Activated with "-usb -usbdevice tablet".
*QEMU does not need administrative rights to run.

TCG

TCG for Tiny Code Generator, aims to remove the shortcoming of relying on a particular version of GCC or any compiler, instead incorporating the compiler (code generator) into other tasks performed by QEMU in run-time. The whole translation task thus consists of two parts: blocks of target code ("TBs") being rewritten in TCG ops - a kind of machine-independent intermediate notation, and subsequently this notation being compiled for the host's architecture by TCG. Optional optimisation passes are performed between them.

TCG requires that there be dedicated code written to support every architecture it is being run on. It also requires that the target instruction translation be rewritten to take advantage of TCG ops, instead of the previously used "dyngen ops". Currently officially supported host architectures are x86 and AMD64 only, however there exists in-development code for ARM, PowerPC, SPARC, and HPPA. Targets that have been moved over to TCG include i386, AMD64, SPARC, CRIS, MIPS and ARM. It is currently under development and is only available on qemu's SVN server.

Accelerator

Virtualization of machines or operating systems comes at the cost of speed of execution. One tried and true method to reduce the effect (cost) are software based drivers which perform specific functions that would otherwise be very costly to perform by the virtualization software. Two of those software programs, developed for QEMU, are KQEMU and QVM86.

KQEMU

Fabrice Bellard also wrote a Linux kernel module (with preliminary ports to FreeBSD and MS Windows) named "KQEMU" or "QEMU Accelerator", which notably speeds up x86 emulation on x86 platforms. This is accomplished by running user mode code directly on the host computer's CPU, and using processor and peripheral emulation only for kernel mode and real mode code. KQEMU also supports a kernel emulation mode in which portions of kernel mode code run on the host's CPU.

Unlike KVM, KQEMU can execute code from many guest OSes even if the host CPU does not support hardware virtualization. KQEMU supports both x86 and x86_64 CPUs. As a future development [ [http://bellard.org/qemu/kqemu-tech.html#SEC14 KQEMU Technical Documentation] ] for KQEMU there are plans to support the hardware(CPU) based virtualization extensions introduced by Intel VT and AMD-V families of processors.

Also of interest is that the QEMU Accelerator, KQEMU, was initially released free-of-charge but was licensed as a closed-source proprietary product. However, since version 1.3.0pre10 [ [http://lwn.net/Articles/220807/ KQEMU 1.3.0pre10 released - under the GPL [LWN.net ] ] , released on February 5, 2007, it has been available under the GNU General Public License(GPL).

QVM86 anchor|QVM86

QVM86 was a Linux kernel module to provide x86 virtualization capabilities for the QEMU emulator. Virtualization allowed "emulated" code to be run natively on the host CPU, using the CPU protection mechanisms to intercept and emulate privileged events. It was licensed under GNU GPLv2 license. It was developed as a drop-in replacement for the then closed-source KQEMU, which has since been made available under the GPL. The developer of QVM86 ceased development on January 21 2007 as they decided that the project had been rendered obsolete by the release of VirtualBox.

Integration in other virtualization solutions

VirtualBox

In January 2007, VirtualBox was released. It uses some of QEMU's virtual hardware devices and has a built-in dynamic recompiler that is based on QEMU. As with KQEMU, it runs nearly all guest code natively on the host via the VMM (Virtual Machine Manager), and uses the recompiler only for special situations as a fallback mechanism (this holds true for guest code that executes in real mode and some other rare scenarios at runtime) [ [http://virtualbox.org/wiki/Developer_FAQ VirtualBox's Developer FAQ] ] . In addition, VirtualBox goes through a lot of code analysis and patching via a built-in disassembler to reduce usage of the recompiler to a minimum. VirtualBox is open-source software under the GPL, except for a number of enterprise features, and standard user features like USB.

As of the 2.0.2 release (updated 2008-09-12) VirtualBox still has no support for SMP in a Guest OS. It has been confirmed by one of the developers of VirtualBox that SMP is stated to be added in a future release, but a fixed date for it can't be given. [http://forums.virtualbox.org/viewtopic.php?t=1176]

Xen-HVM

The Xen virtual machine monitor can run in HVM (hardware virtual machine) mode, using Intel's VT-x or AMD's AMD-V hardware virtualization extensions. This means that instead of paravirtualized devices, a real set of virtual hardware is exposed to the domU to use real device drivers to talk to.

QEMU includes several components: CPU emulators, emulated devices, generic devices, machine descriptions, user interface, and a debugger. The emulated devices and generic devices in QEMU make up its device models for I/O virtualization [ [http://www.sun.com/blueprints/1107/820-3703.pdf Solaris Operating System Hardware Virtualization Product Architecture] ] .

Xen-HVM has device emulation based on the QEMU project to provide I/O virtualization to the VMs. Hardware is emulated via a patched QEMU "device manager" (qemu-dm) daemon running as a backend in dom0. This means that the virtualized machines see as hardware: a PIIX3 IDE (with some rudimentary PIIX4 capabilities), Cirrus Logic or vanilla VGA emulated video, RTL8139 or NE2000 network emulation, PAE, and somewhat limited ACPI and APIC support and no SCSI emulation. [ [http://ian.blenke.com/xen/hvm/svm/vtx/qemu Demystifying Xen HVM] ]

Kernel-based Virtual Machine (KVM)

KVM is a linux kernel virtualization infrastructure. By itself, it does not perform any emulation. Instead, a user-space program uses the /dev/kvm interface to set up the guest VM's address space, feed it simulated I/O and map its video display back onto the host's and currently, the only such program that does this is a modified version of QEMU [http://kvm.qumranet.com/kvmwiki] .

Darwine

Darwine was originally intended to support compiling of Win32 source into Mach-O/PowerPC binaries for Macintosh computers. The project shifted objectives combining Wine's program loader with QEMU in user mode emulation, to allow running of Win32 binaries on Mac OS X for PowerPC.

Win4Lin Pro Desktop

In early 2005, Win4Lin introduced Win4Lin Pro Desktop, based on a 'tuned' version of QEMU and KQEMU and it hosts NT-versions of Windows. In June 2006 [ [http://weblog.infoworld.com/virtualization/archives/2006/06/win4lin_announc.html win4lin VDS announcement] ] , Win4Lin released Win4Lin Virtual Desktop Server based on the same code base. Win4Lin Virtual Desktop Server serves Microsoft Windows sessions to thin clients from a Linux server.

In September 2006, Win4Lin announced a change of the company name to Virtual Bridges with the release of Win4BSD Pro Desktop, a port of the product to FreeBSD and PC-BSD. Solaris support followed in May 2007 with the release of Win4Solaris Pro Desktop and Win4Solaris Virtual Desktop Server [ [http://win4solaris.com/jml/index.php?option=com_content&task=view&id=17&Itemid=1 Win4Solaris announcement] ] .

Shortcomings

* Incomplete support for Microsoft Windows and other host operating systems; this has improved with recent versions
* Incomplete support for less frequently-used architectures
* No special device drivers (graphics, sound, IO) for guests are available, thus quite large overhead for multimedia applications. For example, a Cirrus Logic graphics chip and various popular sound cards (ES1370, Sound Blaster 16, and AdLib) are emulated, but they do not provide hardware-accelerated performance on the host system. Also, it supports only SDL or Cocoa video output libraries although a patch for GGI support exists [ [http://members.aon.at/berny_f/qemu/ Qemu / Ggi ] ]
* Doesn't compile with modern versions of GCC (no support for versions 4.x). This will be fixed with the TCG.

Managers

Qemu Launcher

Qemu Launcher is a Gtk+ front-end for QEMU, written by Erik Meitner and Linas Žvirblis. Qemu Launcher provides a graphical front-end to many QEMU computer emulator options. It has the capability to create, save, and run multiple virtual machine configurations, and to create and convert disk images. Qemu Launcher also supports launching virtual machines from the command line.

Qemulator

Qemulator is a graphical manager for QEMU under Linux, written by Rainer Haage. Qemulator consists of two components: a management surface to create and set up virtual machines, and a control-panel to manage the on demand functions for a running machine such as mounting and unmounting of filesystems, attaching USB devices, and starting, stopping, pausing or resetting a running system. The control panel also is able to take screenshots and to record audio from the current virtual machine. The command used to start QEMU can be copied to the clipboard for use elsewhere, including starting QEMU without using the launcher.

See also

* qcow
* Comparison of virtual machines
* OpenBIOS
* Q (emulator)

References

External links

* [http://bellard.org/qemu/ QEMU Homepage]
* [http://www.ibm.com/developerworks/linux/library/l-qemu/ Systems Emulation with QEMU] an IBM developerWorks article by M. Tim Jones
* [http://savannah.nongnu.org/projects/qvm86/ QVM86 project page]
* [http://www.goitexpert.com/entry.cfm?entry=ARM-Emulation-With-QEMU ARM Emulation with QEMU]
* [http://qemu-buch.de/ The Book "QEMU"]


Wikimedia Foundation. 2010.

Игры ⚽ Нужна курсовая?

Look at other dictionaries:

  • Qemu — QEMU faisant tourner Kno …   Wikipédia en Français

  • QEMU — faisant tourner Knoppix (sur …   Wikipédia en Français

  • Qemu — Entwickler: Fabrice Bellard Aktuelle Version: 0.10.3 (1. Mai 2009) Betriebssystem: Windows, GNU/Linux, BSD, Mac OS X …   Deutsch Wikipedia

  • QEMU — Entwickler Fabrice Bellard Aktuelle Version 0.15.0[1] (9. August 2011) Betriebssystem Windows, GNU/Linux, BSD, Mac OS X …   Deutsch Wikipedia

  • QEMU — с запущенной в нём операционной системой ReactOS Тип Виртуальная машина Автор …   Википедия

  • QEMU — Saltar a navegación, búsqueda QEMU Captura de pantalla de un sistema Linux ejecutando Qemu. Desarrollador Fabrice Bellard …   Wikipedia Español

  • QEMU — es un programa que ejecuta máquinas virtuales dentro de un sistema operativo, ya sea Linux, Windows, etc. Esta máquina virtual puede ser cualquier tipo de Microprocesador o arquitectura (x86, x86 64, PowerPC, MIPS, SPARC, etc.). En principio, se… …   Enciclopedia Universal

  • Qemu Manager — Saltar a navegación, búsqueda QEMU Manager davereyn.co.uk Información general Diseñado por Dave Reynolds Última versión estable …   Wikipedia Español

  • Qemu manager — es un programa escrito para Windows que hace las veces de interfaz gráfica para el emulador de máquinas virtuales QEMU. El programa permite definir diferentes máquinas virtuales a las que asocia una unidad física o virtual en la que buscar el… …   Enciclopedia Universal

  • Qemu — …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”