我正在尝试使用我编译的 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