Array ( [0] => {{short description|Free virtualization and emulation software}} [1] => {{about|the virtual machine monitor|the Quarterdeck expanded memory manager|QEMM}} [2] => [3] => {{Lead too short|date=September 2022}} [4] => {{Infobox software [5] => | logo = [[File:Qemu logo.svg|200px]] [6] => | screenshot = QEMU 6.2 screenshot.png [7] => | caption = The free operating system [[OpenIndiana]] running within QEMU, which runs as processes on [[Linux]] [8] => | developer = QEMU team:
Peter Maydell, et al. [9] => | author = [[Fabrice Bellard]] [10] => | latest release version = {{wikidata|property|preferred|references|edit|Q624699|P348|P548=Q2804309}} [11] => | latest release date = {{wikidata|qualifier|preferred|single|Q624699|P348|P548=Q2804309|P577}} [12] => | latest preview version = {{wikidata|property|preferred|references|edit|Q624699|P348|P548=Q51930650}} [13] => | latest preview date = {{wikidata|qualifier|preferred|single|Q624699|P348|P548=Q51930650|P577}} [14] => | operating system = [[Linux]], [[Microsoft Windows]], [[macOS]] and some other [[UNIX]] platforms [15] => | programming language = [[C (programming language)|C]] [16] => | genre = [[Hypervisor]], [[Emulator]] [17] => | license = [[GNU General Public License|GPL-2.0-only]]{{cite web|url=https://wiki.qemu.org/License|title=License - QEMU}} [18] => }} [19] => [20] => '''QEMU''' (Quick Emulator{{cite web |url=https://csrc.nist.gov/glossary/term/qemu |title=Glossary |website=National Institute of Standards and Technology |access-date=2023-04-24}}) is a [[free and open-source]] [[emulator]]. It emulates a computer's [[central processing unit|processor]] through dynamic [[binary translation]] and provides a set of different hardware and device models for the machine, enabling it to run a variety of [[guest operating system]]s. It can interoperate with [[Kernel-based Virtual Machine]] (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.{{cite web |url = https://www.theregister.co.uk/2019/04/25/qemu_4/ |title = QEMU 4 arrives with toys for Arm admirers, RISC-V revolutionaries, POWER patriots... you get the idea |last = Speed |first = Richard |date = 2019-04-25 |website = www.theregister.co.uk |publisher = [[The Register]] |language = en |url-status = live |archive-url = https://archive.today/20191001070134/https://www.theregister.co.uk/2019/04/25/qemu_4/ |archive-date = 2019-10-01 |access-date = 2019-10-01}} [21] => [22] => QEMU supports the emulation of various architectures, including [[x86]], ARM, [[PowerPC]], [[RISC-V]], and others. [23] => [24] => ==Licensing== [25] => QEMU was written by [[Fabrice Bellard]] and is [[free software]], mainly licensed under the [[GNU General Public License]] (GPL for short). Various parts are released under the [[BSD license]], [[GNU Lesser General Public License]] (LGPL) or other GPL-compatible licenses.{{cite web|url=http://wiki.qemu.org/License|title=License - QEMU|website=wiki.qemu.org}} [26] => [27] => ==Operating modes== [28] => QEMU has multiple operating modes:{{cite web|url=https://qemu.readthedocs.io/en/master/about/index.html|title=About QEMU|website=qemu.readthedocs.io}} [29] => [30] => ;User-mode emulation: In this mode QEMU runs single [[Linux]] or [[Darwin (operating system)|Darwin]]/[[macOS]] programs that were compiled for a different [[instruction set]]. System calls are [[thunk]]ed for [[endianness]] and for 32/64 bit mismatches. Fast cross-compilation and cross-debugging are the main targets for user-mode emulation. [31] => ;System emulation: In this mode QEMU emulates a full computer system, including [[peripheral]]s. It can be used to provide virtual hosting of several virtual computers on a single computer. QEMU can boot many guest [[operating system]]s, including [[Linux]], [[Solaris (operating system)|Solaris]], [[Microsoft Windows]], [[DOS]], and [[BSD]];{{cite web|url=http://www.claunia.com/qemu/|title=QEMU OS Support List|website=www.claunia.com|archive-url=https://web.archive.org/web/20140513145837/http://www.claunia.com/qemu/|archive-date=2014-05-13|access-date=2024-03-21|postscript=. Frequent changes recorded in archive in years before going offline.}} it supports emulating several instruction sets, including [[x86]], [[MIPS architecture|MIPS]], 32-bit [[ARMv7]], [[ARMv8]], [[PowerPC]], [[RISC-V]], [[SPARC]], [[ETRAX CRIS]] and [[MicroBlaze]]. [32] => ;Hypervisor Support: In this mode QEMU either acts as a Virtual Machine Manager (VMM) or as a device emulation back-end for [[virtual machines]] running under a [[hypervisor]]. The most common is Linux's [[Kernel-based Virtual Machine|KVM]] but the project supports a number of hypervisors including [[Xen]], Apple's HVF, Windows' WHPX and NetBSD's nvmm.{{cite web|url=https://qemu.readthedocs.io/en/v8.1.0/about/build-platforms.html#supported-host-architectures|title=Supported host architectures}} [33] => [34] => ==Features== [35] => 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. [36] => [37] => QEMU supports the emulation of various architectures, including x86, [[MIPS architecture|MIPS64]] (up to Release 6),{{cite web|url=http://wiki.prplfoundation.org/wiki/QEMU_PRIP_1_-_support_for_MIPS64_Release_6|title=QEMU PRIP 1 - support for MIPS64 Release 6 - PRPL|website=wiki.prplfoundation.org|access-date=2014-12-22|archive-url=https://web.archive.org/web/20170421171437/http://wiki.prplfoundation.org/wiki/QEMU_PRIP_1_-_support_for_MIPS64_Release_6|archive-date=2017-04-21|url-status=dead}} [[SPARC]] (sun4m and sun4u), [[ARM architecture|ARM]] (Integrator/CP and Versatile/PB), [[SuperH]], [[PowerPC]] ([[PReP]] and [[Power Macintosh]]), [[ETRAX CRIS]], [[MicroBlaze]], and [[RISC-V]]. [38] => [39] => 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. [40] => [41] => Virtual disk images can be stored in a special format ([[qcow|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. [42] => [43] => 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 [[TUN/TAP|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. [44] => [45] => QEMU integrates several services to allow the host and guest systems to communicate; for example, an integrated [[Server Message Block|SMB]] server and network-port redirection (to allow incoming connections to the virtual machine). It can also boot Linux kernels without a bootloader. [46] => [47] => 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. [48] => [49] => Simulating multiple CPUs running [[Symmetric multiprocessing|SMP]] is possible. [50] => [51] => QEMU does not require administrative rights to run unless additional kernel modules for improving speed (like [[#Accelerator|KQEMU]]) are used or certain modes of its network connectivity model are utilized. [52] => [53] => ===Tiny Code Generator=== [54] => The Tiny Code Generator (TCG) aims to remove the shortcoming of relying on a particular version of [[GNU Compiler Collection|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]]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]] (JIT) mode. [55] => [56] => 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 (computing)|interpreter]] mode called TCG Interpreter (TCI). It also requires updating the target code to use TCG ops instead of the old ''dyngen'' ops. [57] => [58] => 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.{{cite web|url=http://lists.gnu.org/archive/html/qemu-devel/2009-03/msg00154.html|title=[Qemu-devel] ANNOUNCE: Release 0.10.0 of QEMU|website=lists.gnu.org}}{{cite web |last1=Filardo |first1=Nathaniel |date=September 11, 2007 |title=Porting QEMU to Plan 9: QEMU Internals and Port Strategy|url=http://gsoc.cat-v.org/people/nwf/paper-strategy-plus.pdf |website=gsoc.cat-v.org}} -- a review of how the old dyngen worked [59] => [60] => ===Accelerator=== [61] => ''KQEMU'' was a [[Linux kernel]] [[Loadable kernel module|module]], also written by [[Fabrice Bellard]], which notably sped up emulation of x86 or x86-64 guests on platforms with the same CPU architecture. This worked by running [[user mode]] code (and optionally some kernel code) directly on the host computer's CPU, and by using processor and peripheral emulation only for [[kernel mode|kernel-mode]] and [[real mode|real-mode]] code. KQEMU could execute code from many guest OSes even if the host CPU did not support [[hardware-assisted virtualization]]. KQEMU was initially a [[closed-source]] product available free of charge, but starting from version 1.3.0pre10 (February 2007),{{cite web |url=https://lwn.net/Articles/220807/ |title=KQEMU 1.3.0pre10 released - under the GPL [LWN.net] |publisher=Lwn.net |date=February 6, 2007 |access-date=2009-01-03}} it was [[Software relicensing|relicensed]] under the [[GNU General Public License]]. QEMU versions starting with 0.12.0 ({{as of|2009|08|lc=on}}) support large memory which makes them incompatible with KQEMU.{{cite web |first=Anthony |last=Liguori |url=http://lists.gnu.org/archive/html/qemu-devel/2009-08/msg00478.html |title=[Qemu-devel] [PATCH 1/2] Unbreak large mem support by removing kqemu |date=10 August 2009 |access-date=2010-03-11}} Newer releases of QEMU have completely removed support for KQEMU. [62] => [63] => ''QVM86'' was a [[GNU General Public License|GNU GPLv2]] licensed drop-in replacement for the then closed-source KQEMU. The developers of QVM86 ceased development in January, 2007. [64] => [65] => [[Kernel-based Virtual Machine]] (''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.{{citation needed|date=May 2014}} QEMU can also use KVM on other architectures like [[ARM architecture|ARM]] and [[MIPS architecture|MIPS]].{{cite web |title=QEMU / KVM CPU model configuration |url=https://www.qemu.org/docs/master/system/qemu-cpu-models.html |website=QEMU 5.0.50 (v5.0.0-962-g49ee115552) documentation}} [66] => [67] => Intel's Hardware Accelerated Execution Manager (''HAXM'') is an open-source alternative{{cite web | url = https://lists.nongnu.org/archive/html/qemu-devel/2017-11/msg02504.html | title = HAXM goes open source | date = 2017-11-17 | publisher = QEMU developers | access-date = 2017-01-14 | quote = HAXM is now open source}} to KVM for x86-based hardware-assisted virtualization on NetBSD, Linux, Windows and macOS using [[Intel VT]]. {{As of | 2013}} Intel mostly solicits its use with QEMU for Android development.{{cite web | url = https://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager | title = Intel Hardware Accelerated Execution Manager | date = 2013-11-27 | publisher = Intel | access-date = 2014-05-12 | quote = 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.}} Starting with version 2.9.0, the official QEMU includes support for HAXM, under the name ''hax''.{{cite web |title=Invocation |url=https://www.qemu.org/docs/master/system/invocation.html |website=QEMU 5.0.50 (v5.0.0-962-g49ee115552) documentation}} [68] => [69] => QEMU also supports the following accelerators: [70] => * ''hvf'', Apple's {{Code|Hypervisor.framework}} based on Intel VT. [71] => * ''whpx'', Microsoft's Windows Hypervisor Platform based on Intel VT or AMD-V. [72] => * ''tcg'', QEMU's own [[#Tiny Code Generator|Tiny Code Generator]]. This is the default. [73] => [74] => ===Supported disk image formats=== [75] => QEMU supports the following [[disk image]] formats:{{cite web|url=https://qemu.weilnetz.de/doc/qemu-doc.html#disk_005fimages|title=QEMU Emulator User Documentation|website=qemu.weilnetz.de|access-date=2018-04-10|archive-date=2019-04-27|archive-url=https://web.archive.org/web/20190427013412/https://qemu.weilnetz.de/doc/qemu-doc.html#disk_005fimages|url-status=dead}} [76] => * [[macOS]] [[Universal Disk Image Format]] (.dmg) – Read-only [77] => * [[Bochs]] – Read-only [78] => * [[Linux]] [[cloop]] – Read-only [79] => * [[Parallels, Inc.|Parallels]] disk image (.hdd, .hds) – Read-only [80] => * [[qcow|QEMU copy-on-write]] (.qcow2, .qed, .qcow, .cow) [81] => * [[VirtualBox]] [[VDI (file format)|Virtual Disk Image]] (.vdi) [82] => * [[Virtual PC]] [[VHD (file format)|Virtual Hard Disk]] (.vhd) [83] => * Virtual [[VFAT]] [84] => * [[VMware]] [[VMDK|Virtual Machine Disk]] (.vmdk) [85] => * [[IMG (file format)|Raw images]] (.img) that contain sector-by-sector contents of a disk [86] => * [[ISO image|CD/DVD images]] (.iso) that contain sector-by-sector contents of an optical disk (e.g. booting live OSes){{cite web|url=https://linux-tips.com/t/booting-from-an-iso-image-using-qemu/136|title=Booting from an ISO image using qemu|website=Linux Tips|date=3 August 2015}} [87] => [88] => === QEMU Object Model === [89] => [90] => The '''QEMU Object Model''' (QOM) provides a framework for registering user creatable types and instantiating objects from those types.{{Cite web|url=https://github.com/qemu/qemu/blob/master/docs/devel/qom.rst|title = Qemu Readme|website = [[GitHub]]|date = 26 October 2021}} [91] => [92] => QOM provides the following features: [93] => [94] => * System for dynamically registering types [95] => * Support for single-inheritance of types [96] => * Multiple inheritance of stateless interfaces [97] => [98] => {{See also|Object model}} [99] => [100] => ==Parallel emulation== [101] => 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. [102] => [103] => ==Integration== [104] => [105] => ===VirtualBox=== [106] => [[VirtualBox]], first released in January 2007, used some of QEMU's virtual hardware devices, and had a built-in [[Dynamic recompilation|dynamic recompiler]] 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]].{{cite web | url = http://virtualbox.org/wiki/Developer_FAQ | title = VirtualBox Developer FAQ | access-date = 2015-02-02}} [107] => 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 [[GNU General Public License|GPL]]), except for certain features. [108] => [109] => ===Xen-HVM=== [110] => [[Xen]], a virtual machine monitor, can run in HVM (hardware virtual machine) mode, using [[Intel VT-x]] or [[AMD-V]] hardware [[x86 virtualization]] extensions and [[ARM architecture|ARM]] [[ARM Cortex-A7|Cortex-A7]] and [[ARM Cortex-A15|Cortex-A15]] virtualization extension.{{cite web |url=http://wiki.xenproject.org/wiki/Xen_ARM_with_Virtualization_Extensions |title=Xen ARM with 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. [111] => [112] => 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.{{cite web|url=http://www.sun.com/blueprints/1107/820-3703.pdf|title=Oracle and Sun Microsystems - Strategic Acquisitions - Oracle|website=www.sun.com}} 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.[http://ian.blenke.com/xen/hvm/svm/vtx/qemu Demystifying Xen HVM] {{webarchive |url=https://web.archive.org/web/20071222101854/http://ian.blenke.com/xen/hvm/svm/vtx/qemu |date=December 22, 2007}} APIC support is provided by Xen. [113] => [114] => 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. [115] => [116] => ===KVM=== [117] => [[Kernel-based Virtual Machine|KVM]] (Kernel-based Virtual Machine) is a FreeBSD and Linux kernel module that allows a [[user space]] program access to the [[Hardware-assisted virtualization|hardware virtualization]] 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. [118] => [119] => ===Win4Lin Pro Desktop=== [120] => 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] {{webarchive |url=https://web.archive.org/web/20080210042356/http://weblog.infoworld.com/virtualization/archives/2006/06/win4lin_announc.html |date=February 10, 2008}} 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. [121] => [122] => In September 2006, Win4Lin announced a change of the company name to [https://web.archive.org/web/20110613051010/http://www.vbridges.com/home.php 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] {{webarchive |url=https://web.archive.org/web/20071223221725/http://win4solaris.com/jml/index.php?option=com_content&task=view&id=17&Itemid=1 |date=December 23, 2007}} [123] => [124] => ===SerialICE=== [125] => 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 emulation|in-circuit emulators]] (ICE).{{Cite web|url=http://serialice.com/|title=SerialICE|website=serialice.com}} [126] => [127] => ===WinUAE=== [128] => [[UAE (emulator)|WinUAE]] introduced support for the [[PowerUP (accelerator)|CyberStorm PPC and Blizzard 603e boards]] using the QEMU PPC core in version 3.0.0.{{cite web |url=http://eab.abime.net/showpost.php?p=992271&postcount=1|title=WinUAE 3.0.0|publisher=English Amiga Board|date=2014-12-17|access-date=2016-03-25}} [129] => [130] => ===Unicorn=== [131] => 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.{{cite web |title=Unicorn & QEMU |url=https://www.unicorn-engine.org/docs/beyond_qemu.html |website=Unicorn Engine}} [132] => [133] => === Limbo X86 PC Emulator === [134] => Limbo is an X86 and ARM64 virtual machine for Android based on QEMU{{Cite web |title=Limbo Emulator Tutorials |url=https://virtualmachinery.weebly.com/tutorials.html |access-date=2023-09-02 |website=Virtual Machinery |language=en}} It is one of the few pieces of virtual machine software available for Android capable of emulating Microsoft Windows,{{Citation |title=How to Install Windows on any Android Device Full Installation [No Root] ( Using Limbo PC Emulator ) |url=https://www.youtube.com/watch?v=D6Vz3plWktQ |access-date=2023-09-02 |language=en}} 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. [135] => [136] => It is more popular in developing countries in Asia such as India, Malaysia, and Thailand on YouTube due to the popularity of the Android Operating System.{{Cite web |title=India: mobile OS share 2022 |url=https://www.statista.com/statistics/262157/market-share-held-by-mobile-operating-systems-in-india/ |access-date=2023-09-02 |website=Statista |language=en}} Limbo was removed from the Google Play Store for unknown reasons between February 2019 and December 2020, through it can still be installed off the developers website with an APK (Android Package) installation.{{Cite web |title=Limbo Downloads |url=https://virtualmachinery.weebly.com/limbo-downloads.html |access-date=2023-09-02 |website=Virtual Machinery |language=en}} Limbo is known for having stuttery and laggy audio quality, and no known fixes have been found as of 2023.{{Cite web |title=Downloads |url=https://github.com/limboemu/limbo/wiki/Downloads |access-date=2023-09-02 |website=GitHub |language=en}} Limbo is generally unknown in popularity compared to other virtual machine software, making troubleshooting very difficult. [137] => [138] => It is required to install a special 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.{{Citation |last=Weidner |first=Klaus |title=klausw/hackerskeyboard |date=2023-09-01 |url=https://github.com/klausw/hackerskeyboard |access-date=2023-09-02}} It is recommended to install Hacker's Keyboard with an APK file due to the Google Play Store stating it does not support newer Android versions, however with an APK file you can install Hacker's Keyboard on newer versions of Android.{{Cite web |title=Hacker's Keyboard - Apps on Google Play |url=https://play.google.com/store/apps/details?id=org.pocketworkstation.pckeyboard&hl=en_US |access-date=2023-09-02 |website=play.google.com |language=en-US}} [139] => [140] => ==Emulated hardware platforms== [141] => [142] => ===x86=== [143] => Can emulate i386 and x86_64 architecture. Besides the [[Central processing unit|CPU]] (which is also configurable and can emulate a number of Intel CPU models including (as of 3 March 2018) [[Sandy Bridge (microarchitecture)|Sandy Bridge]],{{cite web|url=http://lists.gnu.org/archive/html/qemu-devel/2012-02/msg03765.html|title=[Qemu-devel] [PATCH 3/3] add SandyBridge CPU model|website=lists.gnu.org}} [[Ivy Bridge (microarchitecture)|Ivy Bridge]],{{cite web|url=https://wiki.qemu.org/ChangeLog/2.3#x86|title=Qemu-Changelog-2.3 x86|website=wiki.qemu.org}} [[Haswell (microarchitecture)|Haswell]],{{cite web|url=https://wiki.qemu.org/ChangeLog/2.6#KVM_2|title=QEMU-changelog-2.6, x86 KVM|website=wiki.qemu.org}} [[Broadwell (microarchitecture)|Broadwell]]{{cite web|url=https://wiki.qemu.org/ChangeLog/2.1#x86|title=QEMU-changelog-2.1, x86 KVM|website=wiki.qemu.org}}{{cite web|url=https://wiki.qemu.org/ChangeLog/2.5#CPU_models_and_features|title=QEMU-changelog-2.5, x86 CPU Models and Features|website=wiki.qemu.org}} and [[Skylake (microarchitecture)|Skylake]]), the following devices are emulated: [144] => * [[CD-ROM|CD]]/[[DVD|DVD-ROM]] drive using an [[ISO image]] [145] => * [[Floppy disk]] drive [146] => * [[Parallel ATA|ATA]] controller or [[Serial ATA]] [[AHCI]] controller [147] => * [[Video card|Graphics card]]: ''Cirrus CLGD 5446 PCI VGA''-card, Standard-VGA graphics card with Bochs-[[VESA BIOS Extension|VBE]], Red Hat QXL VGA [148] => * [[Network card]]: [[RTL8139|Realtek 8139C+]] PCI, [[NE2000]] PCI, NE2000 ISA, [[AMD Lance Am7990|PCnet]], E1000 (PCI Intel Gigabit Ethernet) and E1000E (PCIe Intel Gigabit Ethernet)https://qemu.weilnetz.de/doc/qemu-doc.html#pcsys_005fnetwork {{Webarchive|url=https://web.archive.org/web/20190427013412/https://qemu.weilnetz.de/doc/qemu-doc.html#pcsys_005fnetwork |date=2019-04-27 }} "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 [149] => * [[NVMe]] disk interface [150] => * [[Serial port]] [151] => * [[Parallel port]] [152] => * [[PC speaker]] [153] => * i440FX/PIIX3 or Q35/ICH9 chipsets [154] => * [[PS/2 port|PS/2]] [[Mouse (computing)|mouse]] and [[Keyboard (computing)|keyboard]] [155] => * [[SCSI controller]]: LSI MegaRAID SAS 1078, LSI53C895A, NCR53C9x as found in the AMD PCscsi and Tekram DC-390 controllers [156] => * [[Sound card]]: [[Sound Blaster 16]], [[Ensoniq AudioPCI|AudioPCI ES1370]], [[I/O Controller Hub|ICH]] [[AC'97]], [[Gravis Ultrasound]], and [[Intel High Definition Audio|Intel HD Audio]]{{cite web |url=http://wiki.qemu.org/ChangeLog/0.14#Sound |title=ChangeLog/0.14 |access-date=2011-08-08}} [157] => * [[Watchdog timer]] (Intel 6300 ESB PCI, or iB700 ISA) [158] => * [[USB]] 1.x/2.x/3.x controllers ([[Universal Host Controller Interface|UHCI]], [[EHCI]], [[xHCI]]) [159] => * USB devices: Audio, Bluetooth dongle, [[Human Interface Device|HID]] (keyboard/mouse/tablet), [[Media Transfer Protocol|MTP]], serial interface, [[Common Access Card|CAC]] smartcard reader, storage ([[USB mass storage device class|bulk-only transfer]] and [[USB Attached SCSI]]), Wacom tablet [160] => * Paravirtualized [[VirtIO]] devices: block device, network card, SCSI controller, video device, serial interface, [[balloon driver]], [[9P (protocol)|9pfs]] filesystem driver [161] => * Paravirtualized Xen devices: block device, network card, console, framebuffer and input device [162] => [163] => The [[BIOS]] implementation used by QEMU starting from version 0.12 is [[SeaBIOS]]. The VGA BIOS implementation comes from Plex86/[[Bochs]]. The [[UEFI]] firmware for QEMU is OVMF.{{Cite web|url=https://wiki.ubuntu.com/UEFI/OVMF|title=UEFI/OVMF - Ubuntu Wiki}} [164] => [165] => ===PowerPC=== [166] => [167] => ====PowerMac==== [168] => QEMU emulates the following [[PowerMac]] peripherals: [169] => * UniNorth PCI bridge [170] => * PCI-VGA-compatible graphics card which maps the ''VESA Bochs Extensions'' [171] => * Two PMAC-IDE-Interfaces with hard disk and CD-ROM support. [172] => * [[NE2000]] PCI adapter [173] => * Non-volatile RAM [174] => * VIA-CUDA with [[Apple Desktop Bus|ADB]] keyboard and mouse. [175] => [176] => [[OpenBIOS]] is used as the firmware. [177] => [178] => ====PREP==== [179] => QEMU emulates the following [[PowerPC Reference Platform|PREP]] peripherals: [180] => * PCI bridge [181] => * PCI VGA-compatible graphics card with ''VESA Bochs Extensions'' [182] => * Two IDE interfaces with hard disk and CD-ROM support [183] => * Floppy disk drive [184] => * [[NE2000]] network adapter [185] => * Serial interface [186] => * PREP non-volatile RAM [187] => * PC-compatible keyboard and mouse [188] => [189] => On the PREP target, ''Open Hack'Ware'', an [[Open Firmware|Open-Firmware]]-compatible BIOS, is used. [190] => [191] => ====IBM System p==== [192] => QEMU can emulate the paravirtual sPAPR interface with the following peripherals: [193] => * PCI bridge, for access to virtio devices, VGA-compatible graphics, USB, etc. [194] => * Virtual I/O network adapter, SCSI controller, and serial interface [195] => * sPAPR non-volatile RAM [196] => [197] => On the sPAPR target, another Open-Firmware-compatible BIOS is used, called SLOF. [198] => [199] => ===ARM=== [200] => ====ARM32==== [201] => [[File:QEMU ARM Fedora Login1.png|thumb|QEMU booted into the ARM port of [[Fedora (operating system)|Fedora 8]]]] [202] => [203] => QEMU emulates the [[ARMv7]] [[instruction set]] (and down to ARMv5TEJ) with NEON extension.{{cite web|url=https://gitorious.org/rowboat/external-qemu/commit/bcc6ae14820ddb24e2403d84b420ce61f371ae94|title=gitorious.org Git - rowboat: external-qemu.git/commit|website=gitorious.org}} It emulates full systems like Integrator/CP board, Versatile baseboard, RealView Emulation baseboard, XScale-based PDAs, Palm Tungsten|E PDA, [[Nokia N800]] and [[Nokia N810]] Internet tablets etc. QEMU also powers the Android emulator which is part of the [[Android software development|Android 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. [204] => [205] => In 1.5.0 and 1.6.0 Samsung [[Exynos]] 4210 (dual-core Cortex-A9) and Versatile Express [[ARM Cortex-A9]] [[ARM 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. [206] => [207] => The Xilinx Cortex A9-based Zynq SoC is modeled, with the following elements: [208] => * Zynq-7000 ARM Cortex-A9 CPU [209] => * Zynq-7000 ARM Cortex-A9 MPCore [210] => * Triple Timer Counter [211] => * DDR Memory Controller [212] => * DMA Controller (PL330) [213] => * Static Memory Controller (NAND/NOR Flash) [214] => * SD/SDIO Peripheral Controller (SDHCI) [215] => * Zynq Gigabit Ethernet Controller [216] => * USB Controller (EHCI - Host support only) [217] => * Zynq UART Controller [218] => * SPI and QSPI Controllers [219] => * I2C Controller [220] => [221] => ====ARM64==== [222] => [223] => ===SPARC=== [224] => QEMU has support for both 32- and 64-bit [[SPARC]] architectures. [225] => [226] => When the firmware in the [[JavaStation]] (sun4m-Architecture) became version 0.8.1 ''Proll'',{{cite web |title=Zaitcev's Linux |url=http://people.redhat.com/zaitcev/linux/}} 090427 people.redhat.com a [[Programmable ROM|PROM]] replacement used in version 0.8.2, was replaced with [[OpenBIOS]]. [227] => [228] => ====SPARC32==== [229] => QEMU emulates the following ''[[Sun-4#Sun-4 architecture|sun4m/sun4c/sun4d]]'' peripherals: [230] => * IOMMU or IO-UNITs [231] => * TCX Frame buffer (graphics card) [232] => * [[AMD Lance Am7990|Lance (Am7990)]] [[Ethernet]] [233] => * Non-volatile RAM [[SPARCstation 1#NVRAM|M48T02/M48T08]] [234] => * Slave I/O: timers, interrupt controllers, [[Zilog]] serial ports, keyboard and power/reset logic [235] => * ESP SCSI controller with hard disk and CD-ROM support [236] => * Floppy drive (not on SS-600MP) [237] => * CS4231 sound device (only on SS-5, not working yet) [238] => [239] => ====SPARC64==== [240] => Emulating [[Sun-4#Sun-4 architecture|Sun4u]] (UltraSPARC PC-like machine), [[Sun-4#Sun-4 architecture|Sun4v]] (T1 PC-like machine), or generic [[UltraSPARC T1|Niagara]] (T1) machine with the following peripherals: [241] => * [[UltraSPARC II#UltraSPARC IIi|UltraSparc IIi]] APB PCI Bridge [242] => * PCI VGA-compatible card with VESA Bochs Extensions [243] => * PS/2 mouse and keyboard [244] => * Non-volatile RAM M48T59 [245] => * PC-compatible serial ports [246] => * 2 PCI IDE interfaces with hard disk and CD-ROM support [247] => * Floppy disk [248] => [249] => ===MicroBlaze=== [250] => Supported peripherals: [251] => * [[MicroBlaze]] with/without MMU, including [252] => * AXI Timer and Interrupt controller peripherals [253] => * AXI External Memory Controller [254] => * AXI DMA Controller [255] => * Xilinx AXI Ethernet [256] => * AXI Ethernet Lite [257] => * AXI UART 16650 and UARTLite [258] => * AXI SPI Controller [259] => [260] => ===LatticeMico32=== [261] => Supported peripherals: [262] => From the [[Milkymist]] SoC [263] => * UART [264] => * VGA [265] => * Memory card [266] => * Ethernet [267] => * pfu [268] => * timer [269] => [270] => ===CRIS=== [271] => {{Main article|ETRAX CRIS}} [272] => [273] => ===OpenRISC=== [274] => {{Main article|OpenRISC}} [275] => [276] => ===Others=== [277] => External trees exist, supporting the following targets: [278] => * [[Zilog Z80]]{{cite web |title=QEMU Z80 Target |url=http://homepage.ntlworld.com/wholehog/stuart/qemu/z80.html |archive-url=https://web.archive.org/web/20160606135712/http://homepage.ntlworld.com/wholehog/stuart/qemu/z80.html |url-status=dead |archive-date=2016-06-06}} 090506 homepage.ntlworld.com emulating a [[ZX Spectrum|48K ZX Spectrum]] [279] => * HP [[PA-RISC]]{{cite web |title=QEMU links |url=http://wiki.qemu.org/Links}} 090506 nongnu.org [280] => * [[RISC-V]] [281] => [282] => ==See also== [283] => {{Portal|Free and open-source software}} [284] => * [[qcow]] [285] => * [[Comparison of platform virtualization software]] [286] => * [[Mtools]] [287] => * [[OVPsim]] [288] => * [[Q (emulator)|Q]] [289] => * [[SIMH]] [290] => * [[SPIM]] [291] => * [[GXemul]] [292] => * [[GNOME Boxes]] [293] => [294] => ==References== [295] => {{reflist|1=30em}} [296] => [297] => ==External links== [298] => {{Commons}} [299] => {{Wikibooks}} [300] => * {{Official website}} [301] => * [https://www.qemu.org/docs/master/ QEMU documentation] [302] => * [https://web.archive.org/web/20130720074636/http://www.ibm.com/developerworks/linux/library/l-qemu/ Systems emulation with QEMU] an IBM developerWorks article by M. Tim Jones [303] => * [http://savannah.nongnu.org/projects/qvm86/ QVM86 project page] [304] => * [http://www.aurel32.net/info/debian_arm_qemu.php Debian on an emulated ARM machine] [305] => * [http://fedoraproject.org/wiki/Architectures/ARM/HowToQemu Fedora ARM port emulation with QEMU] [306] => * [https://web.archive.org/web/20180620214142/http://qemu-buch.de/ The Wikibook "QEMU and KVM"] (in German, or computer translated to English) [307] => * [http://lassauge.free.fr/qemu/ QEMU on Windows] [308] => * [https://qemu.weilnetz.de/ QEMU Binaries for Windows] [309] => * [http://www.monstr.eu/qemu/ Microblaze emulation with QEMU] [310] => * [http://sourceforge.net/projects/ctys-doc/ UnifiedSessionsManager - An unofficial QEMU/KVM configuration file definition] [311] => * [http://www.adacore.com/uploads/technical-papers/couverture_ertss2010.pdf Couverture, a code coverage project based on QEMU] [312] => [313] => {{Virtualization software}} [314] => [315] => {{DEFAULTSORT:Qemu}} [316] => [[Category:Android emulation software]] [317] => [[Category:Cross-platform free software]] [318] => [[Category:Free emulation software]] [319] => [[Category:Free virtualization software]] [320] => [[Category:Linux emulation software]] [321] => [[Category:MacOS emulation software]] [322] => [[Category:PowerPC emulators]] [323] => [[Category:Software that uses Meson]] [324] => [[Category:Windows emulation software]] [325] => [[Category:X86 emulators]] [] => )
good wiki

QEMU

QEMU (short for Quick Emulator) is a free and open-source emulator and virtualization software that allows running an entire operating system on a host machine. It was developed by Fabrice Bellard and first released in 2003.

More about us

About

It was developed by Fabrice Bellard and first released in 2003. QEMU supports a wide range of guest operating systems, including Linux, Windows, macOS, BSD, Solaris, and more. It can be used on various architectures such as x86, ARM, MIPS, PowerPC, and SPARC. QEMU provides a complete and dynamic emulation platform that can run virtual machines directly on a host computer without the need for any additional software or hardware. It uses a combination of dynamic binary translation, just-in-time compilation, and hardware virtualization techniques to efficiently execute and emulate guest code. This allows users to perform various tasks like software development, testing, and running legacy or alternative operating systems on their existing machines. The software offers several different modes of operation, such as full system emulation, which emulates an entire computer system including processor, memory, disks, network, and other devices, and user mode emulation, which allows running foreign binaries directly on a host operating system. QEMU also provides support for managing virtualization through the Kernel-based Virtual Machine (KVM) on Linux, enabling efficient hardware acceleration and performance. QEMU has gained popularity and widespread adoption due to its versatility, cross-platform compatibility, and ability to emulate various architectures. It is actively maintained and regularly updated by a team of developers worldwide. Its source code is licensed under the GNU General Public License (GPL), ensuring its accessibility and openness to the community. Overall, QEMU serves as a powerful and flexible solution for virtualization and emulation needs, catering to both developers and end-users. Its robust features and broad range of supported operating systems and architectures have made it a staple tool in the field of virtualization and emulation software.

Expert Team

Vivamus eget neque lacus. Pellentesque egauris ex.

Award winning agency

Lorem ipsum, dolor sit amet consectetur elitorceat .

10 Year Exp.

Pellen tesque eget, mauris lorem iupsum neque lacus.