QEMU
QEMU is a fast processor emulator supporting multiple architectures including ARM, x86-64, RISC-V, and others. It provides full system emulation for testing, debugging, and virtual hosting.
Description
QEMU enables full system emulation across various CPU architectures like Alpha, ARM, MIPS, PowerPC, RISC-V, S390x, SPARC, and x86-64 using dynamic translation for reasonable performance. It emulates complete systems including processors and peripherals, facilitating easier testing and debugging of system code as well as virtual hosting of multiple VMs on a single server.
The tool offers metapackages like qemu-system for all targets and architecture-specific packages such as qemu-system-arm for aarch64 and arm hardware emulation. Additional components include qemu-guest-agent for guest-host communication via virtio-serial, enabling functions like time synchronization, filesystem operations, shutdown, and file access from the host.
qemu-block-extra provides rarely used block backend modules with extra dependencies for advanced storage emulation.
How It Works
QEMU uses dynamic translation to emulate processors and peripherals at reasonable speeds across host CPUs. In system emulation mode, it provides full hardware emulation including CPU topology via -smp, NUMA configuration via -numa, memory management via -m, accelerators like KVM or TCG, block devices via -drive/-blockdev, network backends via -netdev, display options via -display, and character devices via -chardev. Guest agents communicate over virtio-serial channels for host-guest coordination.
Installation
sudo apt install qemu-systemFlags
Examples
qemu-system-aarch64 [options] [disk_image]qemu-ga -hqemu-ga -m virtio-serial -p /dev/virtio-ports/org.qemu.guest_agent.0qemu-system-aarch64 -machine helpqemu-system-aarch64 -cpu helpqemu-system-aarch64 -smp 4qemu-system-aarch64 -m 2Gqemu-system-aarch64 -nographic