

some features may not be implemented, dynamically linked executables will not work out of the box (see #Chrooting into arm/arm64 environment from x86_64 to address this) and only Linux is supported (although Wine may be used for running Windows executables). Usermode emulation In this mode, QEMU is able to invoke a Linux executable compiled for a (potentially) different architecture by leveraging the host system resources. If the target architecture matches the host CPU, this mode may still benefit from a significant speedup by using a hypervisor like KVM or Xen. qemu-system-x86_64 for emulating x86_64 CPUs, qemu-system-i386 for Intel 32-bit x86 CPUs, qemu-system-arm for ARM (32 bits), qemu-system-aarch64 for ARM64, etc. QEMU commands for full-system emulation are named qemu-system- target_architecture, e.g. It is more accurate but slower, and does not require the emulated OS to be Linux. QEMU is offered in several variants suited for different use cases.Īs a first classification, QEMU is offered in full-system and usermode emulation modes:įull-system emulation In this mode, QEMU emulates a full system, including one or several processors and various peripherals.

When used as a virtualizer, QEMU achieves near native performances by executing the guest code directly on the host CPU. QEMU can use other hypervisors like Xen or KVM to use CPU extensions ( HVM) for virtualization. By using dynamic translation, it achieves very good performance.

an ARM board) on a different machine (e.g. When used as a machine emulator, QEMU can run OSes and programs made for one machine (e.g.

According to the QEMU about page, "QEMU is a generic and open source machine emulator and virtualizer."
