QEMU 9.0 llega con soporte multicolapso real en dispositivos, nuevas extensiones para ARM y RISC-V, optimizaciones en seguridad y rendimiento
Se ha dado a conocer el lanzamiento de la nueva versión de QEMU 9.0 y en este se ha implementado una amplia gama de nuevas características, cambios significativos y correcciones de errores, desde nuevas extensiones arquitectónicas hasta mejoras relacionadas con dispositivos, migración y seguridad.
Para quienes desconocen de QEMU, deben saber que este permite ejecutar un programa creado para una plataforma de hardware en un sistema con una arquitectura completamente diferente, por ejemplo, ejecutar una aplicación ARM en una PC compatible con x86.
En el modo de virtualización en QEMU, el rendimiento de la ejecución de código en un entorno aislado es similar al de un sistema de hardware debido a la ejecución directa de instrucciones en la CPU y el uso del hipervisor Xen o módulo KVM.
Principales novedades de QEMU 9.0
En esta nueva versión que se presenta de QEMU 9.0, una de las áreas que recibió especial atención fue la de dispositivos, ya que ahora el dispositivo «virtio-blk» cuenta con soporte multicolapso real, permitiendo separar colas para diferentes dispositivos de bloque y proporcionando acceso multiproceso en múltiples núcleos. En el dispositivo de bloque de almacenamiento USB «usb-storage» se han agregado soportes para propiedades como ‘backend_defaults’, ‘logical_block_size’, ‘physical_block_size’, ‘min_io_size’, ‘opt_io_size’, y ‘discard_granularity’.
QEMU 9. presenta mejoras de soporte para diversas arquitecturas, ya que por ejemplo para ARM se añadieron nuevas características arquitectónicas ahora emuladas: FEAT_ECV (Enhanced Counter Virtualization), FEAT_NV (Nested Virtualization), y FEAT_NV2 (Enhanced nested virtualization support). También se destaca el soporte añadido para las nuevas placas: B-L475E-IOT01A board, Cortex-R52 board y Raspberry Pi 4 Model B, asi como tambien mejoras en de soporte para las placas ya soportadas: i.MX6, Allwinner R40 y Bananapi, Raspberry Pi y placas basadas en npcm7xx.
Para la arquitectura RISC-V, en QEMU se añadió el soporte para diferentes extensiones entre las que se mencionan: Zacas, amocas.[w,d,q], RVA22 profiles, ‘B’ extensión, CSR mcontext of debug Sdtrig extension, Zaamo, Zalrsc, Ztso, y zfa. Tambien se añadieron las nuevas extensiones ISA, soporte de SMBIOS para la máquina virtual RISC-V virt, y la adición de CPUs rv32i,rv32e y rv64e.
La biblioteca gdbstub, utilizada para la depuración remota en GDB con RSP (Protocolo serie remoto), ha recibido mejoras como soporte para el modo fork-follow, operación siginfo:read, e interceptación de llamadas al sistema en el espacio de usuario.
Se ha añadido el modo «mapped-ram» a las herramientas de migración de máquinas virtuales, para un soporte eficiente de snapshots de VM aumentando la eficiencia en la creación de instantáneas, también se ha agregado soporte para el algoritmo de cifrado SM4 y para crear y usar archivos con encabezados LUKS en el controlador ‘luks’.
Además de ello se han implementado mejoras de seguridad en la compilación de QEMU con diversas medidas para reducir las vulnerabilidades, incluyendo la inclusión de opciones de compilar ‘fzero-call-used-regs’ y ‘ftrivial-auto-var-init=zero’ para reducir la posibilidad de variables de pila no inicializadas que pueden causar problemas de seguridad, ademas de que ahora se requiere al menos un kernel Linux 4.4 para ejecutar QEMU con KVM.
De los demás cambios que se destacan:
- Los backends de preasignación ahora funcionan en modo multiproceso y pueden procesar simultáneamente solicitudes de múltiples subprocesos.
- Dirección de migración para VM SUSPENDIDOS.
- Detección de página cero para el gran aumento en la migración
- Varias optimizaciones y correcciones en dispositivos gráficos como Hyper-V, I2C, Input Devices, y más.
- Numerosos arreglos y mejoras en dispositivos de red, incluyendo soporte mejorado para la máquina virtual Raspberry Pi 4 Model B.
- Diversos ajustes en la capa de dispositivos PCI/PCIe para mejorar el rendimiento y la estabilidad.
- Correcciones para el dispositivo ESP SCSI (am53c974/dc390).
- MIPS, HPPA, LoongArch, SPARC, s390x, y x86 han experimentado mejoras y correcciones específicas en sus respectivas arquitecturas.
- Actualización de la máquina virtual OpenBSD a la versión 7.4.
- Soporte para capturar syscalls en modo de usuario y modos de seguimiento de bifurcación.
- vDPA se implementaron actualizaciones para mejorar la compatibilidad con las exportaciones de bloques VDUSE.
Si estás interesado en poder conocer más al respecto, puedes consultar los detalles en la lista completa de cambios en el siguiente enlace.