Wie behebt man „qemu-system-x86_64: Symbolsuchfehler: /lib/x86_64-linux-gnu/libvirglrenderer.so.0: undefiniertes Symbol: drmPrimeHandleToFD“?

Wie behebt man „qemu-system-x86_64: Symbolsuchfehler: /lib/x86_64-linux-gnu/libvirglrenderer.so.0: undefiniertes Symbol: drmPrimeHandleToFD“?

Ich möchte es qemuauf Debian Buster laufen lassen und habe daher das qemu-system-x86_64Paket installiert.

Das Problem ist, dass beim Ausführen Folgendes auftritt:

qemu-system-x86_64 \
    -m 128M \
    -cpu kvm64,+smep,+smap \
    -kernel vmlinuz \
    -initrd initramfs.cpio.gz \
    -hdb flag.txt \
    -snapshot \
    -nographic \
    -monitor /dev/null \
    -no-reboot \
    -append "console=ttyS0 kaslr kpti=1 quiet panic=1" \

Ich erhalte die folgende Fehlermeldung:

qemu-system-x86_64: symbol lookup error: /lib/x86_64-linux-gnu/libvirglrenderer.so.0: undefined symbol: drmPrimeHandleToFD

Wie kann ich diesen Fehler beheben?

Laut apthabe ich die neueste Version von libvirglrenderer0und es sind keine Versionen in verfügbar debian-backports.

Versionen:

qemu-system-x86/stable,stable,now 1:3.1+dfsg-8+deb10u8 amd64 [installed]
libvirglrenderer0/stable,now 0.7.0-2 amd64 [installed]

Debian:

uname -a
Linux debian-parallels 4.19.0-16-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 GNU/Linux

Aktualisieren:

$ nm -D  /lib/x86_64-linux-gnu/libvirglrenderer.so.0 | grep drm
                 U drmPrimeHandleToFD
$ ldd  /lib/x86_64-linux-gnu/libvirglrenderer.so.0
    linux-vdso.so.1 (0x00007ffedad5f000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f0d0bed8000)
    libgbm.so.1 => /lib/x86_64-linux-gnu/libgbm.so.1 (0x00007f0d0bcd3000)
    libepoxy.so.0 => /lib/x86_64-linux-gnu/libepoxy.so.0 (0x00007f0d0bba1000)
    libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007f0d0ba60000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f0d0ba3f000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f0d0b87e000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f0d0c0ee000)
    libPrlDRI.so.1 => /lib/x86_64-linux-gnu/libPrlDRI.so.1 (0x00007f0d0b581000)
    libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f0d0b3fd000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f0d0b3e3000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f0d0b3de000)
    libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f0d0b3b4000)
    libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007f0d0b1ae000)
    libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f0d0afa8000)
    libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f0d0af8e000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f0d0af84000)

Aktualisierung 1:

Vor und nach der Installation von Parallels Tools:

Bildbeschreibung hier eingeben

Antwort1

Das Zeichen, dass etwas nicht stimmt, ist die

libPrlDRI.so.1 => /lib/x86_64-linux-gnu/libPrlDRI.so.1 (0x00007f0d0b581000)

Zeile in lddder Ausgabe von: Es gibt in Debian keine solche Bibliothek, daher kann eine Bibliothek, die sie benötigt, nicht aus einem Debian-Paket stammen.

Wenn libvirglrenderer.so.0die Bibliothek nicht die von Debian bereitgestellte Version ist,

sudo apt install --reinstall libvirglrenderer0

würde das beheben; aber das ist hier anscheinend nicht das Problem.

libPrlDRI.so.1kommt von Parallel Tools; das eine Reihe von Ersatzbibliotheken mitliefert: libEGL.so.1, libgbm.so.1, und libGL.so.1, zusammen mit zwei Parallels-spezifischen Bibliotheken, libPrlDRI.so.1und libPrlWl.so.1. Der Schuldige hier ist wahrscheinlich libgbm.so.1: QEMU benötigt diese Bibliothek, und wenn es die Version von Parallels lädt (entweder über LD_LIBRARY_PATH, oder eine aktualisierte ld.soKonfiguration), lädt es am EndelibPrlDRI.so.1 stattdessenvon libdrm.so.2.

Um dies zu beheben, sollten Sie in der Lage sein, die Überschreibung außer Kraft zu setzen:

LD_PRELOAD=/lib/x86_64-linux-gnu/libdrm.so.2 qemu-system-x86_64 ...

verwandte Informationen