由于 polkit 抛出丢失文件错误,没有 GNOME 的系统上的 Gentoo virt-manager 无法连接到 libvirtd

由于 polkit 抛出丢失文件错误,没有 GNOME 的系统上的 Gentoo virt-manager 无法连接到 libvirtd

我在配备 AMD A8-4555M CPU 的 HP Pavilion Touch 14-N009LA 上使用内核 3.12.21 AMD64 运行适用于 AMD64 的 Gentoo Linux。我的桌面环境是KDE 4.12.5。我已经安装了 KVM、libvirtd、polkit 和 virt-manager。但是,当我打开 virt-manager 时,出现以下错误,并且无法对虚拟机执行任何操作:

Unable to connect to libvirt.

authentication failed: polkit: Error getting authority: Error initializing authority: Could not connect: No such file or directory

详细输出在这里:

Unable to connect to libvirt.

authentication failed: polkit: Error getting authority: Error initializing authority: Could not connect: No such file or directory

Libvirt URI is: qemu:///system

Traceback (most recent call last):
  File "/usr/share/virt-manager/virtManager/connection.py", line 1002, in _open_thread
    self.vmm = self._try_open()
  File "/usr/share/virt-manager/virtManager/connection.py", line 984, in _try_open
    flags)
  File "/usr/lib64/python2.7/site-packages/libvirt.py", line 105, in openAuth
    if ret is None:raise libvirtError('virConnectOpenAuth() failed')
libvirtError: authentication failed: polkit: Error getting authority: Error initializing authority: Could not connect: No such file or directory

谷歌搜索后,我发现了以下提示来尝试使其发挥作用,以下是它们的操作方法:

  • 确保 polkit 身份验证代理正在运行。我检查了一下,它确实正在运行:
黑色@rockshooter ~ $ ps -ef | grep 波尔基特
黑色 5039 1 0 04:31 ? 00:00:00 /usr/lib64/kde4/libexec/polkit-kde-authentication-agent-1
  • 创建一个名为 kvm 的组,向其中添加我的用户 ID,然后创建 polkit 规则来对 kvm 组中希望管理虚拟机的用户进行身份验证。我这样做了,但没有成功:
root@rockshooter /etc/polkit-1/rules.d # cat 50-default.rules
polkit.addRule(函数(动作,主题){
    if (action.id == "org.libvirt.unix.manage" &&
        subject.isInGroup("kvm")) {
            返回 polkit.Result.YES;
    }
});
root@rockshooter /etc/polkit-1/rules.d # grep kvm /etc/group
kvm:x:78:qemu,黑色
  • 从命令行连接到虚拟机管理程序(使用virsh)。我得到完全相同的错误。
black@rockshooter ~ $ virsh --connect qemu:///system
错误:无法连接到虚拟机管理程序
错误:身份验证失败:polkit:获取权限时出错:初始化权限时出错:无法连接:没有这样的文件或目录

答案1

您的系统策略阻止管理本地虚拟化系统。您应该使用su来运行virt-manager以及virsh --connect qemu:///system任何其他与虚拟化相关的任务。

相关内容