LINUX.ORG.RU

QEMU 6.0

 


4

1

Вышла новая версия проекта QEMU 6.0. QEMU позволяет запускать программы, собранные для одной архитектуры на другой, например, выполнить приложение для ARM на обычном x86 или х86_64 ПК. В режиме виртуализации в QEMU производительность близка к аппаратной системе за счёт прямого выполнения инструкций на CPU и задействования Xen или модуля KVM.

Изначально проект был создан для запуска x86 Linux ПО на других архитектурах. За годы разработки была добавлена поддержка полной эмуляции для 14 различных аппаратных архитектур, число эмулируемых аппаратных устройств превысило 400. При подготовке версии 6.0 внесено более 3300 изменений от 268 разработчиков.

Новое в QEMU 6.0:

  • В virtiofs добавлена поддержка опции FUSE_KILLPRIV_V2 повышающая производительность гостевых систем.

  • В эмуляторе USB добавили возможность сохранения трафика, образующегося при работе с USB-устройствами, в отдельный pcap-файл,чтобы потом его можно было инспектировать в Wireshark.

  • Добавлены экспериментальные опции «-machine x-remote» и «-device x-pci-proxy-dev» для выноса эмуляции устройств во внешние процессы. В данном режиме пока поддерживается только эмуляция SCSI-адаптера lsi53c895.

  • В эмулятор 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 реализована дополнительная эмуляция устройств.

  • В эмуляторе архитектуры PowerPC для эмулируемых машин «powernv» добавлена поддержка внешних BMC-контроллеров. Для эмулируемых машин pseries обеспечено информирование о сбоях при попытке горячего извлечения памяти и CPU.

  • В эмуляторе архитектуры MIPS добавлен новый тип эмулируемых машин «virt» c поддержкой китайских процессоров Loongson-3.

  • В классическом генераторе кода TCG (Tiny Code Generator) при эмуляции систем x86 реализована поддержка механизма PKS (Protection Keys Supervisor), который можно применять для защиты доступа к привилегированным страницам памяти.

  • В эмуляторе Tricore появилась поддержка новой модели плат TriBoard, эмулирующей SoC Infineon TC27x.

  • В эмуляторе архитектуры RISC-V для плат Microchip PolarFire реализована поддержка QSPI NOR flash.

  • Добавлена поддержка эмуляции процессоров Qualcomm Hexagon c DSP.

  • Добавлен FUSE-модуль для экспорта блочных устройств, позволяющий примонтировать срез состояния любого блочного устройства, используемого в гостевой системе. Экспорт осуществляется через QMP-команду block-export-add или через опцию «–export» в утилите qemu-storage-daemon.

  • В эмуляторе архитектуры 68k добавлена поддержка нового типа эмулируемых машин «virt», использующих для оптимизации производительности устройства virtio.

  • В эмуляторе архитектуры x86 добавлена возможность применения технологии AMD SEV-ES (Secure Encrypted Virtualization) для шифрования регистров процессора, используемых в гостевой системе, что делает содержимое регистров недоступным для хост-окружения, если гостевая система явно не предоставит к ним доступ.

  • Добавлена экспериментальная поддержка создания снапшотов содержимого ОЗУ.

  • Добавлены новые QMP-команды load-snapshot, save-snapshot и delete-snapshot для управления снапшотами qcow2.

  • В virtiofs устранены уязвимости CVE-2020-35517 и CVE-2021-20263. Первая проблема позволяет получить доступ к хост-окружению из гостевой системы через создание привилегированным пользователем в гостевой системе специального файла устройств в каталоге, совместно используемом c хост-окружением. Вторая проблема вызвана ошибкой при обработке расширенных атрибутов в опции ‘xattrmap’ и может привести к игнорированию сброса прав на запись и повышению привилегий внутри гостевой системы.

  • Эмулятор контроллеров NVMe приведён к соответствию со спецификацией NVMe 1.4 и снабжён экспериментальной поддержкой зонированных пространств имён, multipath I/O и сквозного шифрования данных на накопителе.

  • В VNC добавлена поддержка прозрачности курсора и поддержка масштабирования разрешения экрана в virtio-vga, отталкивающаяся от размера окна.

  • В QMP (QEMU Machine Protocol) добавлена поддержка асинхронного параллельного доступа при выполнении задач резервного копирования.

  • В эмуляторе ACPI предоставлена возможность назначения сетевым адаптерам в гостевых системах имён, независящих от порядка подключения к шине PCI.

  • Для ARM в режимах эмуляции на уровне системы и пользовательского окружения реализована поддержка расширения ARMv8.5 MTE (MemTag, Memory Tagging Extension), позволяющего привязать теги к каждой операции выделения памяти и организовать при доступе к памяти проверку указателя, который должен быть связан с корректным тегом. Расширение может применяться для блокирования эксплуатации уязвимостей, вызванных обращением к уже освобождённым блокам памяти, переполнениями буфера, обращениями до инициализации и использованием вне текущего контекста.

  • В классическом генераторе кода TCG (Tiny Code Generator) реализована поддержка хост-окружений macOS на системах с новым ARM-чипом Apple M1.

>>> Подробности



Проверено: Shaman007 ()

Какое DE красивое. А как сделать дополнительные кнопки в рамочке окна? Я когда-то мечтал о таком, а потом создатели линкусовых DE сделали это, только полностью отказавшись от рамочек (отрисовывая их на стороне приложения).

> Изначально проект был создан Фабрисом Белларом (Fabrice Bellard) с целью обеспечения возможности запуска собранных для платформы x86 исполняемых файлов Linux на архитектурах, отличных от x86.

Я первый раз встретил упоминание QEMU в статье Криса Касперски о x86_64. Когда архитектура была нова, а у него ещё не было этого процессора, он запустил QEMU и попробовал x86_64 на нём. Второй раз я встретил упоминание QEMU в ностальгическом видео на ютюбе, где автор вспоминал, как году в 2003 при помощи QEMU ломали винду, имитируя сервер активации Windows. Ну а третий раз я встретил QEMU в своей openSUSE 12.1, когда я узнал, что можно пробрасывать видеокарту в гостевую винду. В системе уже были программы для виртуализации, и я обнаружил, что виртуалка называется не Xen, а именно QEMU.

Здоровья проекту и успехов.

ZenitharChampion ★★★★★ ()
Последнее исправление: ZenitharChampion (всего исправлений: 1)

По поводу юзабельности: 20 лет прошло, а вменяемых шаблонов для разных ВМ не создано.

ГУЙ - везде такой, что кажется его шизиики в обострении писали.

теперь расскажите нам пожалуйста про юзабельность на фоне VB, VMW, HV,

Хах! Да, PCem - тоже хорош! Хоть и пишет его пара анонимусов джаст фор фан!

anonymous ()
Ответ на: комментарий от pihter

Чувак, моя хотелка - создать виртуалку, так, как я её себе поверхностно представляю! Да-да, я хочу виртуалку прямо сейчас, мышкой к пальцу, очень быстро. Мне нужна виртуалка!! Ты понимаешь, мне нужна виртуалка?

А ты мне предлагаешь нырнуть в гугель и вычитывать тонны египетских манускриптов от QEMU!Т.е. Мне нужна виртуалка для Windows9x, я знаю, что её нуна пентиум процессор и какой-ты чипсет из старых, это два клика в РСем и VB.

Ты мне предлагаешь скрипт писать? Мне виртуалка нужна была… а не скрипт.

anonymous ()
Ответ на: комментарий от anonymous

Чувак, моя хотелка - создать виртуалку мышкой к пальцу, очень быстро Без регистрации и смс

sudo apt install virt-manager -y && usermod -aG libvirt vasya-pupkin && systemctl restart gdm

Осилишь? Это так сложно для тебя? Миллионы людей используют qemu/kvm и довольны. Используют как гуй, так и либвирт. Осиль. Осиль скотина! Папочку монтируй через самбу.

anonymous ()
Ответ на: комментарий от hobbit

А чо у тебя за десктоп? А ну покажь?

Юмор в том, что Андроид х86 работает с QXL драйвером и есть сборка (***k49.iso) для работы с VMSvga.

Работало в VMware, не вижу проблем это загнать в virtmanager. Ускоренная графика была.

anonymous ()
Ответ на: комментарий от hobbit

Проще всего эмулятор от Android Studio, он как раз на QEMU, только там изкоробочно. Там ставится обычный образ с гуглосервисами через сам же эмулятор и все.

Можно его поставить и без Android Studio.

James_Holden ()
Ответ на: А чо у тебя за десктоп? А ну покажь? от anonymous

А чо у тебя за десктоп? А ну покажь?

Да запросто. Крутится всё это на Манжаро.

С виртуалками я дал слабину — остался на VirtualBox (хотя с новым процем можно было наконец-то переехать на kvm). Но это в первую очередь потому, что несколько виртуалок перетаскивал со старого компа.

Андроид х86

Так фишка в том, чтобы для обычного АРМового Андроида приложения запускать. Тут, как я понимаю, кроме QEMU надеяться особо не на что.

hobbit ★★★★★ ()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от hobbit

Я просто поставил Android x86 чисто для тестов в qemu. Ставится он в режиме «далее-далее-далее», самый геморрой для меня был - отключен включенный там по умолчанию отладочный сетевой порт adb - потому что авторизация там под это была не предусмотрена(по крайней мере на момент когда я тестировал, на реальном андроиде уже давно отпечатки клиентской машины предлагают сохранять). Оказалось что для этого нужно выключить отладку по USB(sick!), потому что отдельной крутилки именно в Android x86 под это не завезли.

P.S. Ого, они там не только чистый Android, они еще и LineageOS под x86 собирают. Отстал я от жизни...

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 2)
Ответ на: комментарий от anonymous

Вот тут ты маху дал, очень сильно.. :-(((

Это нужно было для эксперимента.

Ну и реально тихая она, это не отнимешь.

P.S. А кстати, что-нибудь можно найти в среднем ценовом сегменте между ней и майнерскими убердевайсами за конский ценник, на которые я даже смотреть не хочу?.. :)

hobbit ★★★★★ ()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от eve

Запускаю на кластере OpenNebula, поэтому строку формирует софт, готовьтесь к куче лишнего:

/usr/bin/qemu-system-x86_64 -name guest=one-359,debug-threads=on -S -object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-13-one-359/master-key.aes -machine pc-i440fx-5.1,accel=kvm,usb=off,dump-guest-core=off -cpu qemu64 -m 4096 -overcommit mem-lock=off -smp 4,sockets=4,cores=1,threads=1 -uuid 11324004-3677-4488-80ad-678880f97226 -no-user-config -nodefaults -chardev socket,id=charmonitor,fd=47,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -boot strict=on -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -device virtio-scsi-pci,id=scsi0,num_queues=4,bus=pci.0,addr=0x4 -device virtio-scsi-pci,id=scsi1,bus=pci.0,addr=0x5 -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x6 -device usb-hub,id=hub0,bus=usb.0,port=1 -blockdev {"driver":"rbd","pool":"onessd","image":"one-98-359-0","server":[{"host":"mon1.local","port":"6789"},{"host":"mon2.local","port":"6789"},{"host":"mon3.local","port":"6789"}],"user":"oneadmin","auth-client-required":["cephx","none"],"key-secret":"libvirt-1-storage-auth-secret0","node-name":"libvirt-1-storage","cache":{"direct":false,"no-flush":false},"auto-read-only":true,"discard":"unmap"} -blockdev {"node-name":"libvirt-1-format","read-only":false,"discard":"unmap","cache":{"direct":false,"no-flush":false},"driver":"raw","file":"libvirt-1-storage"} -device scsi-hd,bus=scsi0.0,channel=0,scsi-id=0,lun=0,device_id=drive-scsi0-0-0-0,drive=libvirt-1-format,id=scsi0-0-0-0,bootindex=1,write-cache=on -netdev tap,fds=49:50:51:52:53:54:55:57:58:56:59:61:60:63:64:65,id=hostnet0,vhost=on,vhostfds=62:66:67:68:69:70:71:72:73:74:75:76:77:78:79:80 -device virtio-net-pci,mq=on,vectors=34,netdev=hostnet0,id=net0,mac=02:00:a7:58:e3:81,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -chardev spicevmc,id=charchannel0,name=vdagent -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.spice.0 -device usb-tablet,id=input0,bus=usb.0,port=2 -vnc 0.0.0.0:359 -device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vram64_size_mb=0,vgamem_mb=16,max_outputs=1,bus=pci.0,addr=0x2 -chardev spicevmc,id=charredir0,name=usbredir -device usb-redir,chardev=charredir0,id=redir0,bus=usb.0,port=1.1 -chardev spicevmc,id=charredir1,name=usbredir -device usb-redir,chardev=charredir1,id=redir1,bus=usb.0,port=1.2 -chardev spicevmc,id=charredir2,name=usbredir -device usb-redir,chardev=charredir2,id=redir2,bus=usb.0,port=1.3 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x7 -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny -msg timestamp=on
Pinkbyte ★★★★★ ()
Ответ на: комментарий от eve

какая у вас командная строка qemu?

Я дополню Пинкбайта.

Непонятно на каком вы этапе.

Сначала поставьте пульсу если ещё не стоит (в Дебиане: pavucontrol pulseaudio).

qemu-system-x86_64 -machine accel=kvm -cpu host -m 2048 nic,macaddr=хх:хх:хх:хх:хх:хх -net user -drive file=andr.bin,format=raw -drive file=cm-x86-14.1-r5-k419.iso,media=cdrom -name andr -soundhw es1370 -monitor stdio

После инстола, запустите (Линеадж), подождите 4 мин (у меня оно виснет тут, бесконечно прокручивая лого). Убейте, перезапустите. Загрузится меньше чем за 1 мин.

Для интернета используйте встроенный эмулятор вайфая.

PS.

Там есть выбор ГУИ, Trebuchet (или как оно там называется, это как на настоящих девайсах), или другое, дружелюбное для мыши. Если быберете Trebuchet, то для чистого выключения надо дать команду в qemu консоли: system_powerdown (и ткнуть мышой на нужный пункт).

PS2.

Да, ещё процессор не должен быть очень уж древним. На АМД Athlon II не работало, на следующих, FX, ок.

the1 ()
Последнее исправление: the1 (всего исправлений: 2)
Ответ на: комментарий от hobbit

А кстати, что-нибудь можно найти в среднем ценовом сегменте между ней и майнерскими убердевайсами

А зачем? У меня несколько лет уже 1050Ti и хватает на всё. Теперь уже даже думаю вместо неё затычку какую вставить

morisRavel ()
Ответ на: комментарий от James_Holden

Проще всего эмулятор от Android Studio, он как раз на QEMU, только там изкоробочно

У меня были проблемы из-за того, что этот искоробочный эмулятор жёско завязан на pulseaudio, которого у меня нет, и в зависимостях, вроде как, он не прописан. Разноообразные флаги типа -audiodev, driver=none не помогали. С чистым QEMU всё идиальна

morisRavel ()
Ответ на: комментарий от James_Holden

Они блютус и не пользуются и пере направлением звука так что этим и не нужон этот сервер звука пулсе аудио ваш , головка встанет на место когда надо будет

anonymous ()
Ответ на: комментарий от hummer

Оно уже такое же юзабельное, как VirtualBox?

Они для разных задач. QEMU для эмуляции различных аппаратных платформ и процессорных архитектур. VirtualBox это виртуальная машина, по сути дела позволяет другую программную платформу запустить.

abondarev ()
Ответ на: комментарий от abondarev

О… а этот ответ я пропустил. Наконец-то кто-то некрасноглазящий.

Оно уже такое же юзабельное, как VirtualBox?

Они для разных задач. QEMU для эмуляции различных аппаратных платформ и процессорных архитектур. VirtualBox это виртуальная машина, по сути дела позволяет другую программную платформу запустить.

QEMU + KVM обычно преподносят как альтернативу VirtualBox.

$ dnf groupinfo virtualization

Group: Virtualization
 Description: These packages provide a graphical virtualization environment.
 Mandatory Packages:
   virt-install
 Default Packages:
   libvirt-daemon-config-network
   libvirt-daemon-kvm
   qemu-kvm
   virt-manager
   virt-viewer
 Optional Packages:
   libguestfs-tools
   python3-libguestfs
   virt-top

То, что QEMU может эмулировать ZX-Spectrum в данном случае неинтересно.

hummer ()
Ответ на: комментарий от hummer

Да, в принципе qemu можно использовать и для замены VirtualBox, но по юзабилити конечно этот вариант проигрывает уже готорому VirtualBox.

Под разными платформами и архитектурами я имел в виду вот это

qemu-system-aarch64       qemu-system-mips64        qemu-system-s390x
qemu-system-alpha         qemu-system-mips64el      qemu-system-sh4
qemu-system-arm           qemu-system-mipsel        qemu-system-sh4eb
qemu-system-cris          qemu-system-moxie         qemu-system-sparc
qemu-system-hppa          qemu-system-nios2         qemu-system-sparc64
qemu-system-i386          qemu-system-or1k          qemu-system-tricore
qemu-system-lm32          qemu-system-ppc           qemu-system-unicore32
qemu-system-m68k          qemu-system-ppc64         qemu-system-x86_64
qemu-system-microblaze    qemu-system-ppc64le       qemu-system-xtensa
qemu-system-microblazeel  qemu-system-riscv32       qemu-system-xtensaeb
qemu-system-mips          qemu-system-riscv64

Список qemu для разных архитектур у меня на хосте И список поддерживаемых платформ для варианта ARM

qemu-system-arm -M ?
Supported machines are:
akita                Sharp SL-C1000 (Akita) PDA (PXA270)
ast2500-evb          Aspeed AST2500 EVB (ARM1176)
ast2600-evb          Aspeed AST2600 EVB (Cortex A7)
borzoi               Sharp SL-C3100 (Borzoi) PDA (PXA270)
canon-a1100          Canon PowerShot A1100 IS
cheetah              Palm Tungsten|E aka. Cheetah PDA (OMAP310)
collie               Sharp SL-5500 (Collie) PDA (SA-1110)
connex               Gumstix Connex (PXA255)
cubieboard           cubietech cubieboard (Cortex-A8)
emcraft-sf2          SmartFusion2 SOM kit from Emcraft (M2S010)
highbank             Calxeda Highbank (ECX-1000)
imx25-pdk            ARM i.MX25 PDK board (ARM926)
integratorcp         ARM Integrator/CP (ARM926EJ-S)
kzm                  ARM KZM Emulation Baseboard (ARM1136)
lm3s6965evb          Stellaris LM3S6965EVB
lm3s811evb           Stellaris LM3S811EVB
mainstone            Mainstone II (PXA27x)
mcimx6ul-evk         Freescale i.MX6UL Evaluation Kit (Cortex A7)
mcimx7d-sabre        Freescale i.MX7 DUAL SABRE (Cortex A7)
microbit             BBC micro:bit
midway               Calxeda Midway (ECX-2000)
mps2-an385           ARM MPS2 with AN385 FPGA image for Cortex-M3
mps2-an505           ARM MPS2 with AN505 FPGA image for Cortex-M33
mps2-an511           ARM MPS2 with AN511 DesignStart FPGA image for Cortex-M3
mps2-an521           ARM MPS2 with AN521 FPGA image for dual Cortex-M33
musca-a              ARM Musca-A board (dual Cortex-M33)
musca-b1             ARM Musca-B1 board (dual Cortex-M33)
musicpal             Marvell 88w8618 / MusicPal (ARM926EJ-S)
n800                 Nokia N800 tablet aka. RX-34 (OMAP2420)
n810                 Nokia N810 tablet aka. RX-44 (OMAP2420)
netduino2            Netduino 2 Machine
none                 empty machine
nuri                 Samsung NURI board (Exynos4210)
palmetto-bmc         OpenPOWER Palmetto BMC (ARM926EJ-S)
raspi2               Raspberry Pi 2
realview-eb          ARM RealView Emulation Baseboard (ARM926EJ-S)
realview-eb-mpcore   ARM RealView Emulation Baseboard (ARM11MPCore)
realview-pb-a8       ARM RealView Platform Baseboard for Cortex-A8
realview-pbx-a9      ARM RealView Platform Baseboard Explore for Cortex-A9
romulus-bmc          OpenPOWER Romulus BMC (ARM1176)
sabrelite            Freescale i.MX6 Quad SABRE Lite Board (Cortex A9)
smdkc210             Samsung SMDKC210 board (Exynos4210)
spitz                Sharp SL-C3000 (Spitz) PDA (PXA270)
swift-bmc            OpenPOWER Swift BMC (ARM1176)
sx1                  Siemens SX1 (OMAP310) V2
sx1-v1               Siemens SX1 (OMAP310) V1
terrier              Sharp SL-C3200 (Terrier) PDA (PXA270)
tosa                 Sharp SL-6000 (Tosa) PDA (PXA255)
verdex               Gumstix Verdex (PXA270)
versatileab          ARM Versatile/AB (ARM926EJ-S)
versatilepb          ARM Versatile/PB (ARM926EJ-S)
vexpress-a15         ARM Versatile Express for Cortex-A15
vexpress-a9          ARM Versatile Express for Cortex-A9
virt-2.10            QEMU 2.10 ARM Virtual Machine
virt-2.11            QEMU 2.11 ARM Virtual Machine
virt-2.12            QEMU 2.12 ARM Virtual Machine
virt-2.6             QEMU 2.6 ARM Virtual Machine
virt-2.7             QEMU 2.7 ARM Virtual Machine
virt-2.8             QEMU 2.8 ARM Virtual Machine
virt-2.9             QEMU 2.9 ARM Virtual Machine
virt-3.0             QEMU 3.0 ARM Virtual Machine
virt-3.1             QEMU 3.1 ARM Virtual Machine
virt-4.0             QEMU 4.0 ARM Virtual Machine
virt-4.1             QEMU 4.1 ARM Virtual Machine
virt                 QEMU 4.2 ARM Virtual Machine (alias of virt-4.2)
virt-4.2             QEMU 4.2 ARM Virtual Machine
witherspoon-bmc      OpenPOWER Witherspoon BMC (ARM1176)
xilinx-zynq-a9       Xilinx Zynq Platform Baseboard for Cortex-A9
z2                   Zipit Z2 (PXA27x)

То есть конечно речь не только о ZX-spectrum

abondarev ()