更改 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加速功能,请告诉我。

我目前正在使用 Debian Stretch,以及来自“测试”存储库的 virt-manager、libvirt-daemon 和 qemu-kvm,在 Intel Core i5-8400 上使用集成 GPU。我已经编译了 Qemu,因此可以通过“libvirglrenderer”使用 OpenGL 3D 加速功能。

答案1

我刚刚在 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 二进制文件。例如,您可以通过将以下几行放在config.txt 中/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 规则语法描述,例如,这里

答案2

@alexcloud2 是最好的答案。我必须稍微修改 apparmor 配置行(可能是由于最近的软件更改)。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

相关内容