When hearing or reading the word "VM" or "Virtual Machine" many people think immediately of VMware. However in the open source world, there's QEMU (short for Quick EMUlator) – and QEMU has been around for a while (since December 2011).
Confused about terminology?
KVM: The Linux Kernel module which makes virtualization possible
QEMU: The open source hypervisor to create and manage virtual machines
VIRSH: A management tool/layer to manage QEMU virtual machines.
Now almost 10 years after the first release, QEMU announced today the newest version: 6.0.
What's new in QEMU 6.0 ?
There are many changes, QEMU 6.0 is a big release. However here are some new features which are clearly standing out.
ARM and RISC-V architecture
A lot of work went into supporting additional ARM and RISC-V architectures. Additional processors and boards are supported.
- ARM: support for ARMv8.1-M ‘Helium’ architecture and Cortex-M55 CPU
- ARM: support for ARMv8.4 TTST, SEL2, and DIT extensions
- ARM: ARMv8.5 MemTag extension now available for both system and usermode emulation
- ARM: support for new mps3-an524, mps3-an547 board models
- ARM: additional device emulation support for xlnx-zynqmp, xlnx-versal, sbsa-ref, npcm7xx, and sabrelite board models
Snapshots of running VMs
Users from VMware are used to create snapshots of a running VM, including saving the current memory state, to revert the VM to a certain running state (including all processes running at the time of the snapshot). In QEMU 6.0 this is now also possible, however marked as "experimental" first.
New feature (experimental): Background RAM snapshot from Andrey Gruzdev; using the Linux UFFD-WP feature, enabling fixed size snapshots even with busy guests
Another exciting new feature is Multi-process QEMU (mpqemu). This allows to run emulated devices in a separate process. This can help to improve security as each process can have its own security policy (SELinux for example). However multi-process is currently also marked as experimental and is subject to change. Also right now, only one physical device can be emulated: The storage controller lsi53c895.
To use multi-process, the parameters -machine x-remote and -device -x-pci-proxy-dev have been added to the command line.