自从我最近从 ubuntu 18.04 升级到 20.04 后,我的来宾虚拟机无法正常关闭。之前使用ubuntu 18.04,没有遇到这些问题。
我有两个来宾虚拟机——一个运行 ubuntu 18.04 的“标准”来宾,一个运行 Windows 10 的具有 GPU 直通和实际物理 SSD(而不是磁盘映像文件)的来宾。
当我尝试从 geust VM 中关闭它们时,两者都不会正确关闭。我的 ubuntu VM 启动关机 - 我可以在关机期间看到正常消息。我看到的最后一条消息是
[OK] Stopped target Local File Systems (Pre).
[OK] Stopped Remount Root and Kernel File Systems.
[OK] Stopped Create Static Device Nodes in /dev.
[OK] Reached target Shutdown.
[OK] Reached target Final Step.
Starting Power-Off...
[44.540351] systemd-shutdown[1]: Failed to wait for process: Protocol error
然后来宾虚拟机就这样卡住了,我的虚拟机管理器中的状态显示“正在关闭”
如果我尝试使用该virsh destroy
命令强制关机,我会收到错误消息
error: Failed to destroy domain ubuntu18.04
error: Failed to terminate process 4736 with SIGTERM: permission denied
我的 Windows VM 也发生了类似的事情。Windows 开始关闭,连接到直通 GPU 的屏幕变黑,我又回到了我的主机系统。但是,我的虚拟机管理器中的状态卡在“正在关闭”。
在将我的主机系统从 ubuntu 18.04 升级到 20.04 期间,有人问我是否要替换一些配置文件或保留我手动调整的旧配置文件。我记得如果我手动调整了旧的配置文件,我会保留它们,因为我不想丢失我的自定义设置/配置。保留旧的配置文件已经导致我遇到https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/1833040我通过手动编辑 apparmor 抽象文件中的一行来解决,如错误修复中所述.
因此,我怀疑 ubuntu 18.04 中的一些旧配置文件在升级过程中没有更新,这导致了我的问题。你同意这一点,还是更有可能?如果旧的配置文件是最可能的原因,我如何获得新的更新的 ubuntu 20.04 配置文件?
谢谢 Christian Ehrhardt,apparmor 确实是罪魁祸首。我注意到,libvirt-qemu 的新默认抽象是
/etc/apparmor.d/abstractions/libvirt-qemu.dpkg-dist
在升级过程中保存的,因此我可以将新默认抽象中的更改与我的自定义修改合并,而无需重新安装 apparmor。现在我的虚拟机再次正常关闭。