Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

QEMU

From Wikipedia, the free encyclopedia
Free virtualization and emulation software
This article is about the virtual machine monitor. For the Quarterdeck expanded memory manager, seeQEMM.
This articlemay be too technical for most readers to understand. Relevant discussion may be found on thetalk page. Pleasehelp improve it tomake it understandable to non-experts, without removing the technical details.(December 2024) (Learn how and when to remove this message)
QEMU
The free operating systemOpenIndiana running within QEMU, which runs as a process onLinux
Original authorFabrice Bellard
DevelopersQEMU team:
Peter Maydell, et al.
Stable release
10.2.0[1] Edit this on Wikidata / 24 December 2025; 43 days ago (24 December 2025)
Repositorygitlab.com/qemu-project/qemu
Written inC
Operating systemLinux,Microsoft Windows,macOS and some otherUNIX platforms
TypeHypervisor,emulator
LicenseGPL-2.0-only[2]
Websitewww.qemu.org Edit this on Wikidata

TheQuick Emulator (QEMU)[3] is afree and open-sourceemulator that uses dynamicbinary translation to emulate acomputer'sprocessor; that is, it translates the emulated binary codes to an equivalent binary format which is executed by the machine. It provides a variety of hardware and device models for the virtual machine, enabling it to run differentguest operating systems. QEMU can be used with aKernel-based Virtual Machine (KVM) to emulate hardware at near-native speeds. Additionally, it supportsuser-level processes, allowing applications compiled for one processor architecture to run on another.[4]

QEMU supports the emulation ofx86,ARM,PowerPC,RISC-V, andother architectures.

Licensing

[edit]

QEMU isfree software developed byFabrice Bellard. Different components of QEMU are licensed under theGNU General Public License (GPL),BSD license,GNU Lesser General Public License (LGPL), or other GPL-compatible licenses.[5]

Operating modes

[edit]

QEMU has multiple operating modes:[6]

Features

[edit]

QEMU supports the emulation of various architectures, includingx86,MIPS64 (up to Release 6),[9]SPARC (sun4m and sun4u),ARM (Integrator/CP and Versatile/PB),SuperH,PowerPC (PReP andPower Macintosh),ETRAX CRIS,MicroBlaze, andRISC-V. It supports saving the virtual machine state while all programs are running. Guest operating systems do not need patching to run inside QEMU.

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 emulated entirely, 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 inQCOW format, which can significantly reduce image size. QCOW images only occupy the actual used disk space, not the full configured capacity. This means a configured 120 GB disk may only occupy a few hundred megabytes on the host, as QCOW does not store unused disk space in the image file.

The QCOW2 format also allows the creation of overlay images, which are files that store only the changes made from an original (unmodified) base image file. This enables the emulated disk's contents to be reverted to an earlier state. For instance, a base image could contain a fresh installation of a known working operating system, and overlay images can be used to record changes. 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) that share the host system's connectivity by translating network addresses, 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 localTAP 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 integratedSMB server and network-port redirection (to allow incoming connections to the virtual machine). It can also boot Linux kernels without abootloader.

QEMU does not depend on the presence of graphical output methods on the host system. Instead, it provides access to the guest OS screen via an integratedVNC server. It can also use an emulated serial line without any screen, with applicable operating systems.

Simulating multiple CPUs runningSMP is possible.

QEMU does not require administrative rights to run unless additional kernel modules are used to improve speed (likeKQEMU) or certain modes of its network connectivity model are utilized.

Tiny Code Generator

[edit]

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

TCG requires dedicated code written to support every architecture it runs on, so that the JIT knows what to translate theTCG ops to. If no dedicated JIT code is available for the architecture, TCG falls back to a slowinterpreter mode called TCG Interpreter (TCI). It also requires updating the target code to use TCG ops instead of the oldDynGen ops.[clarification needed]

Starting with QEMU Version 0.10.0, TCG ships with the QEMU stable release. It replacesDynGen, which relied on GCC 3.x to work.[10][11]

Accelerator

[edit]

KQEMU was aLinux kernelmodule, also written byFabrice Bellard, which notably sped up emulation of x86 or x86-64 guests on platforms with the same CPU architecture. This worked by runninguser mode code (and optionally some kernel code) directly on the host computer's CPU, and by using processor and peripheral emulation only forkernel-mode andreal-mode code. KQEMU could execute code from many guest operating systems even if the host CPU did not supporthardware-assisted virtualization. KQEMU was initially aclosed-source product available free of charge but starting from version 1.3.0pre10 (February 2007),[12] it wasrelicensed under theGNU General Public License. QEMU versions starting with 0.12.0 (as of August 2009[update]) support large memory which makes them incompatible with KQEMU.[13] Newer releases of QEMU have completely removed support for KQEMU.

QVM86 was aGNU GPLv2 licensed drop-in replacement for the then closed-source KQEMU. The developers of QVM86 ceased development in January 2007.

Kernel-based Virtual Machine (KVM) has mostly taken over as the Linux-based hardware-assisted virtualization solution for use with QEMU following the lack of support for KQEMU and QVM86.[citation needed] QEMU can also use KVM on other architectures likeARM andMIPS.[14]

Intel's Hardware Accelerated Execution Manager (HAXM) is an open-source alternative[15] to KVM for x86-based hardware-assisted virtualization on NetBSD, Linux, Windows and macOS usingIntel VT. As of 2013[update] Intel mostly solicits its use with QEMU for Android development.[16] Starting with version 2.9.0, the official QEMU includes support for HAXM, under the nameHax.[17]

QEMU also supports the following accelerators:[17]

  • hvf, Apple'sHypervisor.framework based on Intel VT.
  • whpx, Microsoft's Windows Hypervisor Platform based on Intel VT or AMD-V.
  • tcg, QEMU's ownTiny Code Generator. This is the default.

Supported disk image formats

[edit]

QEMU supports the followingdisk image formats:[18]

QEMU Object Model

[edit]

TheQEMU Object Model (QOM) provides a framework for registering types that users can make and instantiating objects from those types.[20]

QOM provides the following features:

  • System for dynamically registering types
  • Support for single-inheritance of types
  • Multiple inheritances of stateless interfaces
See also:Object model

Parallel emulation

[edit]

Virtualization solutions that use QEMU can execute multiple virtual CPUs in parallel. For user-mode emulation, QEMU maps emulated threads to host threads. QEMU can run a host thread for each emulated virtual CPU (vCPU) for full system emulation. This depends on the guest being 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

[edit]

VirtualBox

[edit]

VirtualBox, first released in January 2007, used some of QEMU's virtual hardware devices, and had a built-indynamic re-compiler 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 re-compiler only as a fallback mechanism – for example, when guest code executes inreal mode.[21] In addition, VirtualBox did a lot of code analysis and patching using a built-in disassembler to minimize recompilation. VirtualBox is free and open-source (available underGPL), except for certain features.

Xen-HVM

[edit]

Xen, a virtual machine monitor, can run in HVM (hardware virtual machine) mode, usingIntel VT-x orAMD-V hardwarex86 virtualization extensions andARMCortex-A7 andCortex-A15 virtualization extensions.[22] This means that instead of para-virtualized devices, a real set of virtual hardware is exposed to the DomU, enabling it to use real device drivers.

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.[23] 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.[24] APIC support is provided by Xen.

Xen-HVM utilizes device emulation based on the QEMU project to deliver I/O virtualization to virtual machines (VMs). Hardware is emulated through a QEMU "device model" daemon running as a backend in Dom0. Unlike other QEMU modes, such as dynamic translation or KVM, the hypervisor fully manages virtual CPUs, pausing them as necessary while QEMU handles memory-mapped I/O emulation.

KVM

[edit]

KVM (Kernel-based Virtual Machine) is a FreeBSD and Linux kernel module that allows auser space program access to thehardware virtualization features of various processors, with which QEMU can 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

[edit]

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,[25] 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 toVirtual 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.[26]

SerialICE

[edit]

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 hardwarein-circuit emulators (ICE).[27]

WinUAE

[edit]

WinUAE introduced support for theCyberStorm PPC and Blizzard 603e boards using the QEMU PPC core in version 3.0.0.[28]

Unicorn

[edit]

Unicorn is a CPU emulation framework based on QEMU's "TCG" CPU emulator. Unlike QEMU, Unicorn focuses on the CPUonly: 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.[29]

Limbo x86 PC Emulator

[edit]

Limbo is an x86 andARM64 QEMU-based virtual machine for Android.[30] It is one of the few pieces of virtual machine software available for Android capable of emulating Microsoft Windows,[31] although it was designed to emulate Linux and DOS. Unlike other QEMU-based emulators, it does not require users to type commands to use, instead having a user interface to set the virtual machine's settings.

It is more popular in developing countries in Asia such as India, Malaysia, and Thailand on YouTube due to the high usage of the Android Operating System.[32] Limbo was removed from the Google Play Store for unknown reasons between February 2019 and December 2020, though it can still be installed off the developer's website with anAPK (Android Package) installation.[33] Limbo tends to have issues regarding its audio quality and playback. No fixes have been found for these problems as of 2024.[34] Overall, Limbo is less well-known than other virtual machine software, which leads to less available information regarding its troubleshooting.

It is required to install an application known as "Hacker's Keyboard" to use many keyboard functions that a basic Android keyboard cannot do in Limbo x86, such as the Ctrl, Alt, Del, and function keys.[35] It is recommended to install Hacker's Keyboard with an APK file, as the Google Play version says it doesn't work with newer versions of Android.[36][verification needed]

Emulated hardware platforms

[edit]

x86

[edit]

QEMU can emulate thei386 andx86_64 architectures. Besides thecentral processing unit (CPU) (which is also configurable and can emulate a number of Intel CPU models including as of 3 March 2018Sandy Bridge,[37]Ivy Bridge,[38]Haswell,[39]Broadwell[40][41] andSkylake[39]), the following devices are emulated:

TheBIOS implementation used by QEMU starting from version 0.12 isSeaBIOS. The VGA BIOS implementation of SeaBIOS is also used starting from version 2.0.0. TheUEFI firmware for QEMU is OVMF.[45]

PowerPC

[edit]

PowerMac

[edit]

QEMU emulates the followingPowerMac peripherals:

  • UniNorth PCI bridge
  • PCI-VGA-compatible graphics card which maps theVESA Bochs Extensions
  • Two PMAC-IDE-Interfaces with hard disk and CD-ROM support.
  • NE2000 PCI adapter
  • Non-volatile RAM
  • VIA-CUDA withADB keyboard and mouse.

OpenBIOS is used as the firmware.

PREP

[edit]

QEMU emulates the followingPREP peripherals:

  • PCI bridge
  • PCI VGA-compatible graphics card withVESA 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, anOpen-Firmware-compatible BIOS, is used.

IBM System p

[edit]

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

[edit]

ARM32

[edit]
QEMU booted into the ARM port ofFedora 8

QEMU emulates theARMv7instruction set (and down to ARMv5TEJ) with NEON extension.[46] It emulates full systems like Integrator/CP board, Versatile baseboard, RealView Emulation baseboard, XScale-based PDAs, Palm Tungsten|E PDA,Nokia N800 andNokia N810 Internet tablets, etc. QEMU also powers the Android emulator which is part of theAndroid SDK (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, SamsungExynos 4210 (dual-core Cortex-A9) and Versatile ExpressARM Cortex-A9ARM Cortex-A15 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 includes the following components:

  • 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

[edit]

QEMU can emulate 64-bit "A-profile" CPUs that commonly run Linux such as theARM Cortex-A53,ARM Cortex-A57 and theARM Cortex-A72.[47] This allows it to emulate theRaspberry Pi 3 and 4.[48]

SPARC

[edit]

QEMU has support for both 32- and 64-bitSPARC architectures.

When the firmware in theJavaStation (sun4m Architecture) was updated to version 0.8.1,[49] Proll—aPROM replacement—was replaced withOpenBIOS in version 0.8.2.

SPARC32

QEMU emulates the followingsun4m/sun4c/sun4d peripherals:

  • IOMMU or IO-UNITs
  • TCX Frame buffer (graphics card)
  • Lance (Am7990)Ethernet
  • Non-volatile RAMM48T02/M48T08
  • Slave I/O: timers, interrupt controllers,Zilog 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

[edit]

QEMU emulatesSun4u (UltraSPARC PC-like machine),Sun4v (T1 PC-like machine), or genericNiagara (T1) machine with the following peripherals:

  • UltraSparc IIi 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

[edit]

QEMU supports the following peripherals:

  • MicroBlaze with or 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

[edit]

Supported peripherals:From theMilkymist SoC

  • UART
  • VGA
  • Memory card
  • Ethernet
  • pfu
  • timer

CRIS

[edit]
Main article:ETRAX CRIS

OpenRISC

[edit]
Main article:OpenRISC

Others

[edit]

External trees exist, supporting the following targets:

See also

[edit]

References

[edit]
  1. ^"[ANNOUNCE] QEMU 10.2.0 is now available". 24 December 2025. Retrieved24 December 2025.
  2. ^"License - QEMU".
  3. ^"Glossary".National Institute of Standards and Technology. Retrieved2023-04-24.
  4. ^Speed, Richard (2019-04-25)."QEMU 4 arrives with toys for Arm admirers, RISC-V revolutionaries, POWER patriots... you get the idea".www.theregister.co.uk.The Register.Archived from the original on 2019-10-01. Retrieved2019-10-01.
  5. ^"License - QEMU".wiki.qemu.org.
  6. ^"About QEMU".qemu.readthedocs.io.
  7. ^"QEMU OS Support List".www.claunia.com. Archived fromthe original on 2014-05-13. Retrieved2024-03-21. Frequent changes recorded in archive in years before going offline.{{cite web}}: CS1 maint: postscript (link)
  8. ^"Supported host architectures". Archived fromthe original on 2023-09-23. Retrieved2023-09-29.
  9. ^"QEMU PRIP 1 - support for MIPS64 Release 6 - PRPL".wiki.prplfoundation.org. Archived fromthe original on 2017-04-21. Retrieved2014-12-22.
  10. ^"[Qemu-devel] ANNOUNCE: Release 0.10.0 of QEMU".lists.gnu.org.
  11. ^Filardo, Nathaniel (September 11, 2007)."Porting QEMU to Plan 9: QEMU Internals and Port Strategy"(PDF).gsoc.cat-v.org. -- a review of how the old dyngen worked
  12. ^"KQEMU 1.3.0pre10 released - under the GPL [LWN.net]". Lwn.net. February 6, 2007. Retrieved2009-01-03.
  13. ^Liguori, Anthony (10 August 2009)."[Qemu-devel] [PATCH 1/2] Unbreak large mem support by removing kqemu". Retrieved2010-03-11.
  14. ^"QEMU / KVM CPU model configuration".QEMU 5.0.50 (v5.0.0-962-g49ee115552) documentation.
  15. ^"HAXM goes open source". QEMU developers. 2017-11-17. Retrieved2017-01-14.HAXM is now open source
  16. ^"Intel Hardware Accelerated Execution Manager". Intel. 2013-11-27. Retrieved2014-05-12.The Intel Hardware Accelerated Execution Manager (Intel® HAXM) is a hardware-assisted virtualization engine (hypervisor) that uses Intel Virtualization Technology (Intel® VT) to speed up Android app emulation on a host machine.
  17. ^ab"Invocation".QEMU 5.0.50 (v5.0.0-962-g49ee115552) documentation.
  18. ^"QEMU Emulator User Documentation".qemu.weilnetz.de. Archived fromthe original on 2019-04-27. Retrieved2018-04-10.
  19. ^"Booting from an ISO image using qemu".Linux Tips. 3 August 2015.
  20. ^"Qemu Readme".GitHub. 26 October 2021.
  21. ^"VirtualBox Developer FAQ". Archived fromthe original on 2015-03-26. Retrieved2015-02-02.
  22. ^"Xen ARM with Virtualization Extensions".
  23. ^"Oracle and Sun Microsystems - Strategic Acquisitions - Oracle"(PDF).www.sun.com.
  24. ^Demystifying Xen HVMArchived December 22, 2007, at theWayback Machine
  25. ^win4lin VDS announcementArchived February 10, 2008, at theWayback Machine
  26. ^Win4Solaris announcementArchived December 23, 2007, at theWayback Machine
  27. ^"SerialICE".serialice.com.
  28. ^"WinUAE 3.0.0". English Amiga Board. 2014-12-17. Retrieved2016-03-25.
  29. ^"Unicorn & QEMU".Unicorn Engine.
  30. ^"Limbo Emulator Tutorials".Virtual Machinery. Retrieved2023-09-02.
  31. ^How to Install Windows on any Android Device Full Installation [No Root] ( Using Limbo PC Emulator ), retrieved2023-09-02
  32. ^"India: mobile OS share 2022".Statista. Retrieved2023-09-02.
  33. ^"Limbo Downloads".Virtual Machinery. Retrieved2023-09-02.
  34. ^"Downloads".GitHub. Retrieved2023-09-02.
  35. ^Weidner, Klaus (2023-09-01),klausw/hackerskeyboard, retrieved2023-09-02
  36. ^"Hacker's Keyboard - Apps on Google Play".play.google.com. Retrieved2023-09-02.
  37. ^"[Qemu-devel] [PATCH 3/3] add SandyBridge CPU model".lists.gnu.org.
  38. ^"Qemu-Changelog-2.3 x86".wiki.qemu.org.
  39. ^ab"QEMU-changelog-2.6, x86 KVM".wiki.qemu.org.
  40. ^"QEMU-changelog-2.1, x86 KVM".wiki.qemu.org.
  41. ^"QEMU-changelog-2.5, x86 CPU Models and Features".wiki.qemu.org.
  42. ^https://qemu.weilnetz.de/doc/qemu-doc.html#pcsys_005fnetworkArchived 2019-04-27 at theWayback Machine "i82551, i82557b, i82559er, ne2k_pci, ne2k_isa, pcnet, rtl8139, e1000, smc91c111, lance and mcf_fec"
  43. ^http://pclosmag.com/html/issues/201208/page11.htmlArchived 2016-05-05 at theWayback Machine Networking on QEMU: Setting Up The E1000 & Novell NE2000 ISA Evaluation
  44. ^"ChangeLog/0.14". Retrieved2011-08-08.
  45. ^"UEFI/OVMF - Ubuntu Wiki".
  46. ^"gitorious.org Git - rowboat: external-qemu.git/commit".gitorious.org. Archived fromthe original on 2014-03-19. Retrieved2014-03-19.
  47. ^"Setting Up an ARM64 Linux Environment with QEMU".boardor.com. Retrieved2025-02-10.
  48. ^"Arm System emulator".QEMU documentation. Retrieved2024-11-23.
  49. ^"Zaitcev's Linux". Archived fromthe original on 2009-02-19. Retrieved2009-04-27. 090427 people.redhat.com
  50. ^"QEMU Z80 Target". Archived fromthe original on 2016-06-06. 090506 homepage.ntlworld.com
  51. ^"QEMU links". 090506 nongnu.org

External links

[edit]
Wikimedia Commons has media related toQEMU.
Wikibooks has more on the topic of:QEMU
Hardware
(hypervisors)
Native
Hosted
Specialized
Independent
Tools
Operating
system
OS containers
Application containers
Virtual kernel architectures
Related kernel features
Orchestration
Desktop
Application
Network
See also
Retrieved from "https://en.wikipedia.org/w/index.php?title=QEMU&oldid=1333549053"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2026 Movatter.jp