Вышла новая версия проекта QEMU 6.0. QEMU позволяет запускать программы, собранные для одной архитектуры на другой, например, выполнить приложение для ARM на обычном x86 или х86_64 ПК. В режиме виртуализации в QEMU производительность близка к аппаратной системе за счёт прямого выполнения инструкций на CPU и задействования Xen или модуля KVM.
Изначально проект был создан для запуска x86 Linux ПО на других архитектурах. За годы разработки была добавлена поддержка полной эмуляции для 14 различных аппаратных архитектур, число эмулируемых аппаратных устройств превысило 400. При подготовке версии 6.0 внесено более 3300 изменений от 268 разработчиков.
Новое в QEMU 6.0:
-
В virtiofs добавлена поддержка опции FUSE_KILLPRIV_V2 повышающая производительность гостевых систем.
-
В эмуляторе USB добавили возможность сохранения трафика, образующегося при работе с USB-устройствами, в отдельный pcap-файл,чтобы потом его можно было инспектировать в Wireshark.
-
Добавлены экспериментальные опции «-machine x-remote» и «-device x-pci-proxy-dev» для выноса эмуляции устройств во внешние процессы. В данном режиме пока поддерживается только эмуляция SCSI-адаптера lsi53c895.
-
В эмулятор ARM добавлена поддержка архитектуры ARMv8.1-M ‘Helium’ и процессоров Cortex-M55, а также расширенных инструкций ARMv8.4 TTST, SEL2 и DIT. Добавлена поддержка ARM-плат mps3-an524 и mps3-an547, а также. Для плат xlnx-zynqmp, xlnx-versal, sbsa-ref, npcm7xx и sabrelite реализована дополнительная эмуляция устройств.
-
В эмуляторе архитектуры PowerPC для эмулируемых машин «powernv» добавлена поддержка внешних BMC-контроллеров. Для эмулируемых машин pseries обеспечено информирование о сбоях при попытке горячего извлечения памяти и CPU.
-
В эмуляторе архитектуры MIPS добавлен новый тип эмулируемых машин «virt» c поддержкой китайских процессоров Loongson-3.
-
В классическом генераторе кода TCG (Tiny Code Generator) при эмуляции систем x86 реализована поддержка механизма PKS (Protection Keys Supervisor), который можно применять для защиты доступа к привилегированным страницам памяти.
-
В эмуляторе Tricore появилась поддержка новой модели плат TriBoard, эмулирующей SoC Infineon TC27x.
-
В эмуляторе архитектуры RISC-V для плат Microchip PolarFire реализована поддержка QSPI NOR flash.
-
Добавлена поддержка эмуляции процессоров Qualcomm Hexagon c DSP.
-
Добавлен FUSE-модуль для экспорта блочных устройств, позволяющий примонтировать срез состояния любого блочного устройства, используемого в гостевой системе. Экспорт осуществляется через QMP-команду block-export-add или через опцию «–export» в утилите qemu-storage-daemon.
-
В эмуляторе архитектуры 68k добавлена поддержка нового типа эмулируемых машин «virt», использующих для оптимизации производительности устройства virtio.
-
В эмуляторе архитектуры x86 добавлена возможность применения технологии AMD SEV-ES (Secure Encrypted Virtualization) для шифрования регистров процессора, используемых в гостевой системе, что делает содержимое регистров недоступным для хост-окружения, если гостевая система явно не предоставит к ним доступ.
-
Добавлена экспериментальная поддержка создания снапшотов содержимого ОЗУ.
-
Добавлены новые QMP-команды load-snapshot, save-snapshot и delete-snapshot для управления снапшотами qcow2.
-
В virtiofs устранены уязвимости CVE-2020-35517 и CVE-2021-20263. Первая проблема позволяет получить доступ к хост-окружению из гостевой системы через создание привилегированным пользователем в гостевой системе специального файла устройств в каталоге, совместно используемом c хост-окружением. Вторая проблема вызвана ошибкой при обработке расширенных атрибутов в опции ‘xattrmap’ и может привести к игнорированию сброса прав на запись и повышению привилегий внутри гостевой системы.
-
Эмулятор контроллеров NVMe приведён к соответствию со спецификацией NVMe 1.4 и снабжён экспериментальной поддержкой зонированных пространств имён, multipath I/O и сквозного шифрования данных на накопителе.
-
В VNC добавлена поддержка прозрачности курсора и поддержка масштабирования разрешения экрана в virtio-vga, отталкивающаяся от размера окна.
-
В QMP (QEMU Machine Protocol) добавлена поддержка асинхронного параллельного доступа при выполнении задач резервного копирования.
-
В эмуляторе ACPI предоставлена возможность назначения сетевым адаптерам в гостевых системах имён, независящих от порядка подключения к шине PCI.
-
Для ARM в режимах эмуляции на уровне системы и пользовательского окружения реализована поддержка расширения ARMv8.5 MTE (MemTag, Memory Tagging Extension), позволяющего привязать теги к каждой операции выделения памяти и организовать при доступе к памяти проверку указателя, который должен быть связан с корректным тегом. Расширение может применяться для блокирования эксплуатации уязвимостей, вызванных обращением к уже освобождённым блокам памяти, переполнениями буфера, обращениями до инициализации и использованием вне текущего контекста.
-
В классическом генераторе кода TCG (Tiny Code Generator) реализована поддержка хост-окружений macOS на системах с новым ARM-чипом Apple M1.
>>> Подробности