¿Cómo solucionar "qemu-system-x86_64: error de búsqueda de símbolo: /lib/x86_64-linux-gnu/libvirglrenderer.so.0: símbolo no definido: drmPrimeHandleToFD"?

¿Cómo solucionar "qemu-system-x86_64: error de búsqueda de símbolo: /lib/x86_64-linux-gnu/libvirglrenderer.so.0: símbolo no definido: drmPrimeHandleToFD"?

Quiero ejecutar qemuDebian Buster y, por lo tanto, instalé el qemu-system-x86_64paquete.

El problema es que cuando ejecuto:

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" \

Obtuve el siguiente error:

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

¿Cómo puedo solucionar este error?

Según apt, tengo la última versión de libvirglrenderer0y no hay versiones disponibles en debian-backports.

Versiones:

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

Actualizar:

$ 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)

Actualización 1:

Antes y después de instalar Parallels Tools:

ingrese la descripción de la imagen aquí

Respuesta1

La señal de que algo anda mal es la

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

salida de la línea en ldd: no existe tal biblioteca en Debian, por lo que una biblioteca que la requiera no puede provenir de un paquete de Debian.

Si libvirglrenderer.so.0la biblioteca no es la versión proporcionada por Debian,

sudo apt install --reinstall libvirglrenderer0

arreglaría eso; pero aparentemente ese no es el problema aquí.

libPrlDRI.so.1proviene de Parallel Tools; que incluye una serie de bibliotecas de reemplazo: libEGL.so.1, libgbm.so.1y libGL.so.1, junto con dos bibliotecas específicas de Parallels libPrlDRI.so.1y libPrlWl.so.1. El culpable aquí probablemente sea libgbm.so.1: QEMU requiere esa biblioteca, y si carga la versión de Parallels (ya sea a través de la configuración LD_LIBRARY_PATHactualizada o a través de ld.so), termina cargándose.libPrlDRI.so.1 en cambiode libdrm.so.2.

Para solucionarlo, debería poder anular la anulación:

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

información relacionada