QEMU, популярный эмулятор и виртуализатор с открытым исходным кодом, только что выпустил версию 9.2 с рядом примечательных улучшений, исправлений и удалений.
Несмотря на то, что это обновление включает в себя несколько критических изменений, оно также предлагает более чёткую дорожную карту и улучшенную поддержку новых аппаратных функций и конфигураций. Другими словами, хотя QEMU 9.2 может потребовать от пользователей внесения изменений в некоторые существующие настройки, в конечном счёте оно призвано создать более гибкую и перспективную среду виртуализации.
Начнём с того, что в QEMU 9.2 удалены несколько давно устаревших функций и параметров. Например, параметры командной строки -rotate и -portrait, ранее связанные с машинами PXA2xx, были удалены, поскольку эти машины больше не поддерживаются.
Аналогичным образом, старый «прокси»-сервер для 9pfs и сопутствующая ему программа virtfs-proxy-helper были удалены в пользу «локального» драйвера сервера или более современного решения virtio-fs. Кроме того, некоторые свойства, такие как «loaded» из типов объектов «секрет» и «tlscreds», были полностью удалены, поскольку они не выполняли никаких практических функций.
В то же время различные параметры перешли в категорию устаревших, что означает, что пользователям следует подготовиться к отказу от них. Например, команда query-migrationthreads, серверная часть gluster для блочных устройств и параметр «reconnect» для символьных и сетевых устройств были помечены как устаревшие.
Пользователям рекомендуется использовать предложенные замены, такие как «reconnect-ms» для устройств, или изучить новые стратегии миграции блоков и ввода-вывода. Хотя эти изменения поначалу могут показаться неудобными, разработчики QEMU стремятся обеспечить более чистую и согласованную кодовую базу в долгосрочной перспективе.
С точки зрения аппаратной эмуляции архитектура Arm претерпевает несколько важных улучшений. Были представлены новые архитектурные функции процессора, такие как FEAT_EBF16 и FEAT_CMOW. Кроме того, платы sbsa-ref и virt теперь оснащены блоками управления системной памятью (SMMU), способными к двухэтапному преобразованию, предлагая более мощные возможности виртуализации памяти.
На хостах macOS версии 15 или более поздней hvf-ускоритель теперь может работать с виртуальными машинами с большим объёмом памяти — более 36-битной адресации — при условии, что базовый процессор поддерживает эту функцию. Это позволяет запускать более ресурсоёмкие приложения на новом оборудовании Apple.
Кроме того, в QEMU 9.2 удалены некоторые устаревшие типы процессоров Arm, которые ранее были выведены из эксплуатации. В результате такие процессоры, как akita, borzoi и некоторые другие, наконец-то были окончательно выведены из эксплуатации. Хотя это может расстроить тех, кто ещё не обновил свои конфигурации, это отражает переход проекта к более активно поддерживаемым целям и надёжным функциям.
Аналогичным образом была полностью удалена целевая платформа CRIS, которую стало практически невозможно поддерживать из-за отсутствия поддержки Linux и современных наборов инструментов, что упростило поддержку QEMU для практически значимых архитектур.
Что касается RISC-V, то в этом выпуске достигнут значительный прогресс. Например, в QEMU 9.2 появилось свойство для установки vl в ceil(AVL/2), добавлен регистр fcsr в журнал для расширения F и даже улучшены инструкции по векторной загрузке/сохранению.
Кроме того, он расширяет поддержку AIA (расширенной архитектуры прерываний) в KVM и позволяет пользователям экспериментировать с расширениями IOMMU и целостности потока управления (CFI) на оборудовании RISC-V. Эти усовершенствования подчёркивают неизменную приверженность QEMU архитектуре RISC-V по мере роста её популярности в отрасли.
В дополнение к x86 дебютирует новый тип машины под названием «nitro-enclave», который позволяет эмулировать среды AWS Nitro Enclave и поддерживает загрузку из файлов EIF (формат образа анклава). Это еще один шаг вперед в удовлетворении потребностей пользователей, ориентированных на облачные технологии, которым нужны безопасные изолированные среды выполнения.
Кроме того, поддержка KVM в QEMU теперь включает инструкции AVX10, которые можно настроить различными способами (например, avx10-128, avx10-256 и так далее) в зависимости от требований пользователя и возможностей процессора хоста.
В области эмуляции устройств и интерфейсных функций QEMU 9.2 расширяет virtio-gpu с помощью venus-инкапсуляции для Vulkan, потенциально повышая производительность графики в специализированных сценариях использования. В то же время virtio-mem теперь поддерживает приостановку/возобновление работы на x86-64, что обеспечивает более динамичное и гибкое распределение памяти.
Что касается разработки и процесса, то в QEMU 9.2 добавлена экспериментальная поддержка Rust для моделей устройств. Хотя использование моделей устройств на основе Rust пока не рекомендуется для производственных целей, включить модели устройств на основе Rust так же просто, как настроить QEMU с помощью –enable-rust (при условии, что хостовая система соответствует требуемым версиям компилятора и bindgen Rust).
Стоит отметить, что существуют исключения из политики платформы, и некоторые дистрибутивы могут столкнуться с трудностями при создании QEMU с поддержкой Rust. Тем не менее, включение Rust знаменует собой поворотный момент в методах разработки проекта и, возможно, повлияет на то, как будут реализованы будущие функции QEMU.
Наконец, для корректной сборки и работы QEMU теперь требуется Meson версии 1.5.0 или более поздней, а новый тип машины nitro-enclave требует наличия libcbor. Кроме того, для функционального тестирования теперь включён модуль pycotap Python, что отражает постепенный отказ QEMU от старых фреймворков, таких как Avocado, в пользу более современных и удобных в обслуживании решений.
Новую версию можно скачать с официальной страницы загрузки QEMU, где пользователи могут найти архив. Для тех, кто интересуется подробностями, посетите страницу изменений, где представлен полный список изменений.