Представлен релиз проекта QEMU 7.0. В качестве эмулятора QEMU позволяет запустить программу, собранную для одной аппаратной платформы, на системе с совершенно иной архитектурой, например, выполнить приложение для ARM на x86-совместимом ПК. В режиме виртуализации в QEMU производительность выполнения кода в изолированном окружении близка к аппаратной системе за счёт прямого выполнения инструкций на CPU и задействования гипервизора Xen или модуля KVM.
Изначально проект был создан Фабрисом Белларом (Fabrice Bellard) с целью обеспечения возможности запуска собранных для платформы x86 исполняемых файлов Linux на архитектурах, отличных от x86. За годы разработки была добавлена поддержка полной эмуляции для 14 аппаратных архитектур, число эмулируемых аппаратных устройств превысило 400. При подготовке версии 7.0 внесено более 2500 изменений от 225 разработчиков.
Ключевые улучшения, добавленные в QEMU 7.0:
- В эмуляторе архитектуры x86 добавлена поддержка набора инструкций Intel AMX (Advanced Matrix Extensions), реализованных в серверных процессорах Intel Xeon Scalable. AMX предлагает новые настраиваемые регистры TMM “TILE” и инструкции для манипуляции с данными в этих регистрах, такие как TMUL (Tile matrix MULtiply) для умножения матриц.
- Предоставлена возможность журналирования событий ACPI от гостевой системы через интерфейс ACPI ERST.
- В модуле virtiofs, применяемом для проброса части файловой системы хост-окружения в гостевую систему, улучшена поддержка меток безопасности (security label). Устранена уязвимость CVE-2022-0358, позволяющая поднять свои привилегии в системе через создание исполняемых файлов в пробрасываемых через virtiofs каталогах, принадлежащих другой группе и снабжённых флагом SGID.
- Повышена гибкость резервного копирования находящихся в работе активных системных образов (создаётся снапшот и применяется фильтр copy-before-write (CBW) для копирования данных из областей, в которые гостевая система выполняет запись для актуализации состояния снапшота). Добавлена поддержка образов в форматах отличных от qcow2. Обеспечена возможность доступа к снапшоту с бэкапом не напрямую, а через драйвер блочного устройства snapshot-access. Расширены возможности по управлению работой фильтра CBW, например, можно исключать из обработки определённые битовые карты.
- В эмуляторе ARM для машин ‘virt’ добавлена поддержка virtio-mem-pci, определения топологии CPU для гостевой системы и включения PAuth при использовании гипервизора KVM с ускорителем hvf. В эмуляторе плат ‘xlnx-versal-virt’ добавлена поддержка PMC SLCR и эмуляции контроллера Flash-памяти OSPI. Для ‘xlnx-zynqmp’ добавлены новые модели управления CRF и APU.
- В эмулятор архитектуры RISC-V добавлена поддержка гипервизора KVM и реализованы векторные расширения Vector 1.0, а также инструкции Zve64f, Zve32f, Zfhmin, Zfh, zfinx, zdinx и zhinx{min}. Для эмулируемых машин ‘spike’ добавлена поддержка загрузки бинарных файлов OpenSBI (RISC-V Supervisor Binary Interface). Для эмулируемых машин ‘virt’ реализована возможность использования до 32 процессорных ядер и поддержка AIA.
- В эмуляторе архитектуры HPPA предоставлена возможность использования до 16 vCPU и улучшен графических драйвер для пользовательских окружений HP-UX VDE/CDE. Добавлена возможность изменения порядка загрузки для SCSI-устройств.
- В эмуляторе архитектуры OpenRISC для плат ‘sim’ добавлена поддержка использования до 4 ядер CPU, загрузки внешнего образа initrd image и автоматической генерации device tree для загружаемого ядра.
- В эмулятор архитектуры PowerPC для эмулируемых машин ‘pseries’ реализована возможность запуска гостевых систем под управлением вложенного гипервизора KVM. Добавлена поддержка устройства spapr-nvdimm. Для эмулируемых машин ‘powernv’ добавлена поддержка XIVE2 и PHB5, улучшена поддержка XIVE и PHB 3/4.
- В эмулятор архитектуры s390x добавлена поддержка расширений z15 (Miscellaneous-Instruction-Extensions Facility 3).