qemu: Virtualisatie
`qemu-system-x86_64 -m 2048 -hda disk.img` — dat commando draait al sinds 2003 op dezelfde manier, en het is nog steeds de kortste weg naar een werkende virtuele machine. QEMU, afkorting van Quick Emulator, is de open-source software die vrijwel alle virtualisatie in de Linuxwereld mogelijk maakt.
De kern van QEMU is tweeledig. Als emulator bootst het complete systemen na — CPU, geheugen, schijven, netwerk — voor architecturen die je fysiek niet hebt. Een ARM-systeem op een x86_64-machine draaien is ermee mogelijk, net als een MIPS-router of een SPARC-server. Dat kost rekenkracht, want elke instructie wordt vertaald, maar het werkt. Voor embedded-ontwikkelaars is dat goud waard: firmware testen zonder dat de hardware bestaat.
Daarnaast kent QEMU user-mode emulation. Daarbij emuleert het geen volledig systeem, maar slechts één proces van een andere architectuur. Dat is hoe Docker en Podman ARM-containerimages bouwen op x86-machines: via binfmt_misc en buildx schakelt QEMU zich tussen de host en het te bouwen proces.
Maar de echte kracht zit in de combinatie met KVM, de Kernel-based Virtual Machine. KVM gebruikt de virtualisatie-extensies van de CPU — Intel VT-x of AMD-V — om een gast bijna op native snelheid te draaien. QEMU levert dan de gebruikersruimte-component: de virtuele netwerkkaarten, schijfcontrollers en grafische interfaces die KVM niet zelf regelt.
Die combinatie QEMU + KVM ligt onder de motorkap van Proxmox VE, OpenStack en een groot deel van de cloudinfrastructuur. Honderden virtuele machines op één fysieke server, elk geïsoleerd van de ander, is daarmee dagelijkse praktijk.
De prijs van die flexibiliteit is complexiteit. QEMU configureer je via de commandoregel, met tientallen parameters voor geheugen, schijven, netwerk en devices. `qemu-system-x86_64` aanroepen met de juiste vlaggen vereist kennis van wat je draait en waarom. Wie dat niet wil, gebruikt een front-end: virt-manager, virsh of Snowglobe, een virtuele-machine-viewer die via DBus met draaiende QEMU-instanties praat.
Fabrice Bellard schreef de eerste versie, en de preview-release verscheen in 2003. Het project is sindsdien onafgebroken actief. In augustus 2026 stond versie 11.1.1 op de officiële site; de releasecyclus is regelmatig genoeg dat bedrijven er hun updates op kunnen plannen.
De broncode is geschreven in C en vrij beschikbaar onder een open-source licentie. Dat betekent niet alleen dat je kunt zien wat de software doet, maar ook dat je hem kunt aanpassen aan je eigen infrastructuur. De gemeenschap is actief, met bijdragen van individuele ontwikkelaars en bedrijven die QEMU in hun producten verwerken.
QEMU spreekt met een breed scala aan architecturen: x86, x86_64, ARM, ARM64, MIPS, PowerPC, RISC-V en SPARC. Die breedte maakt het onmisbaar in embedded ontwikkeling, waar de doelprocessor vaak niet op het ontwikkelworkstation zit.
Zelf hosten klinkt prachtig, tot er iets omvalt op zondagavond half twaalf. Dan ben je geen klant die op de helpdesk wacht. Dan bén je de helpdesk — en QEMU is het gereedschap waarmee je het probleem oplost of niet.
Voor wie containers draait, lijkt QEMU soms overbodig. Containers delen de kernel van de host en hebben geen volledige virtualisatie nodig. Maar zodra je multi-arch images wilt bouwen, of een gast wilt draaien met een andere kernel dan de host, kom je weer bij QEMU uit.
De grens tussen emulatie en virtualisatie is in de praktijk dunner dan de theorie doet vermoeden. QEMU doet beide, en de keuze wordt gemaakt door welke vlag je meegeeft aan hetzelfde commando.
Wie begint met QEMU, doet er goed aan klein te beginnen: een enkele VM, een simpele schijfimage, geen netwerk. De foutmeldingen zijn cryptisch, en de documentatie gaat ervan uit dat je weet wat een virtio-driver is. Dat weet je na een week, niet na een uur.
Front-ends verbergen een deel van die complexiteit, maar niet alles. Uiteindelijk moet je begrijpen wat een VM nodig heeft: geheugen, opslag, een manier om de buitenwereld te bereiken. QEMU dwingt je die vragen te beantwoorden, ook als je er een grafische schil omheen zet.
De ontwikkelgeschiedenis van QEMU is een reeks compromissen tussen snelheid en nauwkeurigheid. Emulatie is langzaam, virtualisatie met KVM is snel, en de kunst is weten wanneer je welke nodig hebt. Een oud besturingssysteem dat geen virtio-drivers kent, draait beter in pure emulatie; een moderne Linux-gast draait het best met KVM en virtio.
De releasegeschiedenis laat een gestage ontwikkeling zien: 0.12.2 in januari 2010, 1.2.0 in september 2012, 2.0.0-rc0 in maart 2014, 7.2.0 in december 2022, 9.0.0-rc0 in oktober 2024, 10.0.0-rc0 in maart 2025. Geen grote sprongen, maar een constante stroom verbeteringen.
Wat QEMU onderscheidt van propriëtaire alternatieven is niet alleen de prijs, maar de controle. Je kunt zien wat er gebeurt, je kunt het aanpassen, en je bent niet afhankelijk van de roadmap van een leverancier. Dat weegt voor veel organisaties zwaarder dan de initiële leercurve.
De rol van QEMU in moderne infrastructuur is groter dan de meeste gebruikers beseffen. Wanneer een cloudprovider een VM voor je opstart, is de kans groot dat QEMU daar ergens bij betrokken is. Wanneer een ontwikkelaar een containerimage voor een ander platform bouwt, is QEMU de stille tussenpersoon.
Voor wie de keuze moet maken tussen QEMU en een gesloten alternatief: de gesloten opties zijn vaak gebruiksvriendelijker en hebben betere ondersteuning. Maar ze vragen een prijs in flexibiliteit en transparantie die je niet altijd op de factuur ziet staan.
De echte vraag is niet of QEMU beter is dan de rest, maar of je de complexiteit wilt beheren die bij de flexibiliteit hoort. Voor wie dat wil, is QEMU een van de meest complete virtualisatie-oplossingen die bestaat. Voor wie dat niet wil, zijn er genoeg andere wegen.
Elke virtuele machine die je opstart met QEMU is een klein wonder van vertaalde instructies en geëmuleerde hardware. Het werkt omdat duizenden ontwikkelaars er twee decennia aan hebben gesleuteld, en het blijft werken omdat de basis — een simpel commando met een schijfimage — nooit is veranderd.