QEMU 6.0 Is Released With A Long List Of New Features
QEMU 6.0 is a huge release with a very long list of improvements for everyone using this powerful multi-platform full system emulator to run operating systems for Arm, PowerPC, RISC-V, s390, SPARC, x86 and other systems QEMU supports on Linux, Windows or macOS.
QEMU is a multi-platform full system emulator capable of hardware virtualization on Intel and AMD x86-64 machines thanks to the Linux kernel's KVM facility. It is more like DOSBox and MAME in capabilities, even though it can be used for virtualization the same way VirtualBox works. QEMU can be used to run x86-64 operating systems on x86-64 machines with virtualization or entirely foreign architectures like ARM on any machines capable of running QEMU without virtualization.
Some of the highlights are:
- The QEMU emulated NVMe controller is now compliant with NVMe version 1.4, and NVM Subsystems, multipath I/O and namespace sharing have been implemented.
- Background RAM snapshots using the Userfaultfd-wp (UFFD-WP) feature for making memory temporarily write-protected that was introduced in Linux 5.8.
- FUSE block device exports. This allows host systems to mount guest block devices the way the guest operating systems see them. FUSE block devices can be created witht he new QEMU Machine Protocol (QMP) qemu-storage-daemon options
- QMP has three new features,
delete-snapshot, for managing qcow2 snapshots.
- Emulation of the Arm-v8.1M ARM architecture and Cortex-M55 processors, and several new ARM extensions including ARMv8.4-TTST, ARMv8.4-SEL2, FEAT_SSBS, ARMv8.5-MemTag and ARMv8.4-DIT.
- There's a long list of improvements to RISC-V emulation
- USB traffic can now be written to package capture filters like wireshark. A new
pcap=fileoption can be added to all USB devices enabled in QEMU.
- Guest operating systems in QEMU can now take advantage of AMD SEV-ES (Secure Encrypted Virtualization) to encrypt the processor registers in the guest system so the host environment can't see what's going on inside a virtual machine unless the guest explicitly grants access to it.
- The Tiny Code Generator (TCG) for x86 emulation can now emulate the Protection Keys Supervisor (PKS) for protecting access to privileged memory pages.
- Support for the Chinese Loongson-3 processors have been added to the MIPS architecture emulator.
- The Tiny Code Generator (TCG) now supports macOS host environments running the Apple M1 ARM chip.
The QEMU download page for Linux does not list any AppImage, Snap, .deb or .rpm packages or binaries of any kind, it simply lists instructions for installing it using the major Linux distributions repositories. All of them have some recently new QEMU version like 5.2, none have the latest 6.0 release. That leaves compiling from source as the only option if you really want QEMU 6.0 now. The source is a 102 MiB tarball that extracts to 724 MiB. Building it is, in theory, as easy as
./configure && make, but there are a lot of optional dependencies to work out. You will likely need to install a number of development packages and a number of
./configure flags like
--enable-kvm (kind of important if you want to run x86-64 software on x86-64 without a huge performance penalty). You may be better off waiting until your distribution makes a QEMU 6.0 package unless you really want one of the new features right now. The actual compile will only take about 15 minutes on a Ryzen 1600X with
-j 12, even thought the source tree is huge, so it is doable. Make sure to get all the dependencies in place and re-run
./configure so you don't end up with a crippled QEMU if you decide to go that route.