QEMU 10.1 пристига с подобрена сигурност, миграция и разширена поддръжка.

  • Поверителна поддръжка за гости: TDX/SEV-SNP, IGVM и guest_memfd във VFIO
  • По-бърза миграция: multifd + postcopy и RDMA през IPv6
  • Актуализирани архитектури: нови ARM функции и RISC-V разширения
  • Практически подобрения: GUI/Audio, NBD, QMP и PCI hotplug чрез ACPI на ARM 'virt'

QEMU 10.1

QEMU 10.1 вече е налична и идва с редица промени, които са важни както за разработчиците, така и за тези, които внедряват виртуални машини в голям мащаб. Сред най-забележителните са подобренията в сигурността, миграциите в реално време, поддръжката на архитектурата и подобренията в устройствата , така че си струва да се разгледа по-отблизо.

Преди да се заемем с работата, ето един момент, за да избегнем объркване: QEMU използва номериране, базирано на времето. Това означава, че колкото по-висок е номерът на версията, толкова по-значими са промените, но не означава автоматично, че това е така. Политиката на проекта позволява въвеждането на несъвместими промени след период на отхвърляне с предупреждения в поне две предишни версии , така че не приемайте, че скокът към голяма версия е синоним на революция.

QEMU 10.1 Наличност, контекст и философия

Проектът обяви версия 10.1.0 на 26 август 2025 г., с над 2700 коммита, подписани от 226 автори. Можете да изтеглите tarball-а от официалния уебсайт и да прегледате пълния регистър на промените за всички подробности . Както винаги, огромни благодарности на всички, които допринасят с код, тестване, CI/CD, документация и доклади за грешки.

В съответствие с философията на QEMU, има няколко споменавания на премахнати функции и остарели опции. Ако разчитате на нещо по-старо, проверете раздела „Премахнати функции“ и главата „Оставени функции“ в Ръководството за потребителя на системната емулация , където също се препоръчват заместители.

Акценти с един поглед

За да ви заинтригуваме, краткото резюме на версия 10.1 обхваща сигурността, производителността и разширеното управление. Има първоначална VFIO поддръжка за поверителни гости, мощни подобрения в миграцията и нови възможности за гост агенти.

  • VFIO и поверителностПървоначална поддръжка за достъп/картографиране на чувствителна памет на гост при използване на guest_memfd, активиране на преминаване през SEV-SNP/TDX.
  • Миграция на живоmultifd ускорява оптимизациите след копиране, преди копиране и поддръжката на RDMA през IPv6.
  • Гост агентнова команда „guest-get-load“ за заявка за зареждане в Windows.
  • АрхитектуритеНови ARM функции (FEAT_SME2, ​​​​SME2p1, SVE2p1 и други), разширена поддръжка на RISC-V и KVM интеграция за TDX на x86.

Архитектурите и машините: какво точно се променя

QEMU 10.1 усъвършенства и разширява емулацията и виртуализацията в множество семейства процесори. От ARM до RISC-V и x86, включително LoongArch, HPPA и Microblaze, има специфични подобрения, които си струва да бъдат разгледани подробно.

ARM

В ARM, QEMU 10.1 добавя набор от архитектурни функции на процесора: FEAT_SME2, ​​​​FEAT_SME2p1, FEAT_SME_B16B16, FEAT_SME_F16F16, FEAT_SVE_B16B16 и FEAT_SVE2p1 , засилвайки поддръжката за векторна и матрична обработка.

Що се отнася до хардуера, има няколко значителни нови допълнения. Добавена е платката „max78000fthr“ (Analog Devices max78000 Cortex-M4) , заедно с нов хардуер с множество SoC „ast2700fc“, „catalina-bmc“ (Meta) и „gb200-bmc“ (NVIDIA); а към AST2700 EVB е добавена и поддръжка на фърмуер.

Популярната платка „virt“ също получава ъпгрейд: тя вече поддържа CXL, PCI hotplug чрез ACPI и, под най-новото ядро ​​на хоста, вложена виртуализация с KVM чрез активиране на „virtualization=on“ . Забележка: моделите „highbank“ и „midway“ са остарели и е обявено отхвърлянето на „ast2700a0-evb“.

RISC-V

RISC-V екосистемата получава множество актуализации относно ISA, машини и корекции на грешки. Добавена е поддръжка за разширението atomic fetch (Ziccif), включен е „Svrsw60t59b“ и са усъвършенствани граничните случаи на векторни инструкции.

  • ISA и разширенияПсевдоинструкция „tail“ за чакащи повиквания, премахване на свойства на процесора с главна буква „Z“, max_satp_mode от хоста, задаване и разширяване на броя на PMP регионите (до 64), опция за задаване на „vill“ за резервирано използване на vsetvli.
  • МашиниПоддръжка на RIMT във ACPI „virt“, подобрения в персонализирането на Microchip PolarFire SoC и нов процесор и платформа KunminghuАктуализирайте версиите на FADT и MADT в ACPI таблиците.
  • Корекции и разни други: не се позволява на PMP RLB да прескача привилегии, корекции на CSR в KVM, sstc, ред на zama16b, обработка на профили, корекции на изключения/маскиране (MEPC/SEPC за IALIGN), корекция на обгръщане на PMP 0 диапазони, корекции на безкраен цикъл на транслация от big endian и корекция на неуспех при миграция, когато AIA е настроен на aplic-imsic.

Освен това се добавят липсващи „именувани функции“, правят се PPN корекции в дневника на отговорите за превод и се избягва безкрайно забавяне при асинхронно предаване , което подобрява стабилността в екстремни сценарии.

x86 (KVM и TCG)

В x86 има две тънкости, които администраторите ще оценят. Специфичните за производителя CPUID битове се пропускат, когато производителят на гост процесора не ги дефинира , предотвратявайки объркване и изкуствено профилиране.

От страна на KVM е добавена поддръжка за TDX (изисква Linux 6.16 или по-нова версия) и е възможно да се стартират TDX или SEV-SNP машини от IGVM файл, което е важна стъпка за сигурни потоци на осигуряване.

В TCG транслатора се поддържа TSS trap бит , което подобрява прецизността на определени пътища на изпълнение без хардуерно ускорение.

LongArch

LoongArch е усъвършенстван с поддръжка на irqchip в ядрото , коригира big endianness в таблицата MCFG, разрешава неуспешни стартирания, когато 'smp cpu' < 'smp maxcpus' под KVM, и подобрява детайлите на инструкциите, като VLDI. KVM гостът също е информиран и е добавена проверка за 'fcond'.

Microblaze

Тези, които работят с Microblaze, имат по-голям контрол: машината 'petalogix_s3adsp1800' ви позволява да превключвате между endianness и endian порядъка чрез свойството 'endianness' . Big-endian вариантите на ml605 и xlnx-zynqmp-pmu се премахват и тези модели се конвертират в little-endian в qemu-system-microblaze. Освен това, двоичният файл 'qemu-system-microblazeel' се отхвърля и ще бъде премахнат в бъдеще.

MIPS

Има едно много специфично, но много ценено решение: то решава BSOD при стартиране на Windows NT MIPS на машината Magnum (проблем #2464) , полезно за тези, които изследват или поддържат старинен софтуер.

ХПА

Емулацията на изключения с плаваща запетая (FPE) е подобрена както в потребителски, така и в системен режим, което засилва точността на тази ветеранска архитектура.

Други архитектури

В допълнение към гореспоменатите раздели, има глави за 68k, Alpha, AVR, Hexagon, OpenRISC, PowerPC, Renesas RX/SH, s390x, SPARC, Tricore и Xtensa. Въпреки че във версия 10.1 не са изброени основни актуализации за всички тях, поддръжката и настройките продължават , като в последните версии се обръща специално внимание на s390x поради новите дефиниции на процесора и подобренията във virtio-mem.

Устройства, входно/изходни устройства и подсистеми

QEMU 10.1 носи значителни подобрения във VFIO, мрежите, графиката, звука и I/O. Тези промени пряко влияят върху производителността, съвместимостта и ежедневните операции.

VFIO

Въведена е първоначална поддръжка за бекендовете на паметта guest-memfd на поверителни гост системи (CoCo) , актуализирана е документацията за IGD passthrough и е коригиран L2 срив на машини от pseries.

OpRegion също е автоматично активиран за IGD passthrough , неговото откриване е подобрено и QEMU вече може да докладва промени в конфигурацията на vfio-ap.

Освен това са включени vfio-user клиент , поддръжка за актуализация (CPR) , VFIO миграция с multifd на aarch64 и свойство за прилагане на PCI клас код на устройството . Накрая, официално е обявена VFIO поддръжка на TDX и SNP виртуални машини.

Мрежи и съхранение

На мрежовите устройства има нов бекенд, наречен „passt“ , предназначен за сценарии на интеграция и пясъчник. Освен това, когато се използва NBD през Unix сокети, QEMU се опитва да договори по-големи буфери, за да подобри драстично производителността.

PCI/PCIe и virtio

ARM платката „virt“ добавя PCI hotplug чрез ACPI и acpi-index за PCI устройства, като активира глобалната опция „-global acpi-ged.acpi-pci-hotplug-with-bridge-support=on“.

Във виртуализирана графика, virtio-gpu ви позволява да инжектирате EDID името , което е полезно за тестване на съвместимост и автоматизация.

9pfs и други бекендове

За 9pfs алгоритъмът за възстановяване на файловия дескриптор, когато е близо до системния лимит, е коригиран , както и няколко случая на използване след прекъсване на връзката (операции след изтриване на файла), които биха могли да причинят фини грешки.

Звук

Аудио подсистемата настройва настройките по подразбиране и съвместимостта: в ALSA „try-poll“ вече е false по подразбиране и са добавени конвертори за endianness за семпли с плаваща запетая.

Графичен интерфейс и агенти

В графичния потребителски интерфейс има много за разопаковане: spice/dbus поддържа многопластов dmabuf , а gl=on може да се активира и с отдалечени/нелокални клиенти.

Агентът vdagent добавя поддръжка за миграция , GTK подобрява обработката на мащаба и добавя опции „запазване на съотношението на страните“ и „мащабиране“.

Във VNC проблемите с кодирането при актуализации са коригирани, когато клиентът и сървърът се различават по endianness, както при нестроги кодировки, така и при 8/16 bpp; освен това е коригирано паузирането на екрана след миграция.

Входно/изходни данни и отстраняване на грешки

На I/O ниво, много TCP backend-ове вече ви позволяват да конфигурирате TCP keepalive параметри , което е много полезно в среди с агресивни защитни стени или NAT.

GDBstub добавя поддръжка за qGDBServerVersion, използвана от клиенти, които не са GDB, подобрявайки оперативната съвместимост.

Плъгините на TCG получават тласък: плъгинът „ips“ поддържа конфигурируемо мащабиране и инструкции на квант ; има и нови функции за запис на логове , запис на виртуални адреси (с повишено внимание) и четене/запис на хардуерни адреси . Включен е тестов плъгин „patcher“, а sparc64 и алфа версията предоставят подробности за логовете на плъгините.

Миграция на живо и блокови задачи

Версия 10.1 затяга гайките по отношение на мобилността на виртуалните машини. RDMA миграцията вече поддържа IPv6 , а посткопирането е оптимизирано за последователни достъпи (типични случаи като стрийминг на видео).

Чудесна новина: multifd и postcopy вече могат да бъдат активирани едновременно (multifd е активен по време на предварително копиране). Миграцията на VFIO с multifd, когато TCP zerocopy е активен, също е коригирана, а прозорецът за престой по време на предварително копиране е намален чрез избягване на ненужни команди LOG_CLEAR.

В QMP, blockdev-mirror въвежда булевия флаг „target-is-zero“, за да оптимизира огледалата към дестинации, които вече показват нула; освен това, дори без този флаг, се извършва по-малко работа върху изходните блокове, които показват нула. blockdev-backup добавя опцията „on-cbw-error“, за да определи поведението в случай на I/O грешки по време на операции „копиране преди запис“.

В блоковите задачи, неактивното записване на блокове е оптимизирано за поддържане на резервно копие; а огледалните/резервните копия наследяват предишните подобрения за нулеви блокове и нови опции.

Гост агент

Гост агентът QEMU се разраства на Windows: „guest-get-load“ е имплементиран за запитване за зареждане на гост системата.

Windows също така добавя повторен опит при отмяна на регистрацията на VSS доставчика и разпространява грешката при инсталиране на VSS доставчика към инсталатора на MSI, което улеснява диагностиката.

Потребителски режим и TCG

В емулацията в потребителски режим има малки актуализации на документацията, изясняващи ограниченията; те засягат областите signal, runtime и binfmt_misc, както и целите alpha, arm/aarch64, HPPA, LoongArch, PowerPC, s390 и x86.

В TCG продължава работата по поддръжката на LoongArch и RISC-V , както и на Record/Replay , макар и без никакви промени в заглавието, освен гореспоменатия TSS cheat.

Компилация, зависимости и платформи

По време на процеса на компилация, документацията се актуализира с b4 примери и всички edk2 подмодули вече са включени в tarball-а на фърмуера.

Що се отнася до Rust, минималната поддържана версия вече е 1.77 . В Debian Bookworm той е наличен в пакета rustc-web, с изключение на mips64el (който изисква Debian Trixie или по-нова версия). В Ubuntu 22.04 и 24.04 пакетът rust-1.77 се използва чрез задаване на променливите RUSTC/RUSTDOC на /usr/bin/rustc-1.77 и /usr/bin/rustdoc-1.77.

Поддръжката на Rust остава експериментална и нестабилна и не се препоръчва за нищо друго освен за разработка. С активиран Rust, QEMU изисква Meson 1.8.1 . Включен е скрипт („scripts/get-wraps-from-cargo-registry.py“) за попълване на „subprojects/“ от локален регистър (напр. /usr/share/cargo/registry).

На хост платформите Debian Bullseye вече не се поддържа и Ninja 1.9 става изискване (той вече беше наличен на всички системи, поддържани от QEMU 10.0). Включена е и експериментална поддръжка за компилиране в WASM с Emscripten.

В тази версия няма конкретни заглавия за Windows, освен вече споменатото за гост-агента. Пътната карта за 10.1 е на страницата „Планиране/10.1“, ако искате да следите подробностите.

Ако сте чакали подходящия момент за надграждане, комбинацията от поддръжка за поверителни гости (TDX/SEV-SNP с IGVM и guest_memfd), по-бързи миграции (multifd + postcopy, RDMA IPv6) и подобрения в различните архитектури и подсистеми прави QEMU 10.1 много добре завършено издание. С подобрена практическа производителност, по-добри инструменти за управление и постоянно развиваща се технологична база, надграждането си заслужава.

QEMU 10.0
Свързана статия:
QEMU 10.0 пристига с подобрения в различни архитектури и поддръжка за Apple.

Добавяне като предпочитан източник в Google