问题描述
我正在运行 Ubuntu 12.04.2 32 位。
如果我启动 gksudo virt-manager
,错误不会出现。
-
libvirt-bin
已安装。 -
我不知道如何检查守护进程。
-
我是
libvirtd
的成员。
ps ax | grep libvirt
的输出:
9225 ? Sl 0:04 /usr/sbin/libvirtd -d
9302 ? S 0:00 /usr/sbin/dnsmasq -u libvirt-dnsmasq --strict-order --bind-interfaces --pid-file=/var/run/libvirt/network/default.pid --conf-file= --except-interface lo --listen-address 192.168.122.1 --dhcp-range 192.168.122.2,192.168.122.254 --dhcp-leasefile=/var/lib/libvirt/dnsmasq/default.leases --dhcp-lease-max=253 --dhcp-no-override`
ls -l /var/run/libvirt/libvirt-sock
的输出:
srwxrwx— 1 root libvirtd 0 Set 13 15:04 /var/run/libvirt/libvirt-sock
getent group libvirtd
的输出:
libvirtd:x:130:OTHERUSER,MYUSER
详细的错误信息
Unable to connect to libvirt.
Failed to connect socket to '/var/run/libvirt/libvirt-sock': Permission denied
Verify that:
- The 'libvirt-bin' package is installed
- The 'libvirtd' daemon has been started
- You are member of the 'libvirtd' group
Libvirt URI is: qemu:///system
Traceback (most recent call last):
File "/usr/share/virt-manager/virtManager/connection.py", line 1185, in _open_thread
self.vmm = self._try_open()
File "/usr/share/virt-manager/virtManager/connection.py", line 1167, in _try_open
flags)
File "/usr/lib/python2.7/dist-packages/libvirt.py", line 102, in openAuth
if ret is None:raise libvirtError('virConnectOpenAuth() failed')
libvirtError: Failed to connect socket to '/var/run/libvirt/libvirt-sock': Permission denied
最佳方案
重新启动安装了 virt-manager
的系统解决了该问题。
次佳方案
安装 KVM 后,运行此命令将不会再次出现该错误。
sudo virt-manager
第三种方案
重新启动/注销的替代方法是从终端运行以下命令:
newgrp libvirt
virt-manager
对于在 newgrp
之后在同一 shell 中启动的进程,newgrp
命令允许用户在不注销的情况下加入 libvirt
组。当然,这仅在 libvirt 安装程序将您放入 libvirt 组时才有效,您可以检查:
getent group libvirt
第四种方案
对我来说,错误是因为没有 logout-login (或重新启动),组成员身份更改不适用。我刚刚安装了 KVM 和 libvirt-bin。安装程序自动将我的用户添加到 libvirtd 组,我已经重新启动了 libvirt-bin 服务,但我仍然收到错误消息。
不要将文件权限更改为 777。不要只是以 root 或 sudo 身份运行所有内容,以避免了解问题所在。
只需注销并通过应用我的新组成员身份重新登录即可解决问题。
假设您刚刚安装了 libvirt-bin 并且已经确认您的当前用户是 libvirtd 组的成员,如错误消息所示,您将需要注销并重新登录以申请新的组成员资格。
我希望这可以帮助别人。
第五种方案
我在我的 Ubuntu 14.02 机器上同时管理 Qemu 和 Virtualbox,安装 Virtualbox libvirt-bin 后无法自动启动。所以检查 libvirt-bin 是否正在运行:
ps faux | grep libvirt-bin
如果您在 ps 输出中看不到它 – 手动启动,然后运行 virt-manager:
sudo service libvirt-bin start
第六种方案
在 Ubuntu 16.04.3 LTS 上
systemctl start virtlogd.socket
是唯一的答案。套接字有自己的守护进程。这很不寻常。