ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ эмулятор QEMU 9.2.0 с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Rust ΠΈ Vulkan

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ Ρ€Π΅Π»ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° QEMU 9.2. Π’ качСствС эмулятора QEMU позволяСт Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΡΠΎΠ±Ρ€Π°Π½Π½ΡƒΡŽ для ΠΎΠ΄Π½ΠΎΠΉ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π° систСмС с ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΈΠ½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для ARM Π½Π° x86-совмСстимом ПК. Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² QEMU ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ выполнСния ΠΊΠΎΠ΄Π° Π² ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Π±Π»ΠΈΠ·ΠΊΠ° ΠΊ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ систСмС Π·Π° счёт прямого выполнСния инструкций Π½Π° 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» ΠΏΡ€ΠΈ запускС скрипта configure. Для сборки с 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 Π“Π‘ памяти. Для эмулируСмых систСм 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 (Bit-Manipulation) ΠΈ CFI (Control Flow Integrity), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π½Π° ΠΏΠ»Π°Ρ‚Π°Ρ… OpenTitan. Π’ Ρ‚ΠΈΠΏ эмулируСмых систСм «virt» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° IOMMU. ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ инструкций ld ΠΈ st.
  • Π’ эмуляторС Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ HPPA ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ° SeaBIOS-hppa ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π° Π΄ΠΎ вСрсии 17.
  • Π’ эмулятор Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ s390x Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΡ… устройств, Ссли Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ с ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ устройства.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru