Se ha presentado el lanzamiento del proyecto QEMU 9.0. Como emulador, QEMU permite ejecutar programas compilados para una plataforma de hardware en un sistema con una arquitectura completamente diferente, por ejemplo, ejecutar una aplicación para ARM en un PC compatible con x86. En modo de virtualización, el rendimiento de ejecución de código en un entorno aislado es cercano al de un sistema físico gracias a la ejecución directa de instrucciones en la CPU y la utilización del hipervisor Xen o el módulo KVM en Linux, o el módulo NVMM en NetBSD.
El proyecto fue inicialmente creado por Fabrice Bellard con el objetivo de permitir la ejecución de archivos ejecutables de Linux compilados para la plataforma x86 en arquitecturas diferentes a x86. A lo largo de los años de desarrollo, se ha añadido soporte para la emulación completa de 14 arquitecturas de hardware, y el número de dispositivos de hardware emulados ha superado los 400. En la preparación de la versión 9.0 se han realizado más de 2700 cambios por parte de 220 desarrolladores.
Mejoras clave añadidas en QEMU 9.0:
- En el controlador virtio-blk, que proporciona un dispositivo de bloque virtual para máquinas virtuales, se ha añadido soporte para un sistema de colas multinivel (multiqueue), que permite dividir colas para diferentes dispositivos de bloque para proporcionar acceso multihilo en sistemas multicanal (diferentes colas de un mismo disco pueden ser procesadas por diferentes hilos de entrada/salida).
- En el dispositivo de bloque usb-storage se ha añadido soporte para las propiedades ‘backend_defaults’, ‘logical_block_size’, ‘physical_block_size’, ‘min_io_size’, ‘opt_io_size’ y ‘discard_granularity’.
- En la biblioteca gdbstub, destinada a la depuración remota en GDB utilizando el protocolo RSP (Remote Serial Protocol), se ha añadido soporte para el modo fork-follow, la operación siginfo:read y la interceptación de llamadas al sistema en el espacio de usuario.
- Los backends de preasignación de memoria se han adaptado para funcionar en modo multihilo y ahora pueden manejar simultáneamente solicitudes de varios hilos.
- En las herramientas para la migración de máquinas virtuales se ha añadido el modo «mapped-ram», que mejora la eficiencia de la creación de instantáneas de las máquinas virtuales. Se ha mejorado la detección de la página de memoria cero, lo que ha permitido acelerar significativamente la migración de máquinas virtuales inactivas en sistemas que soportan multifd. En la migración basada en VFIO (Virtual Function I/O) se ha implementado soporte para reinicio desde un estado guardado (checkpoint-restart).
- Se ha reescrito la implementación del dispositivo ESP SCSI (am53c974/dc390).
- Se ha añadido soporte para el algoritmo de cifrado SM4 y se ha habilitado su uso en el controlador de dispositivo de bloque ‘luks’.
- Se ha añadido soporte para la creación y uso de archivos con encabezados LUKS en el controlador ‘luks’.
- En el emulador de arquitectura ARM se ha implementado soporte para las placas L475E-IOT01A IoT, mp3-an536 (MPS3 con firmware AN536) y raspi4b (Raspberry Pi 4 Model B). Se ha añadido soporte para la emulación de las extensiones de procesador ECV (Enhanced Counter Virtualization), NV (Nested Virtualization) y NV2 (Enhanced Nested Virtualization). Se han ampliado las capacidades de los emuladores de las placas Freescale i.MX6, Allwinner R40, Bananapi, Raspberry Pi, npcm7xx y virt.
- En el emulador de arquitectura RISC-V se ha añadido soporte para las extensiones del conjunto de instrucciones Zacas, amocas, RVA22, Zaamo, Zalrsc y Ztso. máquinas virtuales En RISC-V se ha proporcionado soporte para SMBIOS. Se ha implementado soporte ACPI para SRAT, SLIT, AIA y PLIC. Se ha actualizado el soporte para las tablas RHCT.
- En el emulador de arquitectura HPPA hasta la versión 16 se ha actualizado el firmware SeaBIOS-hppa. El tamaño máximo de la memoria se ha incrementado de 3 GB a 3840 MB. Se ha añadido soporte para la opción «—nodefaults».
- En el emulador de arquitectura LoongArch se ha añadido soporte para la aceleración KVM y se ha implementado soporte para extensiones vectoriales del conjunto de instrucciones LSX/LASX.
- En el emulador de arquitectura s390x se ha añadido soporte para las instrucciones CVDG, CVB, CVBY y CVBG. Se ha mejorado la emulación de LAE (Load Address Extended).
- En el emulador de arquitectura 68k se ha añadido el dispositivo nubus-virtio-mmio, que permite acceder a dispositivos virtio desde máquinas q800.
- Se ha permitido la compilación con la bandera ‘-fzero-call-used-regs’, que protege contra la fuga de información de funciones y reduce el número de bloques aptos para construir gadgets ROP (Return-Oriented Programming) en exploits. También se ha añadido la compilación con la bandera ‘-ftrivial-auto-var-init=zero’ para la inicialización automática con un valor cero de todas las variables almacenadas en la pila.
- Para ejecutar QEMU con KVM, ahora se requiere al menos el núcleo de Linux 4.4. Para los hosts ARM, en el futuro se planea elevar este umbral a la versión 4.19. Se ha detenido el soporte para el uso de Windows de 32 bits como sistemas operativos host.
- Se ha añadido soporte para OpenBSD 7.4.
Fuente: opennet.ru
