Kvm

更改 libvirt 模擬器:權限被拒絕

  • August 16, 2020

我正在嘗試使用我使用教程編譯的 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 編輯配置文件的“模擬器”部分如下:

&lt;emulator&gt;/usr/bin/kvm&lt;/emulator&gt;

我已經嘗試過更改文件的權限和所有權,確保允許執行(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 規則語法。

引用自:https://unix.stackexchange.com/questions/471345