De release van QEMU 6.0 is gepresenteerd. Als emulator maakt QEMU het mogelijk om een programma dat is samengesteld voor één hardwareplatform uit te voeren op een systeem met een totaal andere architectuur, bijvoorbeeld een ARM-applicatie uitvoeren op een x86-compatibele pc. In de virtualisatiemodus benadert de uitvoering van de code in een geïsoleerde omgeving de prestaties van een hardware-systeem door instructies rechtstreeks op de CPU uit te voeren en gebruik te maken van de hypervisor Xen of de KVM-module.
Het project is oorspronkelijk opgericht door Fabrice Bellard met het doel om de uitvoering van voor de x86-architectuur samengestelde Linux-executable bestanden op andere architecturen mogelijk te maken. Gedurende de jaren zijn er volledige emulatieondersteuning toegevoegd voor 14 hardwarearchitecturen, en het aantal geëmuleerde hardwareapparaten is meer dan 400. Voor versie 6.0 zijn er meer dan 3300 wijzigingen aangebracht door 268 ontwikkelaars.
Belangrijke verbeteringen toegevoegd in QEMU 6.0:
- De emulator voor NVMe-controllers is aangepast aan de NVMe 1.4-specificatie en is voorzien van experimentele ondersteuning voor gezoneerde naamruimten, multipath I/O en end-to-end gegevensversleuteling op de schijf.
- Experimentele opties '-machine x-remote' en '-device x-pci-proxy-dev' zijn toegevoegd voor het verplaatsen van device-emulatie naar externe processen. In deze modus wordt momenteel alleen de emulatie van de SCSI-adapter lsi53c895 ondersteund.
- Experimentele ondersteuning voor het maken van snapshots van het RAM-inhoud is toegevoegd.
- Een FUSE-module is toegevoegd voor het exporteren van block devices, waardoor het mogelijk is om een snapshot van de staat van elk block device dat in het gastensysteem wordt gebruikt, te monteren. Export vindt plaats via het QMP-commando block-export-add of via de optie '--export' in de utility qemu-storage-daemon.
- In de ARM-emulator is ondersteuning toegevoegd voor de ARMv8.1-M 'Helium' architectuur en de Cortex-M55 processors, evenals geavanceerde instructies ARMv8.4 TTST, SEL2 en DIT. Ondersteuning is toegevoegd voor ARM-borden mps3-an524 en mps3-an547, evenals aanvullende emulatie van apparaten voor de borden xlnx-zynqmp, xlnx-versal, sbsa-ref, npcm7xx en sabrelite.
- Voor ARM in systeem- en gebruikersomgevingsemulatiemodi is ondersteuning voor de ARMv8.5 MTE (MemTag, Memory Tagging Extension) geïmplementeerd, waarmee tags aan elke geheugenallocatie kunnen worden gekoppeld en bij toegang tot het geheugen een controle kan plaatsvinden op de pointer, die moet zijn gekoppeld aan de juiste tag. Deze extensie kan worden gebruikt om het misbruik van kwetsbaarheden te blokkeren die voortkomen uit toegang tot al vrijgegeven geheugens, bufferoverlopen, toegang voordat initialisatie plaatsvindt en gebruik buiten de huidige context.
- In de 68k-architectuur emulator is ondersteuning toegevoegd voor een nieuw type te emuleren machines 'virt', die virtio gebruiken om de prestaties van apparaten te optimaliseren.
- In de x86-architectuur emulator is de mogelijkheid geïntroduceerd om de AMD SEV-ES (Secure Encrypted Virtualization) technologie toe te passen voor het versleutelen van de processorregisters die in het gastbesturingssysteem worden gebruikt, wat de inhoud van de registers ontoegankelijk maakt voor de hostomgeving, tenzij het gastbesturingssysteem expliciet toegang verleent.
- In de klassieke TCG (Tiny Code Generator) codegenerator is ondersteuning voor het PKS (Protection Keys Supervisor) mechanisme geïmplementeerd voor de emulatie van x86-systemen, dat kan worden gebruikt om toegang tot geprivilegieerde geheugenspagina's te beschermen.
- In de MIPS-architectuur emulator is een nieuw type te emuleren machines 'virt' toegevoegd met ondersteuning voor de Chinese Loongson-3 processors.
- In de PowerPC-architectuur emulator is ondersteuning voor externe BMC-controllers toegevoegd voor de te emuleren 'powernv' machines. Voor de te emuleren pseries-machines is informatie over storingen verstrekt bij pogingen tot hot-pluggen van geheugen en CPU.
- Ondersteuning voor de emulatie van Qualcomm Hexagon DSP-processors is toegevoegd.
- In de klassieke TCG (Tiny Code Generator) codegenerator is ondersteuning voor macOS-hostomgevingen op systemen met de nieuwe Apple M1 ARM-chip geïmplementeerd.
- In de RISC-V-architectuur emulator voor Microchip PolarFire-borden is ondersteuning voor QSPI NOR-flash geïmplementeerd.
- In de Tricore-emulator is ondersteuning toegevoegd voor een nieuw model van TriBoard-borden, dat de SoC Infineon TC27x emuleert.
- In de ACPI-emulator is de mogelijkheid toegevoegd om netwerkadapters in gastsystemen namen toe te wijzen die niet afhankelijk zijn van de volgorde van aansluiting op de PCI-bus.
- In virtiofs is ondersteuning toegevoegd voor de FUSE_KILLPRIV_V2-optie om de prestaties van gastsystemen te verbeteren.
- In VNC is ondersteuning voor cursortransparantie en resolutie-schaalvergroting in virtio-vga toegevoegd, afhankelijk van de venstergrootte.
- In QMP (QEMU Machine Protocol) is ondersteuning voor asynchrone parallelle toegang toegevoegd bij het uitvoeren van back-uptaken.
- In de USB-emulator is de mogelijkheid toegevoegd om het verkeer, dat zich voordoet tijdens het werken met USB-apparaten, op te slaan in een apart pcap-bestand voor latere inspectie in Wireshark.
- Nieuwe QMP-commando's load-snapshot, save-snapshot en delete-snapshot zijn toegevoegd voor het beheren van qcow2-snapshots.
- In virtiofs zijn de kwetsbaarheden CVE-2020-35517 en CVE-2021-20263 opgelost. Het eerste probleem stelt een geprivilegieerde gebruiker in staat om toegang te krijgen tot de hostomgeving vanuit het gastenbesturingssysteem door het maken van een speciaal apparaatsbestand in de map die gedeeld wordt met de hostomgeving. Het tweede probleem wordt veroorzaakt door een fout bij de verwerking van uitgebreide attributen in de optie 'xattrmap' en kan leiden tot het negeren van het opzeggingsrecht op schrijven en een verhoging van privileges binnen het gastenbesturingssysteem.
Bron: opennet.ru
