LinuxMint 上共享剪切板导致 VirtualBox 虚拟机死机,该怎样解决?

宿主机操作系统是 LinuxMint 22 64 位,在 VirtualBox 7.0.16 中安装了 Windows Thin PC。虚拟机中安装了 VirtualBox Guest Additions,并开启剪切板共享(方向为双向)。

现在偶尔会出现虚拟机死机的问题(点击虚拟机窗口无反应,必须手动杀死进程)。

查看虚拟机日志,出现上述问题时,有如下记录:

00:06:23.762970 Shared Clipboard: Requesting data in format 0x1 for X11 host failed with VERR_TIMEOUT
00:06:23.763178 Shared Clipboard: Converting VBox formats 'UNICODETEXT, HTML' to 'UTF8_STRING' for X11 (idxFmtX11=1, fmtX11=3, atomTarget='UTF8_STRING') failed, rc=VERR_TIMEOUT
00:06:23.763729 Shared Clipboard: Converting VBox formats 'UNICODETEXT, HTML' to 'INVALID' for X11 (idxFmtX11=0, fmtX11=0, atomTarget='COMPOUND_TEXT') failed, rc=VERR_NOT_SUPPORTED
00:06:23.763932 Shared Clipboard: Converting VBox formats 'UNICODETEXT, HTML' to 'INVALID' for X11 (idxFmtX11=0, fmtX11=0, atomTarget='COMPOUND_TEXT') failed, rc=VERR_NOT_SUPPORTED

当我关掉虚拟机的剪切板共享功能后,就没有再出现死机的问题。

从上述错误日志也可以推断,出现的错误与剪切板共享功能有关,而且可能是因为虚拟机无法识别宿主机剪切板内容的文本编码。

大家是否遇到过类似的情况,是否有什么方法可以解决上述问题呢?

Fcitx 5 里面有一篇 issue 反馈文章,或许和这个问题有关(需要补充说明的一点,我使用的输入法就是 Fcitx 5):

我把 Fcitx 5 的 “剪切板” 附加组件禁用了,目前暂时未出现死机的问题。但这个问题似乎是随机出现的,不太好复现。可能还需要观察一段时间。

貌似好多年没用 Virtualbox 了,一般我都是直接一台 Debian ,一台 Windows.
通常我的做法是,一个软件有问题,我又无法解决,那就换个软件 :rofl:
我个人比较喜欢的虚拟机软件是 Gnome-boxes , 基于 qemu 的

确实是个好主意,如果一个问题暂时无法解决,那么换条路走确实可以省很多力气。

但虚拟机这种东西,问题在与迁移成本。如果说我最近很长一段时间都不需要用虚拟机,那么或许我可以腾出来点时间折腾折腾。但如果我最近着急用,那就只能先将就着了。

目前找到了个缓兵之计:

  1. 宿主机(LinuxMint)安装 iptux(可通过命令 sudo apt install iptux 安装)
  2. 虚拟机安装 IP Messenger(官网:https://ipmsg.org/
  3. 虚拟机网络连接方式设置为桥接网卡,主机关闭防火墙(其实最科学的方法应该是放行指定端口,但我忘了 IPMsg 的端口是多少了)
  4. 主机打开 IPtux,虚拟机打开 IP Messenger,通过消息的方式传输文本内容。

当然,还有一个最简单的方法:

开启共享文件夹功能,共享一个文件夹,文件夹里面放一个文本文档,调整一下换行符,然后把要共享的内容贴进去就好了。

经过一段时间的测试,发现问题没有解决。即使禁用 Fcitx 的剪切板插件,复制部分内容时仍会出现虚拟机崩溃的问题。

根据 Virtualbox 论坛里的一些说法,这种问题似乎并非是一个 bug,而是因为不同操作系统处理文本的方式有差异。

Probably never. It’s not a bug. It’s a documented limitation caused by being two separate PCs running different OS.

https://forums.virtualbox.org/viewtopic.php?t=109369&start=15

若是如此,利用即时通讯软件来传递信息,或许还是一种相对 “安全” 的方法。

有个办法是不要用虚拟机的剪贴板共享。特别是涉及到文件共享的时候,我用 vmware 都特别容易让虚拟机卡住。

当年我就是因为这个问题,专门做了个剪贴板同步软件的:

你如果懂 Qt 的话,可以自行下载编写。

谢谢,之前看过您的这个作品,但我本人没有软件开发基础,只会一些基本的命令行操作。您的 readme 里面没有提到编译该软件需要我安装哪些软件包,因此我无法完成编译。

另外,我的虚拟机操作系统是 Windows Thin PC,是 32 位系统,您向软件需要 64 位系统,因此我无法使用。

另外,根据您的截图,其操作逻辑似乎是类似于即时通讯软件那样,需要用户手动发送信息,不是自动同步剪切板内容的。

看着像是x11的问题

1 个赞

我用了很多年剪切板共享,但是不太好用,老是失效。所以不用它了,共享文件夾也挺好的。

有可能,但我目前无法验证。我在 Wayfire 下运行 Virtualbox,并开启双向剪切板共享,但是发现只有虚拟机到主机的共享可用,主机到虚拟机的共享失效了。可能是由于我的 Wayfire 配置不正确。

但目前电脑是用于生产环境的,求稳不求新,而且平时几乎也没有休息时间,没空折腾,所以我暂时也不打算用 Wayland,但还是要感谢您的指点!

汇报一下目前的解决方案:今天趁着晚上有空,把虚拟机换成了 virt-manager,使用体验很好。此外,按照下面这篇文章的方法,实现了虚拟机与主机共享剪切板与文件夹。