O QEMU 9.1.0 foi oficialmente lançado em 5 de setembro de 2024, trazendo diversas melhorias significativas para emulação e virtualização de plataformas de hardware. O QEMU permite executar aplicativos projetados para uma arquitetura de hardware em sistemas com arquiteturas completamente diferentes, como rodar um programa ARM em um PC com processador x86. Com suporte a hipervisores como Xen, KVM no Linux e NVMM no NetBSD, o QEMU oferece desempenho próximo ao de hardware real em ambientes virtuais.
História e evolução do QEMU
Inicialmente desenvolvido por Fabrice Bellard, o QEMU começou como uma ferramenta para rodar programas Linux compilados para x86 em sistemas com arquiteturas não-x86. Desde então, o projeto evoluiu, incorporando emulação para mais de 14 arquiteturas de hardware e mais de 400 dispositivos. Com a versão 9.1, o projeto conta com mais de 2.800 alterações realizadas por 263 desenvolvedores, destacando a contribuição ativa da comunidade.
Principais novidades do QEMU 9.1.0
A nova versão apresenta um conjunto robusto de melhorias, focadas em otimizar tanto a emulação quanto a virtualização:
- Guest Migration Toolkit: Suporte para a aceleração da compactação de dados com tecnologias como IAA (Intel In-Memory Analytics Accelerator) e UADK (User Space Accelerator Development Kit). Também houve aprimoramento na recuperação de falhas de migração em modo pós-cópia.
- Virtio: O mecanismo Virtio, que facilita a comunicação entre o sistema host e os convidados, recebeu a função VIRTIO_F_NOTIFICATION_DATA, permitindo a transmissão de dados adicionais junto com notificações, otimizando o desempenho e facilitando o envio de dados de depuração.
- Agente convidado: Foram adicionados os comandos
guest-network-get-route
para sistemas Linux eguest-ssh-*
para Windows, permitindo maior controle sobre o comportamento da rede e conexões SSH. A interface de linha de comando também recebeu novas opções para configurar comandos permitidos e bloqueados.
Melhoria nas arquiteturas suportadas
A versão 9.1.0 aprimora a compatibilidade com diversas arquiteturas de hardware, trazendo novos recursos e suporte estendido:
- ARM: Implementação de suporte para extensões EAT_NMI, FEAT_CSV2_3 e FEAT_ETS2. A emulação da unidade SMMUv3 foi expandida para suportar páginas de memória aninhadas e de dois níveis, com melhorias também para placas Xilinx Zynq.
- LoongArch: Adição de suporte para até 256 CPUs com a extensão extioi e melhorias no carregamento de imagens de kernel no formato ELF.
- RISC-V: Novas extensões de processador como Zve32x, Zve64x e outras foram incluídas, além de suporte à versão 1.13 da Especificação de Instruções Privilegiadas.
- SPARC: Suporte para extensões de processador FMAF, IMA e VIS3/4.
- x86: Suporte à extensão AMD SEV-SNP para operações seguras com páginas de memória aninhadas, além da adição de perfis de emulação para CPUs baseadas nas microarquiteturas Icelake-Server-v7, SapphireRapids-v3 e SierraForest.
Correções de segurança e vulnerabilidades
Uma vulnerabilidade crítica (CVE-2024-7409) foi corrigida no servidor NBD, que poderia causar falhas no QEMU durante a execução do comando nbd-server-stop
, mesmo sem a presença de chaves TLS no cliente. Para mais detalhes do lançamento leia o log de mudanças.