HOME

TheInfoList



OR:

QEMU is a
free and open-source Free and open-source software (FOSS) is a term used to refer to groups of software consisting of both free software and open-source software where anyone is freely licensed to use, copy, study, and change the software in any way, and the source ...
emulator In computing, an emulator is hardware or software that enables one computer system (called the ''host'') to behave like another computer system (called the ''guest''). An emulator typically enables the host system to run software or use pe ...
(Quick EMUlator). It emulates the machine's
processor Processor may refer to: Computing Hardware * Processor (computing) **Central processing unit (CPU), the hardware within a computer that executes a program *** Microprocessor, a central processing unit contained on a single integrated circuit (I ...
through dynamic
binary translation In computing, binary translation is a form of binary recompilation where sequences of instructions are translated from a ''source'' instruction set to the ''target'' instruction set. In some cases such as instruction set simulation, the target ...
and provides a set of different hardware and device models for the machine, enabling it to run a variety of guest operating systems. It can interoperate with
Kernel-based Virtual Machine Kernel-based Virtual Machine (KVM) is a virtualization module in the Linux kernel that allows the kernel to function as a hypervisor. It was merged into the mainline Linux kernel in version 2.6.20, which was released on February 5, 2007. KV ...
(KVM) to run virtual machines at near-native speed. QEMU can also do emulation for user-level processes, allowing applications compiled for one architecture to run on another.


Licensing

QEMU was written by
Fabrice Bellard Fabrice Bellard (; born 1972) is a French computer programmer known for writing FFmpeg, QEMU, and the Tiny C Compiler. He developed Bellard's formula for calculating single digits of pi. In 2012, Bellard co-founded Amarisoft, a telecommunicat ...
and is
free software Free software or libre software is computer software distributed under terms that allow users to run the software for any purpose as well as to study, change, and distribute it and any adapted versions. Free software is a matter of liberty, n ...
, mainly licensed under the
GNU General Public License The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the four freedoms to run, study, share, and modify the software. The license was the first copyleft for general ...
(GPL for short). Various parts are released under the
BSD license BSD licenses are a family of permissive free software licenses, imposing minimal restrictions on the use and distribution of covered software. This is in contrast to copyleft licenses, which have share-alike requirements. The original BSD lice ...
,
GNU Lesser General Public License The GNU Lesser General Public License (LGPL) is a free-software license published by the Free Software Foundation (FSF). The license allows developers and companies to use and integrate a software component released under the LGPL into their own ...
(LGPL) or other GPL-compatible licenses.


Operating modes

QEMU has multiple operating modes: ;User-mode emulation: In this mode QEMU runs single
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, whi ...
or Darwin/
macOS macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac computers. Within the market of desktop and la ...
programs that were compiled for a different
instruction set In computer science, an instruction set architecture (ISA), also called computer architecture, is an abstract model of a computer. A device that executes instructions described by that ISA, such as a central processing unit (CPU), is called an ...
. System calls are
thunk In computer programming, a thunk is a subroutine used to inject a calculation into another subroutine. Thunks are primarily used to delay a calculation until its result is needed, or to insert operations at the beginning or end of the other sub ...
ed for
endianness In computing, endianness, also known as byte sex, is the order or sequence of bytes of a word of digital data in computer memory. Endianness is primarily expressed as big-endian (BE) or little-endian (LE). A big-endian system stores the mos ...
and for 32/64 bit mismatches. Fast cross-compilation and cross-debugging are the main targets for user-mode emulation. ;System emulation: In this mode QEMU emulates a full computer system, including
peripheral A peripheral or peripheral device is an auxiliary device used to put information into and get information out of a computer. The term ''peripheral device'' refers to all hardware components that are attached to a computer and are controlled by the ...
s. It can be used to provide virtual hosting of several virtual computers on a single computer. QEMU can boot many guest
operating system An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs. Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
s, including
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, whi ...
, Solaris,
Microsoft Windows Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for ...
,
DOS DOS is shorthand for the MS-DOS and IBM PC DOS family of operating systems. DOS may also refer to: Computing * Data over signalling (DoS), multiplexing data onto a signalling channel * Denial-of-service attack (DoS), an attack on a communicat ...
, and BSD; it supports emulating several instruction sets, including x86, MIPS, 32-bit
ARMv7 ARM (stylised in lowercase as arm, formerly an acronym for Advanced RISC Machines and originally Acorn RISC Machine) is a family of reduced instruction set computer (RISC) instruction set architectures for computer processors, configured ...
,
ARMv8 ARM (stylised in lowercase as arm, formerly an acronym for Advanced RISC Machines and originally Acorn RISC Machine) is a family of reduced instruction set computer (RISC) instruction set architectures for computer processors, configured ...
,
PowerPC PowerPC (with the backronym Performance Optimization With Enhanced RISC – Performance Computing, sometimes abbreviated as PPC) is a reduced instruction set computer (RISC) instruction set architecture (ISA) created by the 1991 Apple– IBM– ...
,
SPARC SPARC (Scalable Processor Architecture) is a reduced instruction set computer (RISC) instruction set architecture originally developed by Sun Microsystems. Its design was strongly influenced by the experimental Berkeley RISC system develope ...
,
ETRAX CRIS The ETRAX CRIS is a RISC ISA and series of CPUs designed and manufactured by Axis Communications for use in embedded systems since 1993. The name is an acronym of the chip's features: ''Ethernet, Token Ring, AXis - Code Reduced Instruction Set''. To ...
and MicroBlaze. ;KVM Hosting: Here QEMU deals with the setting up and migration of KVM images. It is still involved in the emulation of hardware, but the execution of the guest is done by KVM as requested by QEMU. ;Xen Hosting: QEMU is involved only in the emulation of hardware; the execution of the guest is done within Xen and is totally hidden from QEMU.


Features

QEMU can save and restore the state of the virtual machine with all programs running. Guest operating systems do not need patching in order to run inside QEMU. QEMU supports the emulation of various architectures, including x86,
MIPS64 MIPS (Microprocessor without Interlocked Pipelined Stages) is a family of reduced instruction set computer (RISC) instruction set architectures (ISA)Price, Charles (September 1995). ''MIPS IV Instruction Set'' (Revision 3.2), MIPS Technologies, ...
(up to Release 6),
SPARC SPARC (Scalable Processor Architecture) is a reduced instruction set computer (RISC) instruction set architecture originally developed by Sun Microsystems. Its design was strongly influenced by the experimental Berkeley RISC system develope ...
(sun4m and sun4u), ARM (Integrator/CP and Versatile/PB),
SuperH SuperH (or SH) is a 32-bit reduced instruction set computing (RISC) instruction set architecture (ISA) developed by Hitachi and currently produced by Renesas. It is implemented by microcontrollers and microprocessors for embedded systems. At the ...
,
PowerPC PowerPC (with the backronym Performance Optimization With Enhanced RISC – Performance Computing, sometimes abbreviated as PPC) is a reduced instruction set computer (RISC) instruction set architecture (ISA) created by the 1991 Apple– IBM– ...
(
PReP PowerPC Reference Platform (PReP) was a standard system architecture for PowerPC-based computer systems (as well as a reference implementation) developed at the same time as the PowerPC processor architecture. Published by IBM in 1994, it allo ...
and
Power Macintosh The Power Macintosh, later Power Mac, is a family of personal computers designed, manufactured, and sold by Apple Computer as the core of the Macintosh brand from March 1994 until August 2006. Described by ''MacWorld'' as "the most important te ...
),
ETRAX CRIS The ETRAX CRIS is a RISC ISA and series of CPUs designed and manufactured by Axis Communications for use in embedded systems since 1993. The name is an acronym of the chip's features: ''Ethernet, Token Ring, AXis - Code Reduced Instruction Set''. To ...
, MicroBlaze, and
RISC-V RISC-V (pronounced "risk-five" where five refers to the number of generations of RISC architecture that were developed at the University of California, Berkeley since 1981) is an open standard instruction set architecture (ISA) based on est ...
. The virtual machine can interface with many types of physical host hardware, including the user's hard disks, CD-ROM drives, network cards, audio interfaces, and USB devices. USB devices can be completely emulated, or the host's USB devices can be used, although this requires administrator privileges and does not work with some devices. Virtual disk images can be stored in a special format ( qcow or qcow2) that only takes up as much disk space as the guest OS actually uses. This way, an emulated 120 GB disk may occupy only a few hundred megabytes on the host. The QCOW2 format also allows the creation of overlay images that record the difference from another (unmodified) base image file. This provides the possibility for reverting the emulated disk's contents to an earlier state. For example, a base image could hold a fresh install of an operating system that is known to work, and the overlay images are used. Should the guest system become unusable (through virus attack, accidental system destruction, etc.), the user can delete the overlay and use an earlier emulated disk image. QEMU can emulate network cards (of different models) which share the host system's connectivity by doing network address translation, effectively allowing the guest to use the same network as the host. The virtual network cards can also connect to network cards of other instances of QEMU or to local TAP interfaces. Network connectivity can also be achieved by bridging a TUN/TAP interface used by QEMU with a non-virtual Ethernet interface on the host OS using the host OS's bridging features. QEMU integrates several services to allow the host and guest systems to communicate; for example, an integrated SMB server and network-port redirection (to allow incoming connections to the virtual machine). It can also boot Linux kernels without a bootloader. QEMU does not depend on the presence of graphical output methods on the host system. Instead, it can allow one to access the screen of the guest OS via an integrated VNC server. It can also use an emulated serial line, without any screen, with applicable operating systems. Simulating multiple CPUs running SMP is possible. QEMU does not require administrative rights to run unless additional kernel modules for improving speed (like KQEMU) are used or certain modes of its network connectivity model are utilized.


Tiny Code Generator

The Tiny Code Generator (TCG) 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 at run time. The whole translation task thus consists of two parts:
basic block In compiler construction, a basic block is a straight-line code sequence with no branches in except to the entry and no branches out except at the exit. This restricted form makes a basic block highly amenable to analysis. Compilers usually deco ...
s 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, for a
just-in-time compiler In computing, just-in-time (JIT) compilation (also dynamic translation or run-time compilations) is a way of executing computer code that involves compilation during execution of a program (at run time) rather than before execution. This may c ...
(JIT) mode. TCG requires dedicated code written to support every architecture it runs on, so that the JIT knows what to translate the ''TCG ops'' to. If no dedicated JIT code is available for the architecture, TCG falls back to a slow interpreter mode called TCG Interpreter (TCI). It also requires updating the target code to use TCG ops instead of the old ''dyngen'' ops. Starting with QEMU Version 0.10.0, TCG ships with the QEMU stable release. It replaces the ''dyngen'', which relied on GCC 3.x to work. -- a review of how the old dyngen worked


Accelerator

''KQEMU'' was a
Linux kernel The Linux kernel is a free and open-source, monolithic, modular, multitasking, Unix-like operating system kernel. It was originally authored in 1991 by Linus Torvalds for his i386-based PC, and it was soon adopted as the kernel for the GNU ...
module Module, modular and modularity may refer to the concept of modularity. They may also refer to: Computing and engineering * Modular design, the engineering discipline of designing complex devices using separately designed sub-components * Modul ...
, also written by
Fabrice Bellard Fabrice Bellard (; born 1972) is a French computer programmer known for writing FFmpeg, QEMU, and the Tiny C Compiler. He developed Bellard's formula for calculating single digits of pi. In 2012, Bellard co-founded Amarisoft, a telecommunicat ...
, which notably sped up emulation of x86 or x86-64 guests on platforms with the same CPU architecture. This worked by running
user mode A modern computer operating system usually segregates virtual memory into user space and kernel space. Primarily, this separation serves to provide memory protection and hardware protection from malicious or errant software behaviour. Kernel ...
code (and optionally some kernel code) directly on the host computer's CPU, and by using processor and peripheral emulation only for
kernel-mode In computer science, hierarchical protection domains, often called protection rings, are mechanisms to protect data and functionality from faults (by improving fault tolerance) and malicious behavior (by providing computer security). Compu ...
and
real-mode Real mode, also called real address mode, is an operating mode of all x86-compatible CPUs. The mode gets its name from the fact that addresses in real mode always correspond to real locations in memory. Real mode is characterized by a 20-bit s ...
code. KQEMU could execute code from many guest OSes even if the host CPU did not support
hardware-assisted virtualization In computing, hardware-assisted virtualization is a platform virtualization approach that enables efficient full virtualization using help from hardware capabilities, primarily from the host processors. A full virtualization is used to emulate a ...
. KQEMU was initially a
closed-source Proprietary software is software that is deemed within the free and open-source software to be non-free because its creator, publisher, or other rightsholder or rightsholder partner exercises a legal monopoly afforded by modern copyright and inte ...
product available free of charge, but starting from version 1.3.0pre10 (February 2007), it was relicensed under the
GNU General Public License The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the four freedoms to run, study, share, and modify the software. The license was the first copyleft for general ...
. QEMU versions starting with 0.12.0 () support large memory which makes them incompatible with KQEMU. Newer releases of QEMU have completely removed support for KQEMU. ''QVM86'' was a
GNU GPLv2 The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the four freedoms to run, study, share, and modify the software. The license was the first copyleft for general us ...
licensed drop-in replacement for the then closed-source KQEMU. The developers of QVM86 ceased development in January, 2007.
Kernel-based Virtual Machine Kernel-based Virtual Machine (KVM) is a virtualization module in the Linux kernel that allows the kernel to function as a hypervisor. It was merged into the mainline Linux kernel in version 2.6.20, which was released on February 5, 2007. KV ...
(''KVM'') has mostly taken over as the Linux-based hardware-assisted virtualization solution for use with QEMU in the wake of the lack of support for KQEMU and QVM86. QEMU can also use KVM on other architectures like ARM and MIPS. Intel's Hardware Accelerated Execution Manager (''HAXM'') is an open-source alternative to KVM for x86-based hardware-assisted virtualization on NetBSD, Linux, Windows and macOS using Intel VT. Intel mostly solicits its use with QEMU for Android development. Starting with version 2.9.0, the official QEMU includes support for HAXM, under the name ''hax''. QEMU also supports the following accelerators: * ''hvf'', Apple's based on Intel VT. * ''whpx'', Microsoft's Windows Hypervisor Platform based on Intel VT or AMD-V. * ''tcg'', QEMU's own Tiny Code Generator. This is the default.


Supported disk image formats

QEMU supports the following
disk image A disk image, in computing, is a computer file containing the contents and structure of a disk volume or of an entire data storage device, such as a hard disk drive, tape drive, floppy disk, optical disc, or USB flash drive. A disk image i ...
formats: *
macOS macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac computers. Within the market of desktop and la ...
Universal Disk Image Format (.dmg) – Read-only *
Bochs Bochs (pronounced "box") is a portable IA-32 and x86-64 IBM PC compatible emulator and debugger mostly written in C++ and distributed as free software under the GNU Lesser General Public License. It supports emulation of the processor(s) (inc ...
– Read-only *
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, whi ...
cloop The compressed loop device (cloop) is a module for the Linux kernel. It adds support for transparently decompressed, read-only block devices. It is not a compressed file system: cloop is mostly used as a convenient way to compress conventional f ...
– Read-only * Parallels disk image (.hdd, .hds) – Read-only * QEMU copy-on-write (.qcow2, .qed, .qcow, .cow) *
VirtualBox Oracle VM VirtualBox (formerly Sun VirtualBox, Sun xVM VirtualBox and Innotek VirtualBox) is a type-2 hypervisor for x86 virtualization developed by Oracle Corporation. VirtualBox was originally created by Innotek GmbH, which was acquired by S ...
Virtual Disk Image (.vdi) *
Virtual PC Windows Virtual PC (successor to Microsoft Virtual PC 2007, Microsoft Virtual PC 2004, and Connectix Virtual PC) is a Hardware virtualization, virtualization program for Microsoft Windows. In July 2006, Microsoft released the Windows version f ...
Virtual Hard Disk VHD (Virtual Hard Disk) and its successor VHDX are file formats representing a virtual hard disk drive (HDD). They may contain what is found on a physical HDD, such as disk partitions and a file system, which in turn can contain files and f ...
(.vhd) * Virtual VFAT *
VMware VMware, Inc. is an American cloud computing and virtualization technology company with headquarters in Palo Alto, California. VMware was the first commercially successful company to virtualize the x86 architecture. VMware's desktop software ru ...
Virtual Machine Disk VMDK (short for Virtual Machine Disk) is a file format that describes containers for virtual hard disk drives to be used in virtual machines like VMware Workstation or VirtualBox. Initially developed by VMware for its proprietary virtual appli ...
(.vmdk) * Raw images (.img) that contain sector-by-sector contents of a disk * CD/DVD images (.iso) that contain sector-by-sector contents of an optical disk (e.g. booting live OSes)


QEMU Object Model

The QEMU Object Model (QOM) provides a framework for registering user creatable types and instantiating objects from those types. QOM provides the following features: * System for dynamically registering types * Support for single-inheritance of types * Multiple inheritance of stateless interfaces


Hardware-assisted emulation

The MIPS-compatible
Loongson Loongson () is the name of a family of general-purpose, MIPS architecture-compatible microprocessors, as well as the name of the Chinese fabless company (Loongson Technology) that develops them. The processors are alternately called Godson pro ...
-3 processor adds 200 new instructions to help QEMU translate x86 instructions; those new instructions lower the overhead of executing x86/ CISC-style instructions in the MIPS pipeline. With additional improvements in QEMU by the
Chinese Academy of Sciences The Chinese Academy of Sciences (CAS); ), known by Academia Sinica in English until the 1980s, is the national academy of the People's Republic of China for natural sciences. It has historical origins in the Academia Sinica during the Republi ...
, Loongson-3 achieves an average of 70% the performance of executing native binaries while running x86 binaries from nine benchmarks. , no source code has been published for this fork, so the claim cannot be verified independently.


Parallel emulation

Virtualization solutions that use QEMU are able to execute multiple virtual CPUs in parallel. For user-mode emulation QEMU maps emulated threads to host threads. For full system emulation, QEMU is capable of running a host thread for each emulated virtual CPU (vCPU). This is dependent on the guest having been updated to support parallel system emulation, currently ARM, Alpha, HP-PA, PowerPC, RISC-V, s390x, x86 and Xtensa. Otherwise a single thread is used to emulate all virtual CPUS (vCPUS) which executes each vCPU in a round-robin manner.


Integration


VirtualBox

VirtualBox Oracle VM VirtualBox (formerly Sun VirtualBox, Sun xVM VirtualBox and Innotek VirtualBox) is a type-2 hypervisor for x86 virtualization developed by Oracle Corporation. VirtualBox was originally created by Innotek GmbH, which was acquired by S ...
, first released in January 2007, used some of QEMU's virtual hardware devices, and had a built-in
dynamic recompiler In computer science, dynamic recompilation is a feature of some emulators and virtual machines, where the system may recompile some part of a program during execution. By compiling during execution, the system can tailor the generated code t ...
based on QEMU. As with KQEMU, VirtualBox runs nearly all guest code natively on the host via the VMM (Virtual Machine Manager) and uses the recompiler only as a fallback mechanism - for example, when guest code executes in
real mode Real mode, also called real address mode, is an operating mode of all x86-compatible CPUs. The mode gets its name from the fact that addresses in real mode always correspond to real locations in memory. Real mode is characterized by a 20- bit ...
. In addition, VirtualBox did a lot of code analysis and patching using a built-in disassembler in order to minimize recompilation. VirtualBox is free and open-source (available under GPL), except for certain features.


Xen-HVM

Xen, a virtual machine monitor, can run in HVM (hardware virtual machine) mode, using
Intel VT-x x86 virtualization is the use of hardware-assisted virtualization capabilities on an x86/x86-64 CPU. In the late 1990s x86 virtualization was achieved by complex software techniques, necessary to compensate for the processor's lack of hardware-a ...
or
AMD-V x86 virtualization is the use of hardware-assisted virtualization capabilities on an x86/x86-64 CPU. In the late 1990s x86 virtualization was achieved by complex software techniques, necessary to compensate for the processor's lack of hardware-as ...
hardware
x86 virtualization x86 virtualization is the use of hardware-assisted virtualization capabilities on an x86/x86-64 CPU. In the late 1990s x86 virtualization was achieved by complex software techniques, necessary to compensate for the processor's lack of hardware-a ...
extensions and ARM
Cortex-A7 The ARM Cortex-A7 MPCore is a 32-bit microprocessor core licensed by ARM Holdings implementing the ARMv7-A architecture announced in 2011. Overview It has two target applications; firstly as a smaller, simpler, and more power-efficient success ...
and
Cortex-A15 The ARM Cortex-A15 MPCore is a 32-bit processor core licensed by ARM Holdings implementing the ARMv7-A architecture. It is a multicore processor with out-of-order superscalar pipeline running at up to 2.5 GHz. Overview ARM has claimed th ...
virtualization extension. 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. They comprise a PIIX3 IDE (with some rudimentary PIIX4 capabilities), Cirrus Logic or plain VGA emulated video, RTL8139 or E1000 network emulation, and ACPI support.Demystifying Xen HVM
APIC support is provided by Xen. Xen-HVM has device emulation based on the QEMU project to provide I/O virtualization to the VMs. Hardware is emulated via a QEMU "device model" daemon running as a backend in dom0. Unlike other QEMU running modes (dynamic translation or KVM), virtual CPUs are completely managed to the hypervisor, which takes care of stopping them while QEMU is emulating memory-mapped I/O accesses.


KVM

KVM (Kernel-based Virtual Machine) is a FreeBSD and Linux kernel module that allows a
user space A modern computer operating system usually segregates virtual memory into user space and kernel space. Primarily, this separation serves to provide memory protection and hardware protection from malicious or errant software behaviour. Kernel ...
program access to the
hardware virtualization Hardware virtualization is the virtualization of computers as complete hardware platforms, certain logical abstractions of their componentry, or only the functionality required to run various operating systems. Virtualization hides the physica ...
features of various processors, with which QEMU is able to offer virtualization for x86, PowerPC, and S/390 guests. When the target architecture is the same as the host architecture, QEMU can make use of KVM particular features, such as acceleration.


Win4Lin Pro Desktop

In early 2005,
Win4Lin Win4Lin is a discontinued proprietary software application for Linux which allowed users to run a copy of Windows 9x, Windows 2000 or Windows XP applications on their Linux desktop. Win4Lin was based on Merge software, a product which changed owne ...
introduced Win4Lin Pro Desktop, based on a 'tuned' version of QEMU and KQEMU and it hosts NT-versions of Windows. In June 2006,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 t
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.Win4Solaris announcement


SerialICE

SerialICE is a QEMU-based firmware debugging tool running system firmware inside of QEMU while accessing real hardware through a serial connection to a host system. This can be used as a cheap replacement for hardware in-circuit emulators (ICE).


WinUAE

WinUAE introduced support for the CyberStorm PPC and Blizzard 603e boards using the QEMU PPC core in version 3.0.0.


Unicorn

Unicorn is a CPU emulation framework based on QEMU's "TCG" CPU emulator. Unlike QEMU, Unicorn focuses on the CPU ''only'': no emulation of any peripherals is provided and raw binary code (outside of the context of an executable file or a system image) can be run directly. Unicorn is thread-safe and has multiple bindings and instrumentation interfaces.


Emulated hardware platforms


x86

Can emulate i386 and x86_64 architecture. Besides the
CPU A central processing unit (CPU), also called a central processor, main processor or just processor, is the electronic circuitry that executes instructions comprising a computer program. The CPU performs basic arithmetic, logic, controlling, a ...
(which is also configurable and can emulate a number of Intel CPU models including (as of 3 March 2018) Sandy Bridge, Ivy Bridge, Haswell, Broadwell and Skylake), the following devices are emulated: * CD/
DVD-ROM The DVD (common abbreviation for Digital Video Disc or Digital Versatile Disc) is a digital optical disc data storage format. It was invented and developed in 1995 and first released on November 1, 1996, in Japan. The medium can store any kind ...
drive using an
ISO image An optical disc image (or ISO image, from the ISO 9660 file system used with CD-ROM media) is a disk image that contains everything that would be written to an optical disc, disk sector by disc sector, including the optical disc file system. ...
*
Floppy disk A floppy disk or floppy diskette (casually referred to as a floppy, or a diskette) is an obsolescent type of disk storage composed of a thin and flexible disk of a magnetic storage medium in a square or nearly square plastic enclosure lined ...
drive * ATA controller or
Serial ATA SATA (Serial AT Attachment) is a computer bus interface that connects host adapter, host bus adapters to mass storage devices such as hard disk drives, optical drives, and solid-state drives. Serial ATA succeeded the earlier Parallel ATA (PATA) ...
AHCI controller *
Graphics card A graphics card (also called a video card, display card, graphics adapter, VGA card/VGA, video adapter, display adapter, or mistakenly GPU) is an expansion card which generates a feed of output images to a display device, such as a computer mo ...
: ''Cirrus CLGD 5446 PCI VGA''-card, Standard-VGA graphics card with Bochs-
VBE VESA BIOS Extensions (VBE) is a VESA standard, currently at version 3, that defines the interface that can be used by software to access compliant video boards at high resolutions and bit depths. This is opposed to the "traditional" int 10h BI ...
, Red Hat QXL VGA *
Network card A network interface controller (NIC, also known as a network interface card, network adapter, LAN adapter or physical network interface, and by similar terms) is a computer hardware component that connects a computer to a computer network. Ear ...
: Realtek 8139C+ PCI, NE2000 PCI, NE2000 ISA, PCnet, E1000 (PCI Intel Gigabit Ethernet) and E1000E (PCIe Intel Gigabit Ethernet)https://qemu.weilnetz.de/doc/qemu-doc.html#pcsys_005fnetwork "i82551, i82557b, i82559er, ne2k_pci, ne2k_isa, pcnet, rtl8139, e1000, smc91c111, lance and mcf_fec"http://pclosmag.com/html/issues/201208/page11.html Networking on QEMU: Setting Up The E1000 & Novell NE2000 ISA Evaluation *
NVMe NVM Express (NVMe) or Non-Volatile Memory Host Controller Interface Specification (NVMHCIS) is an open, logical-device interface specification for accessing a computer's non-volatile storage media usually attached via PCI Express (PCIe) bus. The ...
disk interface *
Serial port In computing, a serial port is a serial communication interface through which information transfers in or out sequentially one bit at a time. This is in contrast to a parallel port, which communicates multiple bits simultaneously in parallel. ...
*
Parallel port In computing, a parallel port is a type of interface found on early computers ( personal and otherwise) for connecting peripherals. The name refers to the way the data is sent; parallel ports send multiple bits of data at once ( parall ...
*
PC speaker A PC speaker is a loudspeaker built into some IBM PC compatible computers. The first IBM Personal Computer, model 5150, employed a standard 2.25 inch magnetic driven (dynamic) speaker. More recent computers use a tiny moving-iron or pie ...
* i440FX/PIIX3 or Q35/ICH9 chipsets *
PS/2 The Personal System/2 or PS/2 is IBM's second generation of personal computers. Released in 1987, it officially replaced the IBM PC, XT, AT, and PC Convertible in IBM's lineup. Many of the PS/2's innovations, such as the 16550 UART (serial p ...
mouse A mouse ( : mice) is a small rodent. Characteristically, mice are known to have a pointed snout, small rounded ears, a body-length scaly tail, and a high breeding rate. The best known mouse species is the common house mouse (''Mus musculus' ...
and
keyboard Keyboard may refer to: Text input * Keyboard, part of a typewriter * Computer keyboard ** Keyboard layout, the software control of computer keyboards and their mapping ** Keyboard technology, computer keyboard hardware and firmware Music * Mu ...
*
SCSI controller A SCSI host adapter is a device used to connect one or more other SCSI devices to a computer bus. It is commonly called a SCSI controller, which is not strictly correct as any component understanding the SCSI protocol can be called a controller. ...
: LSI MegaRAID SAS 1078, LSI53C895A, NCR53C9x as found in the AMD PCscsi and Tekram DC-390 controllers *
Sound card A sound card (also known as an audio card) is an internal expansion card that provides input and output of audio signals to and from a computer under the control of computer programs. The term ''sound card'' is also applied to external audio ...
:
Sound Blaster 16 The Sound Blaster 16 is a series of sound cards by Creative Technology. They are add-on boards for PCs with an ISA or PCI slot. Sound Blaster 16 Sound Blaster 16 (June 1992), the successor to the Sound Blaster Pro, introduced CD-quality dig ...
, AudioPCI ES1370 ( AC97), Gravis Ultrasound, and Intel HD Audio *
Watchdog timer A watchdog timer (sometimes called a ''computer operating properly'' or ''COP'' timer, or simply a ''watchdog'') is an electronic or software timer that is used to detect and recover from computer malfunctions. Watchdog timers are widely used in ...
(Intel 6300 ESB PCI, or iB700 ISA) * USB 1.x/2.x/3.x controllers ( UHCI,
EHCI A host controller interface (HCI) is a register-level interface that enables a host controller for USB or IEEE 1394 hardware to communicate with a host controller driver in software. The driver software is typically provided with an operating syst ...
,
xHCI eXtensible Host Controller Interface (xHCI) is a computer interface specification that defines a register-level description of a host controller for Universal Serial Bus (USB), which is capable of interfacing with USB 1.x, 2.0, and 3.x compatible ...
) * USB devices: Audio, Bluetooth dongle, HID (keyboard/mouse/tablet), MTP, serial interface, CAC smartcard reader, storage ( bulk-only transfer and USB Attached SCSI), Wacom tablet * Paravirtualized VirtIO devices: block device, network card, SCSI controller, video device, serial interface, balloon driver, 9pfs filesystem driver * Paravirtualized Xen devices: block device, network card, console, framebuffer and input device The
BIOS In computing, BIOS (, ; Basic Input/Output System, also known as the System BIOS, ROM BIOS, BIOS ROM or PC BIOS) is firmware used to provide runtime services for operating systems and programs and to perform hardware initialization during the b ...
implementation used by QEMU starting from version 0.12 is SeaBIOS. The VGA BIOS implementation comes from Plex86/
Bochs Bochs (pronounced "box") is a portable IA-32 and x86-64 IBM PC compatible emulator and debugger mostly written in C++ and distributed as free software under the GNU Lesser General Public License. It supports emulation of the processor(s) (inc ...
. The
UEFI UEFI (Unified Extensible Firmware Interface) is a set of specifications written by the UEFI Forum. They define the architecture of the platform firmware used for booting and its interface for interaction with the operating system. Examples ...
firmware for QEMU is OVMF.


PowerPC


PowerMac

QEMU emulates the following PowerMac peripherals: * UniNorth PCI bridge * PCI-VGA-compatible graphics card which maps the ''VESA Bochs Extensions'' * Two PMAC-IDE-Interfaces with hard disk and CD-ROM support. * NE2000 PCI adapter * Non-volatile RAM * VIA-CUDA with ADB keyboard and mouse.
OpenBIOS OpenBIOS is a project aiming to provide free and open source implementations of Open Firmware. It is also the name of such an implementation. Most of the implementations provided by OpenBIOS rely on additional lower-level firmware for hardware in ...
is used as the firmware.


PREP

QEMU emulates the following
PREP PowerPC Reference Platform (PReP) was a standard system architecture for PowerPC-based computer systems (as well as a reference implementation) developed at the same time as the PowerPC processor architecture. Published by IBM in 1994, it allo ...
peripherals: * PCI bridge * PCI VGA-compatible graphics card with ''VESA Bochs Extensions'' * Two IDE interfaces with hard disk and CD-ROM support * Floppy disk drive * NE2000 network adapter * Serial interface * PREP non-volatile RAM * PC-compatible keyboard and mouse On the PREP target, ''Open Hack'Ware'', an Open-Firmware-compatible BIOS, is used.


IBM System p

QEMU can emulate the paravirtual sPAPR interface with the following peripherals: * PCI bridge, for access to virtio devices, VGA-compatible graphics, USB, etc. * Virtual I/O network adapter, SCSI controller, and serial interface * sPAPR non-volatile RAM On the sPAPR target, another Open-Firmware-compatible BIOS is used, called SLOF.


ARM


ARM32

QEMU emulates the
ARMv7 ARM (stylised in lowercase as arm, formerly an acronym for Advanced RISC Machines and originally Acorn RISC Machine) is a family of reduced instruction set computer (RISC) instruction set architectures for computer processors, configured ...
instruction set In computer science, an instruction set architecture (ISA), also called computer architecture, is an abstract model of a computer. A device that executes instructions described by that ISA, such as a central processing unit (CPU), is called an ...
(and down to ARMv5TEJ) with NEON extension. It emulates full systems like Integrator/CP board, Versatile baseboard, RealView Emulation baseboard, XScale-based PDAs, Palm Tungsten, E PDA,
Nokia N800 The Nokia N800 Internet tablet is a wireless Internet appliance from Nokia, originally announced at the Las Vegas CES 2007 Summit in January 2007. N800 allows the user to browse the Internet and communicate using Wi-Fi networks or with mobi ...
and Nokia N810 Internet tablets etc. QEMU also powers the Android emulator which is part of the
Android SDK The Android SDK is a software development kit that includes a comprehensive set of development tools. These include a debugger, libraries, a handset emulator based on QEMU, documentation, sample code, and tutorials. Currently supported developm ...
(most current Android implementations are ARM-based). Starting from version 2.0.0 of their Bada SDK, Samsung has chosen QEMU to help development on emulated 'Wave' devices. In 1.5.0 and 1.6.0 Samsung
Exynos Exynos, formerly Hummingbird (), is a series of ARM-based system-on-chips developed by Samsung Electronics' System LSI division and manufactured by Samsung Foundry. It is a continuation of Samsung's earlier S3C, S5L and S5P line of SoCs. E ...
4210 (dual-core Cortex a9) and Versatile Express
ARM Cortex-A9 The ARM Cortex-A9 MPCore is a 32-bit multi-core processor that provides up to 4 cache-coherent cores, each implementing the ARM v7 architecture instruction set. It was introduced in 2007. Features Key features of the Cortex-A9 core are: * ...
ARM Cortex-A15 The ARM Cortex-A15 MPCore is a 32-bit processor core licensed by ARM Holdings implementing the ARMv7-A architecture. It is a multicore processor with out-of-order superscalar pipeline running at up to 2.5 GHz. Overview ARM has claimed th ...
are emulated. In 1.6.0, the 32-bit instructions of the ARMv8 (AARCH64) architecture are emulated, but 64-bit instructions are unsupported. The Xilinx Cortex A9-based Zynq SoC is modeled, with the following elements: * Zynq-7000 ARM Cortex-A9 CPU * Zynq-7000 ARM Cortex-A9 MPCore * Triple Timer Counter * DDR Memory Controller * DMA Controller (PL330) * Static Memory Controller (NAND/NOR Flash) * SD/SDIO Peripheral Controller (SDHCI) * Zynq Gigabit Ethernet Controller * USB Controller (EHCI - Host support only) * Zynq UART Controller * SPI and QSPI Controllers * I2C Controller


ARM64


SPARC

QEMU has support for both 32- and 64-bit
SPARC SPARC (Scalable Processor Architecture) is a reduced instruction set computer (RISC) instruction set architecture originally developed by Sun Microsystems. Its design was strongly influenced by the experimental Berkeley RISC system develope ...
architectures. When the firmware in the
JavaStation The JavaStation was a Network Computer (NC) developed by Sun Microsystems between 1996 and 2000, intended to run only Java applications. The hardware is based on the design of the Sun SPARCstation series, a very successful line of UNIX workstation ...
(sun4m-Architecture) became version 0.8.1 ''Proll'', 090427 people.redhat.com a
PROM A promenade dance, commonly called a prom, is a dance party for high school students. It may be offered in semi-formal black tie or informal suit for boys, and evening gowns for girls. This event is typically held near the end of the school y ...
replacement used in version 0.8.2, was replaced with
OpenBIOS OpenBIOS is a project aiming to provide free and open source implementations of Open Firmware. It is also the name of such an implementation. Most of the implementations provided by OpenBIOS rely on additional lower-level firmware for hardware in ...
.


SPARC32

QEMU emulates the following '' sun4m/sun4c/sun4d'' peripherals: * IOMMU or IO-UNITs * TCX Frame buffer (graphics card) * Lance (Am7990)
Ethernet Ethernet () is a family of wired computer networking technologies commonly used in local area networks (LAN), metropolitan area networks (MAN) and wide area networks (WAN). It was commercially introduced in 1980 and first standardized in 1 ...
* Non-volatile RAM M48T02/M48T08 * Slave I/O: timers, interrupt controllers,
Zilog Zilog, Inc. is an American manufacturer of microprocessors and 8-bit and 16-bit microcontrollers. It is also a supplier of application-specific embedded system-on-chip (SoC) products. Its most famous product is the Z80 series of 8-bit micropro ...
serial ports, keyboard and power/reset logic * ESP SCSI controller with hard disk and CD-ROM support * Floppy drive (not on SS-600MP) * CS4231 sound device (only on SS-5, not working yet)


SPARC64

Emulating Sun4u (UltraSPARC PC-like machine), Sun4v (T1 PC-like machine), or generic Niagara (T1) machine with the following peripherals: *
UltraSparc IIi The UltraSPARC III, code-named "Cheetah", is a microprocessor that implements the SPARC V9 instruction set architecture (ISA) developed by Sun Microsystems and fabricated by Texas Instruments. It was introduced in 2001 and operates at 600 to 90 ...
APB PCI Bridge * PCI VGA-compatible card with VESA Bochs Extensions * PS/2 mouse and keyboard * Non-volatile RAM M48T59 * PC-compatible serial ports * 2 PCI IDE interfaces with hard disk and CD-ROM support * Floppy disk


MicroBlaze

Supported peripherals: * MicroBlaze with/without MMU, including * AXI Timer and Interrupt controller peripherals * AXI External Memory Controller * AXI DMA Controller * Xilinx AXI Ethernet * AXI Ethernet Lite * AXI UART 16650 and UARTLite * AXI SPI Controller


LatticeMico32

Supported peripherals: From the
Milkymist M-Labs (formerly known as the Milkymist project) is a company and community who develop, manufacture and sell advanced open hardware devices and software. It is known for the Milkymist system-on-chip (SoC) which is a commercialized system-on-chip ...
SoC * UART * VGA * Memory card * Ethernet * pfu * timer


CRIS


OpenRISC


Others

External trees exist, supporting the following targets: *
Zilog Z80 The Z80 is an 8-bit microprocessor introduced by Zilog as the startup company's first product. The Z80 was conceived by Federico Faggin in late 1974 and developed by him and his 11 employees starting in early 1975. The first working samples were ...
090506 homepage.ntlworld.com emulating a Sinclair 48K ZX Spectrum * HP
PA-RISC PA-RISC is an instruction set architecture (ISA) developed by Hewlett-Packard. As the name implies, it is a reduced instruction set computer (RISC) architecture, where the PA stands for Precision Architecture. The design is also referred to as ...
090506 nongnu.org *
RISC-V RISC-V (pronounced "risk-five" where five refers to the number of generations of RISC architecture that were developed at the University of California, Berkeley since 1981) is an open standard instruction set architecture (ISA) based on est ...


See also

* qcow *
Comparison of platform virtualization software Platform virtualization software, specifically emulators and hypervisors, are software packages that emulate the whole physical computer machine, often providing multiple virtual machines on one physical platform. The table below compares basic ...
* Mtools * OVPsim * Q * SIMH *
SPIM SPIM is a MIPS processor simulator, designed to run assembly language code for this architecture. The program simulates R2000 and R3000 processors, and was written by James R. Larus while a professor at the University of Wisconsin–Madison. T ...
* GXemul * GNOME Boxes


References


External links

*
Systems emulation with QEMU
an IBM developerWorks article by M. Tim Jones
QVM86 project page

Debian on an emulated ARM machine

Fedora ARM port emulation with QEMU

The Wikibook "QEMU and KVM"
(in German, or computer translated to English)
QEMU on Windows

QEMU Binaries for Windows

Microblaze emulation with QEMU

QEMU speed comparison

UnifiedSessionsManager - An unofficial QEMU/KVM configuration file definition

Couverture, a code coverage project based on QEMU


* https://github.com/qemu/qemu {{DEFAULTSORT:Qemu Android emulation software Cross-platform free software Free emulation software Free virtualization software Linux emulation software MacOS emulation software PowerPC emulators Software that uses Meson Windows emulation software X86 emulators