The new version of the QEMU 5.0 emulator has already been released and features several key enhancements, as well as greater support for more architectures. For those who do not know about QEMU, they should know that this is an emulator which allows you to run a compiled program for a hardware platform on a system with a completely different architecture, for example, run an ARM application on an x86 compatible PC.
In virtualization mode In QEMU, the performance of running code in an isolated environment is close to the native system due to direct execution of instructions on the CPU and the use of the Xen hypervisor or KVM module.
QEMU enables virtualization without emulation, if the guest system uses the same processor as the host system or failing that, it emulates the architectures of the x86, ARM, PowerPC, Sparc, MIPS1 processors. It works on x86, x64, PPC, Sparc, MIPS, ARM platforms and on Linux, FreeBSD, NetBSD, OpenBSD, Mac OS X, Unix and Windows operating systems.
Throughout the years of development, support has been added for full emulation of 14 architectures In hardware, the number of emulated hardware devices has exceeded 400. In preparation for version 5.0, more than 2800 changes were made by 232 developers.
Main novelties of QEMU 5.0
In the new version 5.0 added the ability to forward part of the file system from the host system to the guest system using virtiofsd. The guest system can mount the directory marked for export on the host side, which greatly simplifies the organization of access shared to directories on virtualization systems. Unlike using network FS, like NFS and virtio-9P, virtiofs enables performance close to the local file system.
Also ARM architecture emulator adds the ability to emulate Cortex-M7 CPUs and provides support for PC boards tacoma-bmc, Netduino Plus 2 and Orangepi.
Implemented support for emulation of the following architectural features:
- ARMv8.1: HEV, VMID16, PAN, PMU
- ARMv8.2: UAO, DCPoP, ATS1E1, TTCNP
- ARMv8.3: RCPC, CCIDX
- ARMv8.4: PMU, RCPC
The measure command qemu-img can now work with LUKS images and the option –Target-is-zero is added to the conversion command qemu-img to skip zeroing the target image.
Added experimental support for the qemu-storage-daemon process, which provides access to the QEMU block level and QMP commands, including working with block devices and the embedded NBD server, without having to start a full virtual machine.
In the architecture emulator PowerPC for 'powernv' machines, KVM hardware acceleration emulation has been added to run KVM guest systems with the classic TCG (Tiny Code Generator) code generator. To emulate persistent memory, support is added for NVDIMM mirrored in the file.
The architecture emulator RISC-V for virt and sifive_u boards implements support for syscon drivers Linux applications for power management and reboot.
Of the other changes mentioned, the following stand out:
- Support for live migration of external process data using QEMU D-Bus
- The ability to use memory backends to ensure the main RAM of the guest system.
- The backend is configured with the option "-machine memory-backend"
- New "compress" filter, which can be used to create backup copies of compressed images
- Support for vTPM and virtio-iommu devices has been added to emulated 'virt' machines.
- The ability to use AArch32 host systems to run KVM guest environments is deprecated.
- Support for a graphics console using an HP Artist graphics device has been added to the HPPA architecture emulator
- Added support for GINVT (Global Invalidation TLB) statement in MIPS architecture emulator
- Added Goldfish RTC support for the 'virt' board. Added experimental implementation of hypervisor extensions.
- Added support for AIS (Adapter Interrupt Suppression) when working in KVM mode on s390 architecture emulator. Support for live migration of external process data using QEMU D-Bus.