[go: nahoru, domu]

Jump to content

QEMU

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by CritterNYC (talk | contribs) at 18:14, 25 August 2007. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

QEMU
Developer(s)Fabrice Bellard
Stable release
0.9.0 / February 5, 2007
Repository
Operating systemWindows, Solaris, Linux, FreeBSD, Mac OS X
TypeEmulator
LicenseVarious
Websitefabrice.bellard.free.fr/qemu

QEMU is a fast processor emulator, allowing full virtualization of a PC system within another one. It is free software on all platforms except for Windows and was written by Fabrice Bellard. QEMU is a hypervisor and is similar to projects such as Bochs, VMware Workstation and PearPC, but has several features these lack, including increased speed on x86 (through an optional accelerator), and support for multiple architectures in-progress. By using dynamic translation it achieves a reasonable speed while being easy to port on new host CPUs.

Details

QEMU has two operating modes:

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 and DOSEMU are the main targets for QEMU.
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, Windows, DOS, and BSD; it supports emulating several hardware platforms, including x86, amd64, alpha, mips, and sparc.


The majority of the program is under the LGPL, with the user mode emulation under the GPL, though the Windows port uses the proprietary FMOD sound layer[1].

Accelerator

Fabrice Bellard also wrote a Linux kernel module (with preliminary ports to FreeBSD and Windows) named KQEMU or QEMU Accelerator, which notably speeds up i386 emulation on i386 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.

KQEMU versus QVM86

QEMU accelerator module was initially released as a closed-source proprietary product (although it was always given away at zero cost). Since version 1.3.0pre10[2], which was released on February 5, 2007, it has been available under the GNU General Public License.

When QEMU accelerator was still proprietary, a GPL-licensed module appeared that purported to perform the same task, QVM86, although it was abandoned as of early 2007 when VirtualBox was released.

KQEMU has been licensed by Win4Lin for use in their Win4Lin Pro Desktop product.

VirtualBox

In January 2007, VirtualBox was released, which has a built-in dynamic recompiler that is based on QEMU. As with KQEMU, it runs nearly all guest code natively on the host, and uses the recompiler only for special situations. 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.

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, and PowerPC (PReP and Power Macintosh) 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".

Shortcomings

Incomplete support for Microsoft Windows and other host operating systems (emulation of these systems is just fine). 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[3]

See also

References