VMware中的Ubuntu虚拟机中实现与windows宿主机的复制粘贴互通

背景

如果经常需要用到虚拟机的话,就肯定需要虚拟机和宿主机之前能够任意的交换数据,能够方便的无障碍复制粘贴

以前用windows虚拟机的时候,可以通过安装 VMware Tools 实现

但是在使用ubuntu 桌面版时,发现,无法安装 VMware Tools 或者 虽然通过其他方法安装了也还是无法做到无障碍的复制粘贴

这个问题一直困扰着我好久,终于在不懈努力之下,再往上找到了一个解决办法

环境

宿主机系统 VMware版本 虚拟机系统
Windows11 23H2 17.5.0 Ubuntu 22.04

以上环境为本人环境,用来参考,方便排错,并不是实现复制粘贴互通的要求

原因

之前安装 VMware Tools 之后仍然不能正常实现主机与Ubuntu之间的复制及文件拖拽的原因是,

从Ubuntu14.04开始,open-vm-tools 代替了官方的 VMware Tools,所以要重新安装新的 open-vm-tools

解决办法

卸载旧 VMware Tools

如果之前安装 VMware Tools,需要把 VMware Tools 卸载掉

方法自行解决

安装 open-vm-tools

sudo su - //进入到管理员模式
apt-get install open-vm-tools open-vm-tools-desktop //安装命令
vmware-user //开启服务

完成上述操作没有报错的,情况下,基本就可以实现无障碍复制粘贴了

关于 文件的传输,实际测试,拖拽文件还是无法实现的(不知道是什么原因),但是可以通过 复制粘贴 来传输文件。

所以基本解决了问题

注意:
虽然运行了 vmware-user 命令就可以正常复制粘贴了,但是也只能保证本次打开虚拟机有效
如果希望每次开机都能自动执行,可以考虑使用systemd服务来管理
systemd服务的其中一个类型是 oneshot,就是只需要执行一次的任务型服务,就非常适合目前的需求

编写service配置文件

# /etc/systemd/system/vmware-user.service
[Unit]
Description=开机启动一次vmware-user
After=network.target

[Service]
Type=oneshot
ExecStart=vmware-user

[Install]
WantedBy=multi-user.target

重新加载systemd配置

systemctl daemon-reload

设置开机自启

systemctl enable vmware-user

测试

重启系统后,检查任务是否完成

systemctl status vmware-user.service 
○ vmware-user.service - 开机启动一次vmware-user
     Loaded: loaded (/etc/systemd/system/vmware-user.service; enabled; vendor p>
     Active: inactive (dead) since Wed 2024-03-06 14:53:45 CST; 19s ago
    Process: 1138 ExecStart=vmware-user (code=exited, status=0/SUCCESS)
   Main PID: 1138 (code=exited, status=0/SUCCESS)
        CPU: 2ms

Mar 06 14:53:45 dev systemd[1]: Starting 开机启动一次vmware-user...
Mar 06 14:53:45 dev systemd[1]: vmware-user.service: Deactivated successfully.
Mar 06 14:53:45 dev systemd[1]: Finished 开机启动一次vmware-user.

可以看到退出状态为 (code=exited, status=0/SUCCESS) 表示成功退出

然后再测试与宿主机之间复制粘贴文本和文件,基本正常。

posted @ 2024-03-06 15:05  厚礼蝎  阅读(1337)  评论(0编辑  收藏  举报