
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 много добре завършено издание. С подобрена практическа производителност, по-добри инструменти за управление и постоянно развиваща се технологична база, надграждането си заслужава.
