# QEMU **QEMU** is an emulator and virtualizer. Emulate foreign-architecture binaries (ARM, RISC-V) on x86 to test cross-compiled code without hardware. Or use KVM acceleration to run same-architecture VMs at near-native speed. In embedded work, QEMU boots a cross-compiled kernel or bootloader on x86 to verify it before touching real hardware. In server/VM work, QEMU with KVM runs a guest OS at speeds close to bare metal, delegating instruction execution directly to the CPU. ```bash qemu-system-arm -M versatilepb -kernel zImage -dtb versatile.dtb \ -append "console=ttyAMA0" -nographic ``` This boots an ARM kernel on x86. `-M` selects the board type (which determines memory layout and peripherals), `-kernel` loads your cross-compiled kernel, `-dtb` provides the device tree, `-append` sets kernel command-line arguments, and `-nographic` redirects the serial console to your terminal instead of opening a GUI window. ## Concepts 1. [[qemu-basics|Basics]] 2. [[qemu-kernel-booting|Kernel booting]] 3. [[qemu-user-mode|User mode]] 4. [[qemu-kvm|KVM acceleration]] 5. [[qemu-gdb|GDB debugging]] 6. [[qemu-disk-images|Disk images]] 7. [[qemu-networking|Networking]] 8. [[qemu-serial-console|Serial console]] 9. [[qemu-machine-types|Machine types]] 10. [[qemu-disk-io|Disk I/O]]