libvirt 에뮬레이터 변경: 권한이 거부되었습니다.

libvirt 에뮬레이터 변경: 권한이 거부되었습니다.

컴파일된 Qemu 바이너리를 사용하려고 합니다.이것내 운영 체제인 Debian과 함께 제공되는 Qemu 버전이 Spice의 OpenGL 가속을 지원하지 않는 것 같기 때문입니다. 성공적으로 컴파일한 후 <emulator> 태그를 /usr/local/bin에 있는 새 Qemu 실행 파일의 경로로 설정하려고 했지만 다음 오류가 발생했습니다.

error: internal error: Failed to probe QEMU binary with QMP: libvirt: error : cannot execute binary /usr/local/bin/qemu-2.12.1/x86_64-softmmu/qemu-system-x86_64: Permission denied

내 virsh 편집 구성 파일의 "에뮬레이터" 섹션은 다음과 같습니다.

<emulator>/usr/bin/kvm</emulator>

파일의 권한과 소유권을 변경하여 실행이 허용되는지 확인했지만( chmod a+x) 아무것도 작동하지 않는 것 같습니다.

Qemu의 OpenGL 가속을 사용하는 다른 방법이 있다면 알려주세요.

저는 현재 통합 GPU를 사용하는 Intel Core i5-8400에서 "테스트" 저장소의 virt-manager, libvirt-daemon 및 qemu-kvm과 함께 Debian Stretch를 사용하고 있습니다. "libvirglrenderer"를 통해 OpenGL 3D 가속을 사용할 수 있도록 Qemu를 컴파일했습니다.

답변1

방금 Debian Buster에서 같은 문제를 해결했습니다. Apparmor는 내 컴파일된 qemu 바이너리에 대한 액세스를 거부합니다. 다음 명령을 사용하여 시스템에서 의류가 활성화되어 있는지 확인할 수 있습니다.

sudo aa-status

출력에 다음 줄이 포함되어 있으면 의류는 확실히 활성화되어 있으며 컴파일된 바이너리에 대한 액세스를 허용하도록 구성해야 합니다.

...
22 profiles are in enforce mode.
...
   /usr/sbin/libvirtd
...
3 processes are in enforce mode.
   /usr/sbin/libvirtd (1098)
...

qemu 바이너리를 실행하려면 libvirt에 의류 권한을 추가하세요. 예를 들어, /etc/apparmor.d/usr.sbin.libvirtdconfig.txt의 마지막 기호 앞에 다음 줄을 배치하면 됩니다 . '}'구성이 끝나면 다음과 같습니다.

# ... skipped lines
  /usr/bin/kvm rmix,
  /usr/local/bin/qemu-2.12.1/x86_64-softmmu/qemu-system-x86_64 rmix,
}

어쩌면 qemu에 대해 동일한 의류 권한을 추가해야 할 수도 있습니다 /etc/apparmor.d/abstractions/libvirt-qemu.

  /usr/bin/kvm rmix,
  /usr/local/bin/qemu-2.12.1/x86_64-softmmu/qemu-system-x86_64 rmix,

reload apparmor 규칙 세트를 사용할 수 있습니다 sudo systemctl reload apparmor. 의류 규칙 구문 설명(예:여기.

답변2

@alexcloud2가 가장 좋은 답변입니다. 나는 의류 구성 라인을 약간 수정해야 했습니다(아마 최근 소프트웨어 변경으로 인해). usr.sbin.libvirtd다음 줄을 추가했습니다.

/usr/local/bin/* PUx,

답변3

Fedora에서 이 문제가 발생했습니다. 집에서 만든 qemu를 실행하려고 할 때 selinux를 비활성화하고 작동했습니다. 참고로https://docs.fedoraproject.org/en-US/quick-docs/changing-selinux-states-and-modes/#selinux-disabling-selinux

관련 정보