Quiero ejecutar qemu
Debian Buster y, por lo tanto, instalé el qemu-system-x86_64
paquete.
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 libvirglrenderer0
y 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:
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.0
la 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.1
proviene de Parallel Tools; que incluye una serie de bibliotecas de reemplazo: libEGL.so.1
, libgbm.so.1
y libGL.so.1
, junto con dos bibliotecas específicas de Parallels libPrlDRI.so.1
y 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_PATH
actualizada 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 ...