"qemu-system-x86_64: 기호 조회 오류: /lib/x86_64-linux-gnu/libvirglrenderer.so.0: 정의되지 않은 기호: drmPrimeHandleToFD"를 수정하는 방법은 무엇입니까?

"qemu-system-x86_64: 기호 조회 오류: /lib/x86_64-linux-gnu/libvirglrenderer.so.0: 정의되지 않은 기호: drmPrimeHandleToFD"를 수정하는 방법은 무엇입니까?

qemuDebian Buster에서 실행하고 싶어서 qemu-system-x86_64패키지를 설치했습니다.

문제는 내가 실행할 때입니다.

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

다음 오류가 발생합니다.

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

이 오류를 어떻게 해결할 수 있나요?

에 따르면 apt최신 버전이 있는데 libvirglrenderer0에 사용할 수 있는 버전이 없습니다 debian-backports.

버전:

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

더반:

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

고쳐 쓰다:

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

업데이트 1:

Parallels Tools 설치 전과 후:

여기에 이미지 설명을 입력하세요.

답변1

문제의 징후는 다음과 같습니다.

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

출력의 한 줄 ldd: 데비안에는 그러한 라이브러리가 없으므로 이를 필요로 하는 라이브러리는 데비안 패키지에서 나올 수 없습니다.

libvirglrenderer.so.0라이브러리가 Debian에서 제공하는 버전이 아닌 경우

sudo apt install --reinstall libvirglrenderer0

문제를 해결할 수 있지만 분명히 여기서는 문제가 아닙니다.

libPrlDRI.so.1Parallel Tools에서는 libEGL.so.1, libgbm.so.1, 및 libGL.so.1, 두 개의 Parallels 전용 라이브러리 libPrlDRI.so.1libPrlWl.so.1. 여기서 범인은 다음과 같습니다 . QEMU에는 이 라이브러리가 필요하며 Parallels의 버전( 또는 최신 구성을 libgbm.so.1통해)을 로드하면 결국 로드됩니다.LD_LIBRARY_PATHld.solibPrlDRI.so.1 대신에libdrm.so.2.

이 문제를 해결하려면 재정의를 재정의할 수 있어야 합니다.

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

관련 정보