LINUX.ORG.RU
ФорумAdmin

слайдшоу в virtmanager

 , , , ,


0

2

Использую qemu/virtmanager через spice, при работе в гуе гостевых систем вижу слайдшоу (окошки двигаются с задержкой, ютубчик не посмотреть). Уже кажется всё перепробовал и ниче не помогает.

В гостях стоит если что spice-vdagent, qemu-guest-agent.

В USE есть opengl и все пакеты собраны с ним. В основной системе вейланд и nvidia-driver.

А, и еще, когда в Video Virtio выбираю 3D acceleration то получаю вот такое:

Error starting domain: internal error: QEMU unexpectedly closed the monitor (vm='kali'): 2025-05-07T08:07:09.793537Z qemu-system-x86_64: -device {"driver":"virtio-vga-gl","id":"video0","max_outputs":1,"bus":"pcie.0","addr":"0x1"}: The display backend does not have OpenGL support enabled
It can be enabled with '-display BACKEND,gl=on' where BACKEND is the name of the display backend to use.

Traceback (most recent call last):
  File "/usr/share/virt-manager/virtManager/asyncjob.py", line 71, in cb_wrapper
    callback(asyncjob, *args, **kwargs)
    ~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/share/virt-manager/virtManager/asyncjob.py", line 107, in tmpcb
    callback(*args, **kwargs)
    ~~~~~~~~^^^^^^^^^^^^^^^^^
  File "/usr/share/virt-manager/virtManager/object/libvirtobject.py", line 57, in newfn
    ret = fn(self, *args, **kwargs)
  File "/usr/share/virt-manager/virtManager/object/domain.py", line 1384, in startup
    self._backend.create()
    ~~~~~~~~~~~~~~~~~~~~^^
  File "/usr/lib/python3.13/site-packages/libvirt.py", line 1379, in create
    raise libvirtError('virDomainCreate() failed')
libvirt.libvirtError: internal error: QEMU unexpectedly closed the monitor (vm='kali'): 2025-05-07T08:07:09.793537Z qemu-system-x86_64: -device {"driver":"virtio-vga-gl","id":"video0","max_outputs":1,"bus":"pcie.0","addr":"0x1"}: The display backend does not have OpenGL support enabled
It can be enabled with '-display BACKEND,gl=on' where BACKEND is the name of the display backend to use.

У меня 3D с nvidia так и не заработало, но заработало с интеграшкой от AMD, правда для этого надо настраивать не через гуй, а напрямую редактировать xml:

<graphics type="spice">
  <listen type="none"/>
</graphics>
<graphics type="egl-headless">
  <gl rendernode="/dev/dri/renderD128"/>
</graphics>
<video>
  <model type="virtio" heads="1" primary="yes">
    <acceleration accel3d="yes"/>
  </model>
  <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x0"/>
</video>

Black_Shadow ★★★★★
()

Вот если что:

[ebuild   R    ] app-emulation/qemu-9.1.2-r1::gentoo  USE="(X) aio alsa bzip2 curl fdt filecaps gnutls gtk jpeg ncurses nls opengl oss pam pin-upstream-blobs pipewire png pulseaudio sdl seccomp slirp spice udev usb usbredir vhost-net virgl virtfs vnc wayland xattr -accessibility -bpf -capstone -debug -doc -fuse -glusterfs -infiniband -io-uring -iscsi -jack -jemalloc -keyutils -lzo -multipath -nfs -numa -plugins -python -rbd -sasl -sdl-image (-selinux) -smartcard -snappy -ssh -static-user -systemtap -test -vde -vte -xdp -xen -zstd" PYTHON_TARGETS="python3_13 -python3_11 -python3_12" QEMU_SOFTMMU_TARGETS="x86_64 -aarch64 -alpha -arm -avr -cris -hppa -i386 -loongarch64 -m68k -microblaze -microblazeel -mips -mips64 -mips64el -mipsel -or1k -ppc -ppc64 -riscv32 -riscv64 -rx -s390x -sh4 -sh4eb -sparc -sparc64 -tricore -xtensa -xtensaeb" QEMU_USER_TARGETS="-aarch64 -aarch64_be -alpha -arm -armeb -cris -hexagon -hppa -i386 -loongarch64 -m68k -microblaze -microblazeel -mips -mips64 -mips64el -mipsel -mipsn32 -mipsn32el -or1k -ppc -ppc64 -ppc64le -riscv32 -riscv64 -s390x -sh4 -sh4eb -sparc -sparc32plus -sparc64 -x86_64 -xtensa -xtensaeb" 0 KiB

gentoorulz
() автор топика
Ответ на: комментарий от Black_Shadow

выбрал вместо Display Spice - Display VNC, подрубился встроенным просмотрщиком в virt-manager и, о ужас, еще хуже чем спайс работает. Или надо непосредственно в гостя сервер ставить?

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

Непосредственно в госте. Вообще, когда я последний раз пробовал (давно) NX был намного быстрее VNC, так что я бы сразу с него начал.

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

У меня 3D с nvidia так и не заработало,

Там нужно кое-что связанное с virgl пересобрать, virglrenderer вроде.
В Ебилде (по крайней мере полгода назад) - не было нужного флага, собирать нужно было с -Dvideo=True -Dvenus=true, если маразм не изменяет

Примерно что-то такое должно быть (без Libvirt):

#!/usr/bin/env bash
qemu-system-x86_64 \
   ...
  -device virtio-vga-gl,hostmem=4G,blob=true,venus=true \
  -display gtk,gl=on,show-cursor=on \
   ...
Myp3ik ★★★
()
Последнее исправление: Myp3ik (всего исправлений: 4)
Ответ на: комментарий от Myp3ik

О, спасибо, сейчас буду пробовать.

@Black_Shadow, не забудь поставить qemu 9.2.X, т.к. в стейбле 9.1 и там нет поддержки venus вроде как. По крайней мере у меня не завелось. Сейчас пересобираю более свежую версию. И ядрецо нужно минимум 6.13 вроде как. Вот тут более подробно: https://gist.github.com/peppergrayxyz/fdc9042760273d137dddd3e97034385f

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

И вот еще:

$ diff -ru virglrenderer-1.0.1.ebuild_ virglrenderer-1.0.1.ebuild 
--- virglrenderer-1.0.1.ebuild_ 2024-10-05 18:10:45.000000000 +0400
+++ virglrenderer-1.0.1.ebuild  2025-05-07 22:48:36.433347850 +0400
@@ -36,6 +36,8 @@
 src_configure() {
        local emesonargs=(
                -Ddefault_library=$(usex static-libs both shared)
+               -Dvideo=True
+               -Dvenus=True
        )
 
        meson_src_configure

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

хм, вроде все собралось и работает, но прироста в производительности графики всё равно не ощущаю. Запускаю так:

qemu-system-x86_64                                               \
    -enable-kvm                                                  \
    -M q35                                                       \
    -smp 4                                                       \
    -m 4G                                                        \
    -cpu host                                                    \
    -net nic,model=virtio                                        \
    -net user,hostfwd=tcp::2222-:22                              \
    -device virtio-vga-gl,hostmem=4G,blob=true,venus=true        \
    -vga none                                                    \
    -display gtk,gl=on,show-cursor=on                            \
    -usb -device usb-tablet                                      \
    -object memory-backend-memfd,id=mem1,size=4G                 \
    -machine memory-backend=mem1                                 \
    -hda kali.qcow2                                                  
gentoorulz
() автор топика
Ответ на: комментарий от gentoorulz

Хотя вру! Попробовал другую виртуалку и там всё очень шустренько работает! Но курсор не соответствует действительности и находится не там где настоящий курсор и приходится на пару см смещаться чтобы попасть туда куда надо)) Уже пробовал и вейланд и Х11 - везде такой артефакт

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

Можно еще попробовать вместо

-device usb-tablet

использовать

-device virtio-tablet

Если qemu запускается из bash-скрипта, то вместо экранирования переводов строк удобнее передавать аргументы через массив:

args=(
    -enable-kvm
    -M q35
    -smp 4
    -m 4G
    -cpu host
    -net nic,model=virtio
    -net user,hostfwd=tcp::2222-:22
    -device virtio-vga-gl,hostmem=4G,blob=true,venus=true
    -vga none
    -display gtk,gl=on,show-cursor=on
    -usb -device usb-tablet
    -object memory-backend-memfd,id=mem1,size=4G
    -machine memory-backend=mem1
    -hda kali.qcow2
)
qemu-system-x86_64 "${args[@]}"

отключать/включать отдельные ключи можно будет комментированием строки.

No ★★
()