Выпуск эмулятара QEMU 6.0

Прадстаўлены рэліз праекта QEMU 6.0. У якасці эмулятара QEMU дазваляе запусціць праграму, сабраную для адной апаратнай платформы, на сістэме з зусім іншай архітэктурай, напрыклад, выканаць прыкладанне для ARM на x86-сумяшчальным ПК. У рэжыме віртуалізацыі ў QEMU прадукцыйнасць выканання кода ў ізаляваным асяроддзі блізкая да апаратнай сістэмы за кошт прамога выканання інструкцый на CPU і задзейнічанні гіпервізара Xen ці модуля KVM.

Першапачаткова праект быў створаны Фабрысам Беларам (Fabrice Bellard) з мэтай забеспячэння магчымасці запуску сабраных для платформы x86 выкананых файлаў Linux на архітэктурах, адрозных ад x86. За гады распрацоўкі была дададзена падтрымка поўнай эмуляцыі для 14 апаратных архітэктур, колькасць эмуляваных апаратных прылад перавысіла 400. Пры падрыхтоўцы версіі 6.0 унесена больш за 3300 змяненняў ад 268 распрацоўшчыкаў.

Ключавыя паляпшэнні, дададзеныя ў QEMU 6.0:

  • Эмулятар кантролераў NVMe прыведзены да адпаведнасці са спецыфікацыяй NVMe 1.4 і забяспечаны эксперыментальнай падтрымкай занаваных прастор імёнаў, multipath I/O і скразнога шыфравання дадзеных на назапашвальніку.
  • Дададзеныя эксперыментальныя опцыі "-machine x-remote" і "-device x-pci-proxy-dev" для вынасу эмуляцыі прылад у вонкавыя працэсы. У дадзеным рэжыме пакуль падтрымліваецца толькі эмуляцыя SCSI-адаптара lsi53c895.
  • Дададзена эксперыментальная падтрымка стварэння снапшотаў змесціва АЗП.
  • Дададзены FUSE-модуль для экспарту блокавых прылад, які дазваляе прымантаваць зрэз стану любой блокавай прылады, выкарыстоўванага ў гасцёўні сістэме. Экспарт ажыццяўляецца праз QMP-каманду block-export-add або праз опцыю "-export" ва ўтыліце qemu-storage-daemon.
  • У эмулятар ARM дададзеная падтрымка архітэктуры ARMv8.1-M 'Helium' і працэсараў Cortex-M55, а таксама пашыраных інструкцый ARMv8.4 TTST, SEL2 і DIT. Дададзена падтрымка ARM-плат mps3-an524 і mps3-an547, а таксама. Для поплаткаў xlnx-zynqmp, xlnx-versal, sbsa-ref, npcm7xx і sabrelite рэалізавана дадатковая эмуляцыя прылад.
  • Для ARM у рэжымах эмуляцыі на ўзроўні сістэмы і карыстацкага асяроддзя рэалізавана падтрымка пашырэння ARMv8.5 MTE (MemTag, Memory Tagging Extension), які дазваляе прывязаць тэгі да кожнай аперацыі вылучэння памяці і арганізаваць пры доступе да памяці праверку паказальніка, які павінен быць злучаны з карэктным тэгам . Пашырэнне можа ўжывацца для блакавання эксплуатацыі ўразлівасцяў, выкліканых зваротам да ўжо вызваленых блокаў памяці, перапаўненнямі буфера, зваротамі да ініцыялізацыі і выкарыстаннем па-за бягучым кантэкстам.
  • У эмулятары архітэктуры 68k дададзеная падтрымка новага тыпу эмуляваных машын "virt", выкарыстоўвалых для аптымізацыі прадукцыйнасці прылады virtio.
  • У эмулятары архітэктуры x86 дададзеная магчымасць ужывання тэхналогіі AMD SEV-ES (Secure Encrypted Virtualization) для шыфравання рэгістраў працэсара, выкарыстоўваных у гасцявой сістэме, што робіць змесціва рэгістраў недаступным для хост-акружэнні, калі гасцёўня сістэма відавочна не падасць да іх доступ.
  • У класічным генератары кода TCG (Tiny Code Generator) пры эмуляцыі сістэм x86 рэалізавана падтрымка механізму PKS (Protection Keys Supervisor), які можна ўжываць для абароны доступу да прывілеяваных старонак памяці.
  • У эмулятары архітэктуры MIPS дададзены новы тып эмуляваных машын "virt" c падтрымкай кітайскіх працэсараў Loongson-3.
  • У эмулятары архітэктуры PowerPC для эмуляваных машын "powernv" дададзеная падтрымка вонкавых BMC-кантролераў. Для эмуляваных машын pseries забяспечана інфармаванне аб збоях пры спробе гарачага вымання памяці і CPU.
  • Дададзена падтрымка эмуляцыі працэсараў Qualcomm Hexagon c DSP.
  • У класічным генератары кода TCG (Tiny Code Generator) рэалізавана падтрымка хост-акружэнняў macOS на сістэмах з новым ARM-чыпам Apple M1.
  • У эмулятары архітэктуры RISC-V для поплаткаў Microchip PolarFire рэалізаваная падтрымка QSPI NOR flash.
  • У эмулятары Tricore з'явілася падтрымка новай мадэлі поплаткаў TriBoard, якая эмулюе SoC Infineon TC27x.
  • У эмулятары ACPI прадстаўлена магчымасць прызначэння сеткавым адаптарам у гасцявых сістэмах імёнаў, незалежных ад парадку падлучэння да шыны PCI.
  • У virtiofs дададзена падтрымка опцыі FUSE_KILLPRIV_V2 для павышэння прадукцыйнасці гасцявых сістэм.
  • У VNC дададзеная падтрымка празрыстасці курсора і падтрымка маштабавання дазволу экрана ў virtio-vga, якая адштурхваецца ад памеру акна.
  • У QMP (QEMU Machine Protocol) дададзеная падтрымка асінхроннага раўналежнага доступу пры выкананні задач рэзервовага капіявання.
  • У эмулятары USB дададзена магчымасць захавання трафіку, які ўтвараецца пры працы з USB-прыладамі, у асобны pcap-файл для наступнага інспектавання ў Wireshark.
  • Дададзены новыя QMP-каманды load-snapshot, save-snapshot і delete-snapshot для кіравання снапшотамі qcow2.
  • У virtiofs ліквідаваны ўразлівасці CVE-2020-35517 і CVE-2021-20263. Першая праблема дазваляе атрымаць доступ да хост-акружэнні з гасцёўні сістэмы праз стварэнне прывілеяваным карыстачом у гасцявой сістэме адмысловага файла прылад у каталогу, сумесна выкарыстоўваным c хост-акружэннем. Другая праблема выклікана памылкай пры апрацоўцы пашыраных атрыбутаў у опцыі 'xattrmap' і можа прывесці да ігнаравання скіду правоў на запіс і павышэнню прывілеяў унутры гасцявой сістэмы.

Крыніца: opennet.ru

Дадаць каментар