QEMU 6.0

Теги

QEMU — свободная программа с открытым исходным кодом для эмуляции аппаратного обеспечения различных платформ. 

QEMU включает в себя эмуляцию процессоров Intel x86 и устройств ввода-вывода. Может эмулировать 80386, 80486, Pentium, Pentium Pro, AMD64 и другие x86-совместимые процессоры; ARM, MIPS, RISC-V, PowerPC, SPARC, SPARC64 и частично m68k. Работает на Syllable, FreeBSD, OpenBSD, FreeDOS, Linux, Windows 9x, Windows 2000, Mac OS X, QNX, Android и др. 

Помимо эмуляции, поддерживает технологии аппаратной виртуализации (Intel VT и AMD SVM) на x86-совместимых процессорах Intel и AMD. Первоначально разработка велась в рамках проекта Linux KVM, в котором, помимо собственно KVM (поддержки технологий аппаратной виртуализации x86-совместимых процессоров на уровне ядра Linux), разрабатывались патчи для QEMU, позволяющие QEMU использовать функциональность KVM.

При подготовке версии 6.0 внесено более 3300 изменений от 268 разработчиков. 

Основные изменения в новой версии:

  • Эмулятор контроллеров NVMe приведён к соответствию со спецификацией NVMe 1.4 и снабжён экспериментальной поддержкой зонированных пространств имён, multipath I/O и сквозного шифрования данных на накопителе.
  • Добавлены экспериментальные опции "-machine x-remote" и "-device x-pci-proxy-dev" для выноса эмуляции устройств во внешние процессы. В данном режиме пока поддерживается только эмуляция SCSI-адаптера lsi53c895.
  • Добавлена экспериментальная поддержка создания снапшотов содержимого ОЗУ.
  • Добавлен FUSE-модуль для экспорта блочных устройств, позволяющий примонтировать срез состояния любого блочного устройства, используемого в гостевой системе. Экспорт осуществляется через QMP-команду block-export-add или через опцию "--export" в утилите qemu-storage-daemon.
  • В эмулятор 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 реализована дополнительная эмуляция устройств.
  • Для ARM в режимах эмуляции на уровне системы и пользовательского окружения реализована поддержка расширения ARMv8.5 MTE (MemTag, Memory Tagging Extension), позволяющего привязать теги к каждой операции выделения памяти и организовать при доступе к памяти проверку указателя, который должен быть связан с корректным тегом. Расширение может применяться для блокирования эксплуатации уязвимостей, вызванных обращением к уже освобождённым блокам памяти, переполнениями буфера, обращениями до инициализации и использованием вне текущего контекста.
  • В эмуляторе архитектуры 68k добавлена поддержка нового типа эмулируемых машин "virt", использующих для оптимизации производительности устройства virtio.
  • В эмуляторе архитектуры x86 добавлена возможность применения технологии AMD SEV-ES (Secure Encrypted Virtualization) для шифрования регистров процессора, используемых в гостевой системе, что делает содержимое регистров недоступным для хост-окружения, если гостевая система явно не предоставит к ним доступ.
  • В классическом генераторе кода TCG (Tiny Code Generator) при эмуляции систем x86 реализована поддержка механизма PKS (Protection Keys Supervisor), который можно применять для защиты доступа к привилегированным страницам памяти.
  • В эмуляторе архитектуры MIPS добавлен новый тип эмулируемых машин "virt" c поддержкой китайских процессоров Loongson-3.
  • В эмуляторе архитектуры PowerPC для эмулируемых машин "powernv" добавлена поддержка внешних BMC-контроллеров. Для эмулируемых машин pseries обеспечено информирование о сбоях при попытке горячего извлечения памяти и CPU.
  • Добавлена поддержка эмуляции процессоров Qualcomm Hexagon c DSP.
  • В классическом генераторе кода TCG (Tiny Code Generator) реализована поддержка хост-окружений macOS на системах с новым ARM-чипом Apple M1.
  • В эмуляторе архитектуры RISC-V для плат Microchip PolarFire реализована поддержка QSPI NOR flash.
  • В эмуляторе Tricore появилась поддержка новой модели плат TriBoard, эмулирующей SoC Infineon TC27x.
  • В эмуляторе ACPI предоставлена возможность назначения сетевым адаптерам в гостевых системах имён, независящих от порядка подключения к шине PCI.
  • В virtiofs добавлена поддержка опции FUSE_KILLPRIV_V2 для повышения производительности гостевых систем.
  • В VNC добавлена поддержка прозрачности курсора и поддержка масштабирования разрешения экрана в virtio-vga, отталкивающаяся от размера окна.
  • В QMP (QEMU Machine Protocol) добавлена поддержка асинхронного параллельного доступа при выполнении задач резервного копирования.
  • В эмуляторе USB добавлена возможность сохранения трафика, образующегося при работе с USB-устройствами, в отдельный pcap-файл для последующего инспектирования в Wireshark.
  • Добавлены новые QMP-команды load-snapshot, save-snapshot и delete-snapshot для управления снапшотами qcow2.
  • В virtiofs устранены уязвимости CVE-2020-35517 и CVE-2021-20263. Первая проблема позволяет получить доступ к хост-окружению из гостевой системы через создание привилегированным пользователем в гостевой системе специального файла устройств в каталоге, совместно используемом c хост-окружением. Вторая проблема вызвана ошибкой при обработке расширенных атрибутов в опции 'xattrmap' и может привести к игнорированию сброса прав на запись и повышению привилегий внутри гостевой системы.

Для достижения скорости работы виртуализованной системы, сравнимой с работой на настоящем аппаратном обеспечении, qemu может использовать аппаратные возможности по виртуализации современных процессоров.