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 permitir a execução de arquivos executáveis do Linux, compilados para a plataforma x86, em arquiteturas diferentes da x86. Ao longo de anos de desenvolvimento, foi adicionada suporte para emulação completa de 14 arquiteturas de hardware, com mais de 400 dispositivos de hardware emulados. Para a versão 5.0, foram feitas mais de 2800 alterações por 232 desenvolvedores.
Principais , adicionados no QEMU 5.0:
- A capacidade de repassar parte do sistema de arquivos do ambiente host para o sistema convidado usando . O sistema convidado pode montar um diretório marcado para exportação no lado do sistema host, facilitando o acesso compartilhado a diretórios em sistemas de virtualização. Ao contrário do uso de sistemas de arquivos de rede, como NFS e virtio-9P, o virtiofs permite alcançar um desempenho próximo ao de um sistema de arquivos local;
- migração ao vivo de dados de processos externos utilizando o barramento QEMU D-Bus;
- Possibilidade de uso para garantir o funcionamento da memória RAM principal do sistema convidado. O backend é especificado usando a opção '-machine memory-backend';
- Um novo filtro 'compress', que pode ser utilizado para criar backups comprimidos de imagens;
- O comando 'qemu-img measure' agora pode trabalhar com imagens LUKS, e o comando 'qemu-img convert' recebeu a opção '--target-is-zero' para pular a zeragem da imagem de destino;
- Foi adicionada suporte experimental para o processo qemu-storage-daemon, que fornece acesso ao nível de bloco do QEMU e comandos QMP, incluindo operações com dispositivos de bloco e um servidor NBD embutido, sem a necessidade de executar uma máquina virtual completa;
- No emulador da arquitetura ARM, foi adicionada a capacidade de emular a CPU Cortex-M7 e suporte para as placas tacoma-bmc, Netduino Plus 2 e Orangepi PC. Nos máquinas emuladas 'virt', o suporte para dispositivos vTPM e virtio-iommu foi adicionado. A utilização de sistemas hospedeiros AArch32 para executar ambientes convidados KVM foi declarada obsoleta. O suporte para emulação das seguintes capacidades das arquiteturas foi implementado:
- ARMv8.1: VHE, VMID16, PAN, PMU
- ARMv8.2: UAO, DCPoP, ATS1E1, TTCNP
- ARMv8.3: RCPC, CCIDX
- ARMv8.4: PMU, RCPC
- No emulador da arquitetura HPPA, foi adicionada suporte para console gráfico utilizando o dispositivo gráfico HP Artist;
- No emulador da arquitetura MIPS, foi adicionada suporte para a instrução GINVT (Global Invalidation TLB);
- No emulador da arquitetura PowerPC para máquinas 'powernv', foi adicionada a emulação de recursos de aceleração de hardware KVM para inicializar sistemas convidados.
KVM com gerador de código clássico TCG (Tiny Code Generator). Para a emulação de memória não volátil, foi adicionado suporte para NVDIMM refletido em arquivo. Para máquinas 'pseries', foi removida a necessidade de reinicialização para sincronizar o funcionamento dos controladores de interrupção XIVE/XICS no modo 'ic-mode=dual'; - No emulador da arquitetura RISC-V para placas 'virt' e 'sifive_u', foi implementado suporte para drivers padrão syscon no Linux para gerenciamento de energia e reinicialização. Para a placa 'virt', foi adicionado suporte para Goldfish RTC. Foi adicionada uma implementação experimental de extensões de hipervisor;
- No emulador da arquitetura s390, foi adicionado suporte para AIS (Adapter Interrupt Suppression) ao operar no modo KVM.
Fonte: opennet.ru
