摘要:在 Ubuntu 虚拟机中安装 open-vm-tools 后,Windows 与 Ubuntu 之间的复制粘贴功能可能仍然失效。本文提供一种无需卸载重装的解决方案:通过手动启动用户态 vmtoolsd 进程恢复剪贴板共享,并创建 systemd 用户服务实现开机自启,彻底解决复制粘贴问题。

注意:首先确保 Ubuntu 已存在 open-vm-tools 和 open-vm-tools-desktop 两个工具,再进行下面的步骤。

一、解决不能 Windows 与 Ubuntu 之间内容的复制粘贴

1、杀掉可能残留的进程,让桌面组件重新加载

sudo killall -q vmtoolsd

2、重启open-vm-tools主服务器

sudo systemctl restart open-vm-tools

3、检查open-vm-tools主服务器状态

sudo systemctl status open-vm-tools

如果看到 active (running) 且没有红色的 FAILED 或 error 字样,说明 open-vm-tools 服务器运行正常。

4、使用ps命令查询vmtoolsd进程是否在运行。

ps aux | grep vmtoolsd

执行命令之后,应该会看到两个进程,一个 root,一个 zysk,用户名这个进程就是桌面剪切板组件。

下图是我输入命令之后的输出,从图中可以看出只有一个 root 进程在运行,没有用户态的 vmtoolsd 进程,所以就导致复制粘贴用不了。

5、在终端执行下面命令,就会输出下面图片的内容。

/usr/bin/vmtoolsd -n vmusr

打开一个新的终端重新输入ps aux | grep vmtoolsd命令,就会输出下图内容,可以看到现在已经存在两个vmtoolsd进程,一个是 root 用户,一个 zysk 用户,所以现在就可以测试复制粘贴功能了。

6、当前终端不要关闭,重新打开一个终端或者文本文件,测试 Windows 与 Ubuntu 之间的内容复制粘贴。如果可以复制粘贴,下面的步骤就是设置每次系统重启自动加载这个进程,不用每次手动去运行这个进程。

二、解决系统重启自动加载桌面剪切板组件,执行下面操作时,需要将执行 /usr/bin/vmtoolsd -n vmusr 命令的终端进程退出,防止输入下面命令出现报错。

1、创建用户级systemd服务目录(如果不存在),输入下面命令

mkdir -p ~/.config/systemd/user

2、创建服务器文件

vim ~/.config/systemd/user/vmtoolsd-user.service

3、在vmtoolsd-user.service文件中输入以下内容之后保存退出。

[Unit]
Description=VMware Tools User Service (Clipboard/DnD)
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/vmtoolsd -n vmusr
Restart=always
RestartSec=3

[Install]
WantedBy=default.target

4、重新加载用户级systemd配置,输入下面命令

systemctl --user daemon-reload

5、启用服务(开机自启),输入下面命令

systemctl --user enable vmtoolsd-user.service

6、立即启动服务,输入下面命令

systemctl --user start vmtoolsd-user.service

7、检查服务状态,输入下面命令,如果看到 active (running) 且没有红色的 FAILED 或 error 字样,说明 vmtoolsd-user.service 服务器运行正常。

systemctl --user status vmtoolsd-user.service

8、重新使用ps命令查看进程,输入下面命令,可以看到有两个vmtoolsd进程在运行。

ps aux | grep vmtoolsd

9、重启Ubuntu,输入下面命令

sudo reboot

10、重启完成之后就可以验证 Windows 与 Ubuntu 之间内容的复制粘贴功能了。

至此,Ubuntu 安装 open-vm-tools 和 open-vm-tools-desktop 后,Windows 与 Ubuntu 之间还是不能复制粘贴的问题已得到解决。感谢我可爱帅气的铁子们,有误的地方欢迎铁子们提出来,发在评论区。

更多推荐