更改 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 加速功能的方法,請告訴我。
我目前在英特爾酷睿 i5-8400 上使用集成 GPU 使用 Debian Stretch,以及來自“測試”儲存庫的 virt-manager、libvirt-daemon 和 qemu-kvm。我已經編譯了 Qemu,所以我可以將 OpenGL 3D 加速功能與“libvirglrenderer”一起使用。
我剛剛在 Debian Buster 上解決了同樣的問題。Apparmor 拒絕訪問我編譯的 qemu 二進製文件。您可以使用以下命令檢查系統上是否啟用了 apparmor:
sudo aa-status
如果您的輸出包含以下行,那麼 apparmor 肯定已啟用並且需要配置為允許訪問您編譯的二進製文件:
... 22 profiles are in enforce mode. ... /usr/sbin/libvirtd ... 3 processes are in enforce mode. /usr/sbin/libvirtd (1098) ...
為 libvirt 添加 apparmor 權限以執行您的 qemu 二進製文件。例如,您可以在配置中的最後一個符號
/etc/apparmor.d/usr.sbin.libvirtd
之前放置以下行。'}'
配置結束將如下所示:# ... skipped lines /usr/bin/kvm rmix, /usr/local/bin/qemu-2.12.1/x86_64-softmmu/qemu-system-x86_64 rmix, }
可能您還需要為 qemu 添加相同的 apparmor 權限
/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,
您可以使用重新載入 apparmor 規則集
sudo systemctl reload apparmor
。例如,此處描述的 Apparmor 規則語法。