lançamento do projeto . Como emulador, o QEMU permite executar um programa compilado para uma plataforma de hardware em um sistema com uma arquitetura completamente diferente, por exemplo, executar um aplicativo para ARM em um PC compatível com x86. No modo de virtualização, o desempenho da execução do código em um ambiente isolado é próximo ao de um sistema nativo, graças à execução direta de instruções na CPU e ao uso do hipervisor Xen ou do módulo KVM.
O projeto foi inicialmente criado por Fabrice Bellard com o objetivo de possibilitar a execução de arquivos executáveis Linux compilados para a plataforma x86 em arquiteturas diferentes de x86. Ao longo dos anos de desenvolvimento, foi adicionada suporte para emulação completa de 14 arquiteturas de hardware, e o número de dispositivos de hardware emulados ultrapassou 400. Para a versão 4.0, mais de 3100 alterações foram feitas por 220 desenvolvedores.
Principais , adicionadas no QEMU 4.0:
- No emulador da arquitetura ARM, foi adicionada suporte a extensões de instruções ARMv8+: SB, PredInv, HPD, LOR, FHM, AA32HPD,
PAuth, JSConv, CondM, FRINT e BTI. Adicionada suporte para emulação das placas "Musca" e "MPS2". Melhorada a emulação do PMU ARM (Unidade de Gerenciamento de Energia). Na plataforma adicionada a possibilidade de uso de mais de 255 GB de RAM e suporte a imagens u-boot do tipo "noload"; - No emulador da arquitetura x86, no motor de aceleração de virtualização (Intel Hardware Accelerated Execution), foi adicionada suporte para hosts compatíveis com POSIX, como Linux e NetBSD (anteriormente, apenas a plataforma Darwin era suportada). No emulador do chipset Q35 (ICH9), agora pode ser opcionalmente declarada a velocidade máxima (16GT/s) e o número de linhas de conexão (x32) definidas na especificação PCIe 4.0 (para garantir compatibilidade, por padrão, o QEMU é configurado para 2.5GT/s e x1). Foi possibilitada a carga de imagens Xen PVH com a opção "-kernel";
- No emulador da arquitetura MIPS, foi adicionada suporte para emulação multithread com o gerador de código clássico TCG (Tiny Code Generator). Também foi adicionada suporte para emulação das CPUs I7200 (nanoMIPS32 ISA) e I6500 (MIPS64R6 ISA), a capacidade de processar solicitações do tipo CPU usando o protocolo QMP (QEMU Management Protocol), e suporte para os registros de configuração SAARI e SAAR. Melhorado o funcionamento das máquinas virtuais do tipo Fulong 2E. Atualizada a implementação da Unidade de Comunicação Interthread;
- No emulador da arquitetura PowerPC, foi adicionada suporte para emulação do controlador de interrupções XIVE, expandida a suportabilidade do POWER9, e para a linha P series foi adicionada a possibilidade de conectar hot-plug dos principais pontes PCI (PHB, PCI host bridge). Incluída por padrão proteção contra ataques Spectre e Meltdown;
- No emulador da arquitetura RISC-V, foi adicionada suporte para emulação PCI e USB. No servidor de depuração embutido (gdbserver), foi implementada a capacidade de definir listas de registros em arquivos XML. Adicionada suporte para os campos mstatus TSR, TW e TVM;
- O emulador da arquitetura s390 adicionou suporte ao modelo de CPU z14 GA 2, bem como suporte para emulação de extensões de instruções para cálculos com ponto flutuante e operações vetoriais. Adicionada a capacidade de conectar dispositivos a quente no vfio-ap;
- No emulador de processadores da família Tensilica Xtensa, melhorou-se o suporte a SMP para Linux e foi adicionado suporte à extensão FLIX (Extensão de instruções de comprimento flexível);
- Foi adicionada à interface gráfica a opção ‘-display spice-app’ para configurar e iniciar uma variante do cliente de acesso remoto Spice com uma aparência semelhante à interface GTK do QEMU;
- Na implementação do servidor VNC, foi adicionada suporte ao gerenciamento de acesso através das opções tls-authz/sasl-authz;
- No QMP (Protocolo de Gerenciamento do QEMU), foi adicionado suporte para execução de comandos de forma centralizada/external (Out-of-band) e implementadas comandos adicionais para trabalhar com dispositivos de bloco;
- No VFIO, foi adicionada a implementação da interface EDID para mdev suportados (Intel vGPU), permitindo mudar a resolução da tela, usando as opções xres e yres;
- Para Xen, foi adicionado um novo dispositivo ‘xen-disk’, que pode criar um backend de disco para Xen PV por conta própria (sem acessar o xenstore). Aumentou-se o desempenho do backend de disco Xen PV e foi adicionada a capacidade de redimensionar o disco;
- Nos dispositivos de bloco de rede, as capacidades de diagnóstico e rastreamento foram ampliadas, melhorando a compatibilidade do cliente com implementações problemáticas do servidor NBD. No qemu-nbd foram adicionadas as opções ‘—bitmap’, ‘—list’ e ‘—tls-authz’;
- No dispositivo IDE/viade emulado, foi adicionado suporte ao modo PCI IDE;
- Adicionou-se suporte para usar o algoritmo lzfse para compactação de imagens dmg. Para o formato qcow2, foi adicionado suporte para conectar arquivos externos com dados. As operações de descompactação de qcow2 foram movidas para uma thread separada. Adicionou-se suporte para a operação ‘blockdev-create’ nas imagens vmdk;
- No dispositivo de bloco virtio-blk, foram adicionados suporte para as operações DISCARD (notificação de liberação de blocos) e WRITE_ZEROES (zerar um intervalo de blocos lógicos);
- No dispositivo pvrdma, foi implementado suporte para os serviços de Datagramas de Gerenciamento RDMA (MAD);
- Realizadas , que quebram a compatibilidade retroativa. Por exemplo, em vez da opção «handle» em «-fsdev» e «-virtfs», deve-se usar as opções «local» ou «proxy». As opções «-virtioconsole» (substituída por «-device virtconsole»), «-no-frame», «-clock», «-enable-hax» (substituída por «-accel hax») foram removidas. O dispositivo «ivshmem» foi eliminado (deve-se utilizar «ivshmem-doorbell» ou «ivshmem-plain»). O suporte para a construção com SDL1.2 foi interrompido (deve-se usar SDL2).
Fonte: opennet.ru
