Представен е релиз проект QEMU 9.2. Като емулатор, QEMU позволява стартирането на програми, събрани за една хардуерна платформа, на система с напълно различна архитектура, например, да изпълнява приложение за ARM на x86-съвместим компютър. В режим на виртуализация, производителността на изпълнението на кода в изолирана среда е близка до тази на хардуерната система, благодарение на директното изпълнение на инструкциите на CPU и ангажиране на хипервизора Xen или модула KVM в Linux, или модула NVMM в NetBSD.
Първоначално проектът е създаден от Фабрис Беллар (Fabrice Bellard) с цел да предостави възможност за стартиране на събрани за платформата x86 изпълними файлове Linux на архитектури, различни от x86. През годините на развитие е добавена поддръжка на пълна емулация за 14 хардуерни архитектури, като броят на емулираните хардуерни устройства надвишава 400. При подготовката на версия 9.2 са направени над 1700 изменения от 209 разработчици.
Ключови подобрения, добавени в QEMU 9.2:
- Добавена е експериментална поддръжка за създаване на модели на устройства, написани на езика Rust. При компилирането на QEMU с поддръжка на Rust, по подразбиране е задействана алтернативна реализация на драйвера PL011 UART, написана на Rust, но все още не се препоръчва за широко използване.
В момента, по подразбиране, поддръжката на Rust в QEMU е изключена и се активира при компилиране чрез указване на опцията „—enable-rust“ при стартиране на конфигурационния скрипт. За компилиране с Rust са необходими минимум версии rustc 1.63.0 и bindgen 0.60.0 (например, в Debian 12 ще трябва да инсталирате отделно по-нова версия на Rust). В бъдеще компилаторът Rust и генераторът на привръзки bindgen се планира да бъдат добавени в задължителните изисквания за компилиране.
От плановете, свързани с популяризацията на Rust в QEMU, можем да отбележим довеждането на работещо състояние на драйвера HPET (High Precision Event Timer) и драйвера за блокови устройства, написани на Rust, продължаването на развитието на обвивки за използване на Rust в различни компоненти на QEMU (например, в драйвери за блокови устройства, таймери и GPIO), пренаписването на критични за сигурността системи на Rust, като virtio.
- В устройството VirtIO-GPU, осигуряващо работа на виртуален GPU, е добавена поддръжка за 3D-ускорение чрез графичния API Vulkan, реализирана чрез включения в Mesa Vulkan драйвер Venus, който позволява на гостуващата система да използва виртуален GPU за 3D рендериране без директен достъп до физическия GPU. За работа е необходима библиотеката virglrenderer на хост системата и Mesa драйвер Venus на гостуващата система. Налична е инструкция за настройка на поддръжка на Vulkan в QEMU.
- В инструмента за миграция на гостуващи системи е добавена поддръжка за ускорение на операциите по компресия на едновременно предавани потоци данни чрез библиотеката QATzip, която използва вграденото в Intel процесори ускорение QAT (QuickAssist Technology), предлагайки средства за ускорение на изчисления, свързани с компресия и криптиране.
- В криптографския бекенд на базата на GLib е добавена поддръжка за хеш алгоритъм SHA-384.
- В емулятора на архитектурата ARM е добавена поддръжка за процесорни разширения FEAT_EBF16 и FEAT_CMOW, както и разширения за осигуряване на сигурност, използвани на платките xilinx-zynq-a9. При използване на компонента HVF, който активира инструмента Hypervisor.framework за ускорение на изпълнението на гостуващите системи на ARM компютри Mac, е осигурена поддръжка за над 64 GB памет. За емулираните системи sbsa-ref и virt е добавена поддръжка за двустепенно превеждане на адреси в SMMU (System Memory Management Unit). Поддръжката на остарели типове емулирано оборудване akita, borzoi, cheetah, connex, mainstone, n800, n810, spitz, terrier, tosa, verdex и z2 е прекратена.
- В емулятора на архитектурата x86 е добавена поддръжка за нов тип хардуерна конфигурация - nitro-enclave, емулираща AWS Nitro Enclave среда и способна да зарежда системни образи във формат Enclave Image Format.
- В емулятора на архитектурата x86 за хипервизора KVM е реализирана възможността за включване на поддръжка на набор от инструкции AVX10, както и специфични версии на AVX10 - avx10-128, avx10-256 и avx10-512.
- В емулятора на архитектурата RISC-V е добавена поддръжка за разширения на набор от команди Svvptc, Bitmanip (Битова манипулация) и CFI (Целостта на потока на контрол), използвани на платките OpenTitan. В типа на емулираните системи „virt“ е добавена поддръжка за IOMMU. Повишена е производителността на инструкциите ld и st.
- В емулятора на архитектурата HPPA, фърмуерът SeaBIOS-hppa е обновен до версия 17.
- В емулатор на архитектура s390x е добавена възможност за стартиране от други устройства, ако не е успяло да се зареди от посоченото устройство.
Източник: opennet.ru
