从昨天开始,我无法virt-manager
再使用 GUI 查看任何正在运行的虚拟机 (QEMU/KVM)。当我尝试在其内置查看器中查看虚拟机的屏幕时,我收到以下错误消息:
连接到图形控制台时出错:
内部错误:无法执行 QEMU 命令“getfd”:
没有通过 SCM_RIGHTS 提供文件描述符
这适用于我的所有虚拟机。
我仍然可以正确查看并与我的虚拟机交互virt-viewer
,只是virt-manager
内置查看器坏了。
这里出了什么问题?我该如何修复?
编辑:我刚刚发现我正在使用来自 archive.getdeb.net repo 的virt-manager
版本。1:1.4.0-1~getdeb1
答案1
在尝试将最新的 virt-manager 1.4.0 合并到 Ubuntu 时,我遇到了同样的问题。这似乎不是 virt-manager 中的错误,只是它向虚拟机发送显示数据的方式发生了变化。
我打开了一个错误,以向 libvirt 添加必要的权限,这是定义 apparmor 配置文件的地方 -https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/1668681
要在不禁用安全附加的情况下解决此问题,请执行以下操作:
# allow connect with openGraphicsFD to work
unix (send, receive) type=stream addr=none peer=(label=/usr/sbin/libvirtd),
到文件/etc/apparmor.d/abstractions/libvirt-qemu
但不在 qemu-bridge-helper 部分。(因此就在“owner @{PROC}/0-9*/fd/ r,”之后)
然后使用 重新加载配置文件sudo systemctl reload apparmor
。
尽管如此,我始终建议使用我们档案中的软件包来获得最佳支持。
答案2
就我而言,是 apparmour 阻止了访问。apparmour magic 配置文件生成器似乎没有正常工作。我的解决方法如下。
启动 KVM 实例并收到错误后,我执行了以下操作:
$sudo apparmour_status
其中列出了导致问题的配置文件,
libvirt-<some long key>
然后我将 apparmour 配置文件设置为抱怨而不是强制执行:
$sudo aa-complain /etc/apparmor.d/libvirt/libvirt-<some long key>
现在我不再收到错误。希望这个冲突能得到解决。
答案3
libvirt
我无法重现该问题,但10 月 5 日 有更新:
libvirt-bin-1.3.1-1ubuntu10.2
已升级为libvirt-bin-1.3.1-1ubuntu10.3
libvirt0-1.3.1-1ubuntu10.2
已升级为libvirt01.3.1-1ubuntu10.3
如果您没有更改任何设置或其他内容,则很可能在升级过程中出现了问题。完全删除所有virt-manager
相关软件包并重新安装它们。
sudo apt purge libvirt-bin libvirt-glib libvirt0 virt-manager virt-viewer virtinst
sudo apt install libvirt-bin libvirt-glib libvirt0 virt-manager virt-viewer virtinst
重新启动主机操作系统 - 现在一切都应该像以前一样正常工作。
答案4
似乎是virt-manager
版本中的一个错误1:1.4.0-1~getdeb1
中的一个错误http://getdeb.net。
再次将软件包降级到官方存储库(1:1.3.2-3ubuntu1.16.04.2
来自xenial-updates
)提供的最新版本即可解决此问题。
更新:版本1:1.4.0-1~getdeb2
尚未修复该问题。