QEMU est un logiciel libre de machine virtuelle, pouvant émuler un processeur et, plus généralement, une architecture différente si besoin. Il permet d'exécuter un ou plusieurs systèmes d'exploitation via les hyperviseurs KVM et Xen, ou seulement des binaires, dans l'environnement d'un système d'exploitation déjà installé sur la machine.
QEMU permet la virtualisation sans émulation, si le système invité utilise le même processeur que le système hôte, ou bien d'émuler les architectures des processeurs x86, ARM, AVR, ColdFire PowerPC, Sparc (32/64), MIPS, RISC-V, S/390, Xtensa
Sous Linux, il peut virtualiser, à l'aide de KVM, les environnements invités x86, ARM, PowerPC, MIPS (32 bits seulement), Sparc, ColdFire (motorola 68K) et quelques autres types de processeurs pour serveur, poste de travail ou embarqué, ainsi que S390.
QEMU fonctionne sur les plates-formes x86, x64, PPC, Sparc, MIPS, ARM. Il fonctionne sous les systèmes d'exploitation Linux, FreeBSD, NetBSD, OpenBSD, Mac OS X, Unix et Microsoft Windows.
QEMU permet d'exécuter un ou plusieurs systèmes d'exploitation (et leurs applications) de manière isolée sur une même machine physique. Il permet de simuler les périphériques PCI, son, USB.
Les systèmes d'exploitation invités partagent ainsi les ressources de la machine physique de façon relativement invisible. Il n'y a donc, dans de nombreux cas, pas besoin d'adapter le système pour fonctionner sur QEMU.
KQEMU est un module pour le noyau Linux et pour FreeBSD qui permet d'accélérer l'émulation.
QEMU a été, à ses débuts, développé par Fabrice Bellard.
QEMU émule les systèmes ARM suivants :
différentes versions de pxa 25X, 26X, 27X, d'arm9, d'Arm11, ainsi qu'arm11 MPCore
ARMv7 (ARM Cortex-M3, ARM Cortex-A8, ARM Cortex-A9 MPCore, ARM Cortex-A15 MPCore)
Les instructions 32 bits d'ARMv8 (aarm64, 64 bits) dans QEMU 1.6, les versions ultérieures devraient voir le support des instructions 64 bits
Plus de 210 contrôleurs de périphériques ARM divers (UART, USB, ethernet, i2c, PCI, ISA, SCSI, IRQ, GPIO...).