해결하다

해결하다

저는 Arch Linux를 실행하고 있는데 QEMU/KVM을 사용하는 데 문제가 있습니다 virt-manager. 이 문제는 gnome-boxes.

해결하다

이 오류는 드라이버와 관련이 있습니다.opencl-amdgpu-pro-orca.이 답변오류가 발생한 배경을 자세히 설명합니다. 문제를 해결한 방법은 다음과 같습니다.

  1. 실행 sudo systemctl edit libvirtd하면 Nano가 열립니다.
  • override.conf이 명령은 서비스 디렉터리 에 저장될 임시 파일을 만듭니다 libvirtd.
  1. 파일에 다음을 입력합니다(필자의 경우 비어 있음).
[Service]
Environment="LD_LIBRARY_PATH=/usr/lib"
  1. 다시 시작합니다 .libvirtdsudo systemctl restart libvirtd
  2. 열려 있는 virt-manager. 이 오류는 발생하지 않아야 합니다.
  • 내가 그랬다는 사실은 주목할 가치가 있다아니요이러한 변경 후에는 재부팅이 필요합니다.

나머지 질문은 아래에 자세히 설명되어 있습니다.

질문

virt-manager를 연 후 QEMU/KVM에 대한 연결이 성공적으로 설정된 것으로 보이며 새 가상 머신을 생성할 수 있는 옵션이 있습니다. 이 작업을 시도하면 다음 오류가 발생합니다.

경고: KVM을 사용할 수 없습니다. 이는 KVM 패키지가 설치되지 않았거나 KVM 커널 모듈이 로드되지 않았음을 의미할 수 있습니다. 가상 머신의 성능이 저하되었을 수 있습니다.

통나무

journalctl -f오류를 재현하면 다음이 반환됩니다.

Oct 14 22:23:00 okcomputer libvirtd[35615]: internal error: Failed to start QEMU binary /usr/bin/qemu-system-x86_64 for probing: /usr/bin/qemu-system-x86_64: symbol lookup error: /usr/lib/libvirglrenderer.so.1: undefined symbol: gbm_bo_unmap
Oct 14 22:23:00 okcomputer libvirtd[35615]: Failed to probe capabilities for /usr/bin/qemu-system-x86_64: internal error: Failed to start QEMU binary /usr/bin/qemu-system-x86_64 for probing: /usr/bin/qemu-system-x86_64: symbol lookup error: /usr/lib/libvirglrenderer.so.1: undefined symbol: gbm_bo_unmap

연구 및 해결 시도

아치스 위키

이것은 일반적인 질문인 것 같고 저는 광범위한 연구를 수행했습니다. 처음에는 Arch Wiki를 따라 KVM, QEMU, libvirt 페이지를 순서대로 읽었습니다.

키보드 가상 머신

  1. 내 프로세서하다가상화가 지원되고 활성화됩니다.

내 BIOS(VT-x 및 VT-d)에서 가상화 지원이 활성화되어 있습니다.

  1. 이게 문제일 수도 있어- 커널 모듈. 실행 zgrep CONFIG_KVM /proc/config.gz출력은 다음과 같습니다.
CONFIG_KVM_GUEST=y
# CONFIG_KVM_DEBUG_FS is not set
CONFIG_KVM_MMIO=y
CONFIG_KVM_ASYNC_PF=y
CONFIG_KVM_VFIO=y
CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y
CONFIG_KVM_COMPAT=y
CONFIG_KVM=m
CONFIG_KVM_INTEL=m
CONFIG_KVM_AMD=m
CONFIG_KVM_AMD_SEV=y
CONFIG_KVM_MMU_AUDIT=y

lsmod | grep kvm이것을 출력하십시오:

kvm_intel             311296  0
kvm                   778240  1 kvm_intel
irqbypass              16384  1 kvm

0으로 설정되어 있는 것 같은데 kvm_intel다음 줄 끝부분에 언급되어 있습니다. 확실히 말하자면, 저는 커널 모듈이 어떻게 작동하는지 특별히 잘 알지는 못하지만, 모듈 로드를 사용해 보기로 결정했는데 sudo modprobe kvm_intel아무 것도 반환하지 않습니다. 이는 제가 아는 한 좋은 징조입니다. 달리기도 sudo modprobe kvm확실히 똑같습니다.

QEMU

  1. 다른 패키지와 마찬가지로 QEMU를 설치했습니다.

라이브러리 가상 머신

  1. 다른 패키지와 마찬가지로 libvirt와 virt-manager를 설치했습니다.
  2. ebtables소프트웨어가 모두 설치되어 dnsmasq있고 최신 상태 인지 확인했습니다 .
  3. 다음을 생성하여 /etc/polkit-1/rules.d/50-libvirt.rules파일에 추가합니다.
/* Allow users in kvm group to manage the libvirt
daemon without authentication */
polkit.addRule(function(action, subject) {
    if (action.id == "org.libvirt.unix.manage" &&
        subject.isInGroup("kvm")) {
            return polkit.Result.YES;
    }
});
  1. 나는 ;를 통해 자신을 그룹에 추가했습니다 kvm. (그리고 libvirt온라인 어딘가에서 본 것 같은데요?) useradd이는 다음을 실행하여 확인할 수 있습니다 groups <username>.

wheel kvm libvirt <username>

  1. libvirtd그런 다음 및 서비스를 활성화하고 시작한 virtlogd다음 재부팅했습니다.

  2. virsh그런 다음 다음을 제외하고 작동하는지 테스트했습니다 virt-manager. virsh다음을 출력합니다.

Welcome to virsh, the virtualization interactive terminal.

Type:  'help' for help with commands
       'quit' to quit

virsh #

추가 연구

앞서 언급했듯이 이는 일반적인 문제인 것처럼 보이지만 많은 Stack Exchange 답변의 지침을 따르면 일반적으로 동일한 결과가 발생합니다.

나는 다음을 테스트했습니다.

수많은 다른 기사와 답변도 비슷한 조언을 제공합니다.

소프트웨어 사양

  • 핵심5.3.5-arch1-1-ARCH(최신 기본 Arch 커널)
  • 라이브러리 가상 머신5.6.0-1
  • 가상 관리자2.2.1-1
  • QEMU4.1.0-2
  • 폴킷0.116-3

비디오 관련 패키지가 관련이 있는지는 모르겠지만 과거에는 독점 드라이버에 문제가 있는 것으로 입증되었습니다.

  • 메사192.2.1-1
  • xf86-비디오-amdgpu19.0.1-1
  • opencl-amdgpu-pro-orca19.30_855429-1

하드웨어 사양

  • CPU인텔 i7 4790k
  • 마더보드ASUS 막시무스 VII 히어로

필요한 추가 사양은 요청 시 제공됩니다.

답변1

귀하의 질문은 다음과 같습니다 opencl-amdgpu-pro-orca. 기본 최신 AUR 버전에서도 누락된
자체 기호를 제공합니다 . libgbm.so.1먼저 검색 경로에 입력됩니다.
따라서 이러한 드라이버를 비활성화하거나 이 기능을 포함하는 수정/업데이트 버전을 가져오거나 컴파일하려고 시도하거나 libvirtd servcie에 대한 lib 검색 경로만 비활성화하려고 시도할 수 있습니다(서비스 시작 프로세스에 LD_LIBRARY_PATH=/usr/lib 환경 변수 추가). ).


다음과 같은 문제를 분석하는 방법:

ldd /usr/lib/libvirglrenderer.so.1
ldd /usr/lib/libvirglrenderer.so.1|awk '$3!=""{print $3}'|while read file; do objdump -TC -j.text $file|grep gbm_bo_unmap && echo $file; done
LD_LIBRARY_PATH=/usr/lib ldd /usr/lib/libvirglrenderer.so.1|awk '$3!=""{print $3}'|while read file; do objdump -TC -j.text $file|grep gbm_bo_unmap && echo $file; done

답변2

Journalctl 출력에는 다음이 표시됩니다.

Oct 14 22:23:00 okcomputer libvirtd[35615]: Failed to probe capabilities for /usr/bin/qemu-system-x86_64: internal error: Failed to start QEMU binary /usr/bin/qemu-system-x86_64 for probing: /usr/bin/qemu-system-x86_64: symbol lookup error: /usr/lib/libvirglrenderer.so.1: undefined symbol: gbm_bo_unmap

실행해 보면 /usr/bin/qemu-system-x86_64 -help동일한 오류가 나타날 수 있습니다. undefined symbol이러한 오류는 설치된 qemu 버전이 빌드된 참조 라이브러리의 버전과 일치하지 않을 때 발생합니다.

Arch에 대한 구체적인 내용은 모르지만 Fedora에서는 관련 패키지를 virglrendererMay need to beuped라고 합니다.

이는 KVM is not availablelibvirt(및 확장 virt-manager)가 KVM이 작동하는 데 필요한 호스트 아키텍처와 일치하는 작동하는 qemu 버전을 찾지 못했기 때문에 발생합니다.

답변3

글쎄요, 저는 독점 드라이버를 완전히 제거하여 문제를 "해결"했습니다. GPU 패스스루를 VM으로 보낼 계획이므로 이것이 필요하지 않을 것이라고 생각합니다.

이상한 상황이네요...

관련 정보