Se ha presentado el lanzamiento del proyecto QEMU 11.0.0. Como emulador, QEMU permite ejecutar un programa compilado 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 la 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 al uso del hipervisor Xen o del módulo KVM en Linux, o del módulo NVMM en NetBSD.
Originalmente, el proyecto fue creado por Fabrice Bellard con el objetivo de habilitar la ejecución de archivos ejecutables de Linux compilados para la plataforma x86 en arquitecturas diferentes de x86. A lo largo de los años, 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 11.0.0, se realizaron más de 2500 cambios por parte de 237 desarrolladores.
Mejoras clave añadidas en QEMU 11.0:
- Se eliminó el soporte para sistemas host de 32 bits, que fue declarado obsoleto en abril del año pasado en QEMU 10.0. En la versión de diciembre 10.2, se dejó de soportar las plataformas mips32 y ppc32 en el generador de código TCG (Tiny Code Generator), y en la versión QEMU 11.0 se eliminaron las plataformas restantes i386, arm, ppc y riscv32, así como se realizó una limpieza de la base de código y del sistema de construcción de componentes para operar en hosts de 32 bits.
- Se implementó un acelerador de virtualización "nitro" ("-accel nitro") y un nuevo tipo de sistemas emulados "nitro", que permite ejecutar enclaves aislados en QEMU basados en la tecnología de computación confidencial AWS Nitro Enclave, por ejemplo, para pruebas locales en entornos Nitro Enclave en QEMU. En AWS EC2, la tecnología Nitro Enclave permite ejecutar enclaves aislados anidados en una máquina virtual para trabajar con datos confidenciales, asignándoles parte de sus recursos.
- Se ha mejorado el soporte para aceleradores de virtualización MSHV (Microsoft Hypervisor) y WHPX (Microsoft Windows Hypervisor Platform Extensions).
- Al usar el hipervisor KVM ("-accel kvm"), se proporciona soporte para la virtualización de la extensión Intel CET (Control-flow Enforcement Technology) para su uso en máquinas virtuales la protección contra exploits que utilizan métodos de programación orientada al retorno (ROP - Return-Oriented Programming). También se añadió soporte para la reinicialización de datos confidenciales. máquinas virtuales, que utilizan las extensiones AMD SEV-SNP (Virtualización Encriptada Segura — Paging Anidado Seguro) e Intel TDX (Extensiones de Dominio de Confianza).
- Se ha añadido al dispositivo VirtIO-GPU, que proporciona el funcionamiento de GPU virtual, la capacidad de establecer diferentes resoluciones de pantalla para distintos dispositivos de salida.
- VirtIO-GPU ha añadido soporte para contextos DRM (contexto nativo del Administrador de Renderizado Directo), permitiendo mejorar el rendimiento del GPU virtual desde el sistema huésped mediante el envío directo de comandos al GPU real del anfitrión. El soporte para contextos DRM se activa al utilizar un nuevo dispositivo virtio-gpu-gl con la opción «drm_native_context=on». A diferencia de los contextos Virgl y Venus, que operan a nivel de API OpenGL y Vulkan, el contexto DRM se implementa a nivel de UAPI del núcleo de Linux.
- Se ha añadido la posibilidad de utilizar el lenguaje C++ para desarrollar complementos para el generador de código TCG (Generador de Código Pequeño).
- El controlador de bloques NFS ha añadido soporte para la compilación con la biblioteca libnfs 6.
- En el controlador de bloques curl, se ha añadido la opción «force-range» para forzar el uso del encabezado HTTP «Range» al cargar imágenes sin verificar previamente su soporte con una solicitud separada con el encabezado HEAD.
- En el controlador de bloques FUSE, se ha deshabilitado el manejo de operaciones de exportación en modo síncrono, lo que llevaba a bloquear el inicio de la máquina virtual hasta que se completara el procesamiento de otras solicitudes FUSE. Se ha añadido la posibilidad de utilizar múltiples hilos de entrada/salida (iothread) al realizar la exportación en FUSE.
- En el emulador de arquitectura x86, se ha añadido soporte para el CPU Intel Diamond Rapids («Xeon 7»).
- En el emulador de arquitectura ARM, se han añadido las extensiones del procesador FEAT_ASID2 y FEAT_E2H0. En el generador de código TCG se ha implementado la emulación de las extensiones SME (Extensión de Matriz Escalable).
- En el emulador de arquitectura HPPA, se ha añadido soporte para la emulación de CPUs de 64 bits con espacios de direcciones de 40 y 44 bits. Con SeaBIOS-hppa 24 se ha proporcionado la inicialización del controlador PCI Astro, que permite utilizar tarjetas gráficas PCI en sistemas de 64 bits.
- En el emulador de arquitectura LoongArch, se ha añadido la capacidad de migrar el PMU (Unidad de Monitoreo de Rendimiento) al utilizar el hipervisor KVM. En el generador de código TCG, se ha implementado la emulación de las extensiones LA v1.1, sc.q y llacq/screl, así como de las instrucciones FRECIP y DRECIP para el cálculo de valores inversos.
- En el emulador de arquitectura PowerPC, se ha añadido soporte para instantáneas.
- En el emulador de arquitectura RISC-V se ha implementado soporte para la CPU MIPS P8700 y extensiones del conjunto de instrucciones Zilsd, Zclsd, ZALASR y Smpmpmt.
- En el emulador de arquitectura s390 se ha añadido soporte para arranques desde dispositivos virtio-blk-pci y se ha implementado la emulación de la instrucción «DIVIDE TO INTEGER».
- Se ha aceptado una corrección que reduce las latencias de 50 a 80 veces al trabajar con fdmon (monitoreo de descriptores de archivo) en modo «aio=io_uring» y durante el estado de inactividad del sistema.
Fuente: opennet.ru
