在VMWare虚拟机里装Ubuntu,装完以后最影响日常体验的往往不是性能,而是剪贴板。默认状态下,你在宿主机里复制一段文字,切到虚拟机的终端里粘贴,绝大多数时候是空的;想传一个文件,要么先配置共享文件夹,要么把虚拟机转成模板再导来导去,非常别扭。标题里说的“Ubuntu系统在VMWare虚拟机中安装VMWare Tools”,跑通之后,至少能把两块最常用的能力恢复回来:双向复制粘贴文本,以及双向拖拽文件。甚至鼠标进出虚拟机窗口不再需要按键切换,窗口分辨率也能跟着宿主机窗口大小自动调整。这篇内容就围绕这个主题展开:为什么非装不可,官方镜像和open-vm-tools两条安装路线分别怎么操作,装完之后怎么把共享剪贴板开关打开,以及我实际踩过的一些坑。适合刚接触虚拟机的小白,也适合每次一升级内核VMWare Tools就“罢工”的老手。
1. 先搞清VMWare Tools解决了什么再动手
1.1 它到底干了哪些事
VMWare Tools并不是一个孤立的软件,而是一组驱动加常驻服务加命令行的集合体。驱动层面包括显卡驱动、鼠标驱动、网络虚拟化驱动、内存气球驱动、文件共享驱动等;服务层面包括vmtoolsd常驻进程,负责跟宿主机通信;命令行层面有vmware-toolbox-cmd、vmtoolsd这类工具,用来查询状态和调整时间同步等功能。
其中跟剪贴板直接相关的是“客户机隔离”通道。VMWare在设计虚拟化平台时,宿主机和虚拟机之间本身就存在一条私有通信通道,但虚拟机内部必须有一个客户端程序去监听这条通道。VMWare Tools就是那个客户端。不装它,通道就是“死”的,宿主机不知道虚拟机里发生了什么,虚拟机也不知道宿主机上保存了哪些内容,剪贴板自然同步不过去。装好之后,复制粘贴这个动作会带着文本内容、文件路径等元信息走这条通道,从一端传到另一端。
生活里类比一下:宿主机和虚拟机相当于两栋楼,VMWare Tools相当于两栋楼之间修好的专用管道。管道没修,快递员跑得再勤快也送不进去。所有关于“剪贴板共享为什么搞不定”的问题,八成出在管道没搭好上。
1.2 剪贴板共享为什么绕不开它
很多人不知道,VMWare Workstation和VMWare Player的界面里其实有现成开关,位置在“虚拟机 -> 设置 -> 选项 -> 客户机隔离”,里面有“启用复制粘贴”和“启用拖放”两个勾选项。但只改界面设置是没有用的,因为客户机隔离这条通道要工作,需要虚拟机里面有一个代理进程在跑,这个代理进程来自VMWare Tools。
对应到进程层面就是vmtoolsd。仔细看系统进程,Ubuntu Desktop装完VMWare Tools之后,会有一个/usr/bin/vmtoolsd进程带参数常驻。如果这个进程没启动,即使界面开关全部勾上,复制粘贴还是纹丝不动。判断一个虚拟机是否装好Tools,第一眼看的不是桌面右上角有没有那个VMWare的图标,而是这个进程是否活着。
另外还有一层:装完Tools之后,鼠标进出虚拟机就不需要按Ctrl+Alt了,这个功能虽然和剪贴板无关,但装好后体验提升非常明显。这也是为什么几乎所有虚拟化教程都会把“装Tools”列为装完系统后的第一步。
2. 动手前先做三个判断
2.1 宿主机、虚拟机软件与Ubuntu版本怎么匹配
先说最简单的判断:你的VMWare Workstation/Player是什么版本,你的Ubuntu是什么版本,这两个因素共同决定该选哪条安装路径。
VMWare Workstation 15、16、17对Ubuntu的支持情况不完全一样。老的Workstation 15如果跑Ubuntu 22.04或24.04,官方VMWare Tools镜像里带的模块源码可能编译不过,因为内核太新、工具太旧。反之,Workstation 17对近两年发行版的适配要好很多,但也不保证百分之百没问题。
Ubuntu这边还要细分:20.04、22.04、24.04这些版本之间差异很大,尤其是内核版本不同。22.04默认内核5.15,24.04默认内核6.8,内核一变,VMWare Tools里那几个内核模块的编译成功率就可能跟着变。
给一个我常用的判断表:
| 场景 | 推荐安装方式 | 原因 |
|---|---|---|
| Ubuntu桌面版,能联网 | open-vm-tools + open-vm-tools-desktop | 包管理器直接提供,跟随系统内核更新 |
| Ubuntu服务器版(无桌面),能联网 | open-vm-tools | 不需要桌面包,轻量够用 |
| 离线环境,手头有官方ISO | 官方VMWare Tools | 没有网络也能装,但要小心内核编译 |
| 老VMWare跑新Ubuntu | open-vm-tools优先 | 官方镜像里的模块源码很可能不适配 |
| 新VMWare跑老Ubuntu | 官方或open皆可 | 兼容性一般都没问题 |
2.2 官方VMWare Tools与open-vm-tools怎么选
这是动手前最需要想清楚的问题。官方VMWare Tools是VMWare随Workstation/Player一起发布的工具包,形态是一个ISO镜像,需要在虚拟机里手动找到、挂载、解压、执行安装脚本。open-vm-tools是开源社区维护的VMWare虚拟化驱动包,直接放在Ubuntu软件源里,一条apt命令就能装完。
两者功能上高度接近,都支持剪贴板、拖拽、共享文件夹、时间同步、分辨率自适应。区别主要在适配节奏上:
官方VMWare Tools跟随VMWare软件发版,Ubuntu内核更新后往往要等VMWare发新版本才同步适配。open-vm-tools由开源社区维护,会跟着Ubuntu的仓库持续更新,内核升级后适配速度明显更快。
用官方ISO安装还有个很常见的坑:安装过程中需要编译内核模块。系统里如果没装编译工具链、Linux头文件,脚本会报错,或者编译出来的模块加载失败。open-vm-tools则大多预编译好,对普通用户友好得多。
我的倾向很明确:只要虚拟机可以联网,优先装open-vm-tools。官方VMWare Tools留着作为离线环境或特殊兼容性场景的备选方案。
2.3 准备工作清单
安装之前花一分钟检查三件事,能省掉后面大量排查时间。
第一,确认虚拟机里跑的是桌面版还是服务器版。桌面版需要额外装open-vm-tools-desktop,服务器版只装open-vm-tools就够。剪贴板共享在纯命令行环境下没有意义,但服务器版如果之后会装桌面,建议把desktop包也一起装上。
第二,确认Ubuntu系统是否刚做完内核升级。如果刚升级过内核但还没重启,最好先重启一次再装VMWare Tools,避免安装在旧内核上、运行在新内核上的错位情况。
第三,确认能否联网。如果可以直接访问软件源,走open-vm-tools路线最省事;如果不能,就要准备官方ISO镜像,并且提前准备好Ubuntu对应版本的linux-headers包,否则编译环节大概率卡住。
提示:apt安装open-vm-tools前先执行一次sudo apt update,不然可能装到旧版本甚至提示找不到包。
3. 实操:用VMWare菜单挂载工具镜像安装
3.1 鼠标操作:先在主菜单里点击“安装VMWare Tools”
官方安装路径的第一步是让VMWare自动挂载一个虚拟光驱。操作方法很简单:在VMWare Workstation顶部菜单栏点击“虚拟机 -> 安装VMWare Tools”。如果你的虚拟机已经开了机,它会提示“安装VMWare Tools”,然后自动把安装镜像挂到虚拟机的光驱位置上。
有些场景下这个菜单项是灰色的,最常见原因是虚拟机没有开机,或者当前VMWare版本不支持。如果点不了,别在这里死磕,直接跳到第4部分用命令行装open-vm-tools,效果一样。
挂载成功后,Ubuntu桌面版可能会弹出一个文件管理器窗口,显示一个包含VMWareTools-xxx.tar.gz的目录。终端里也可以直接确认:lsblk看是否多了一个rom或cdrom设备,或者在/dev下能看到cdrom。
3.2 挂载光盘并解压安装包
Ubuntu默认不会自动挂载光盘到固定目录,需要自己动手。以下是完整命令序列:
# 创建挂载点并挂载光盘 sudo mkdir -p /mnt/cdrom sudo mount /dev/cdrom /mnt/cdrom # 查看ISO里有什么,确认文件名 ls /mnt/cdrom # 把安装包解压到临时目录,注意不要直接解压到挂载目录里 sudo tar zxf /mnt/cdrom/VMwareTools-*.tar.gz -C /tmp # 进入解压目录 cd /tmp/vmware-tools-distrib # 执行安装脚本;加-d表示接受所有默认配置 sudo ./vmware-install.pl -d这里的关键点是,tar解压时不要解压到挂载目录,因为光盘文件系统是只读的。解压到/tmp是一个合理选择,重启后如果没了也不影响,反正安装已经完成。
执行vmware-install.pl时,如果不加-d参数,脚本会一路问你各种路径和配置,回车键点几十次才能装完。加-d之后它会自动使用默认值,适合绝大多数场景。如果对默认路径有强迫症,也可以手动回车走完流程,但我实测下来默认值没有任何问题。
安装脚本运行过程中,只要系统里缺编译工具或内核头文件,就会立刻报错退出。这时候先去补齐依赖,再重新执行安装脚本:
sudo apt update sudo apt install -y build-essential linux-headers-$(uname -r)然后重新运行sudo ./vmware-install.pl -d,一般就能顺利走完。
3.3 安装完成后的重启与验证
安装脚本跑完不代表立刻生效。内核模块加载和vmtoolsd服务启动都需要系统重启一次,或者至少重启一下相关服务。
重启后验证这几个点:
# 查看vmtoolsd进程是否存在 ps -ef | grep vmtoolsd # 查看内核模块是否加载 lsmod | grep vmw # 查看工具版本,能输出版本号说明客户端通信正常 vmware-toolbox-cmd -v如果lsmod的输出里能看到vmw_vmci、vmxnet3、vmhgfs等模块,说明驱动层没大问题。vmtoolsd进程存在,说明客户机隔离通道的服务端已经跑起来。
这时可以切到VMWare窗口,在“虚拟机 -> 设置 -> 选项 -> 客户机隔离”里确认“启用复制粘贴”和“启用拖放”都勾选上,然后从宿主机复制一段文字试试,八成已经能用了。
提示:新装好的VMWare Tools默认没有把vmtoolsd设为开机自启的话,重启后剪切板又会失效。Ubuntu里open-vm-tools一般采用systemd管理,但官方ISO默认安装的tools服务随SysVinit,检查一下/etc/init.d目录下的vmware-tools服务是否被systemd正常接管。
4. 更省事的命令行一条龙安装法
4.1 直接安装open-vm-tools包
open-vm-tools的安装简单到让人怀疑是不是漏了什么。一条命令搞定:
sudo apt update sudo apt install -y open-vm-tools open-vm-tools-desktopUbuntu桌面版必须把open-vm-tools-desktop一起装上。前面说过,剪贴板和拖拽功能需要vmtoolsd以“用户态”方式跑起来,desktop包提供的就是这部分能力。只装open-vm-tools,服务器模式下服务本身没问题,但客户机隔离、剪贴板、拖拽这些桌面增强功能是没有的。
如果跑的是Ubuntu Server且不打算装桌面,只执行:
sudo apt install -y open-vm-tools就够了。少了desktop包,等于少了一个常驻进程,资源占用更干净。
装完之后不需要重启,但为了保险起见我一般还是会重启一次。原因很简单:vmw_vmci、vmxnet3等内核模块要在启动时加载,重启能省去手动modprobe的麻烦。
4.2 依赖管理与内核头文件
open-vm-tools的优势在于大部分模块都跟着内核编译好段,不太需要自己折腾编译工具链。但有一种情况例外:如果你的内核是从某个第三方源装的,或者定制过的,仓库里预编译的模块可能对不上,这种情况下就仍然需要linux-headers。
最稳妥的检查命令:
# 确认当前内核版本 uname -r # 看对应的头文件包是不是已经安装 dpkg -l | grep linux-headers-$(uname -r)如果输出为空,执行:
sudo apt install -y linux-headers-$(uname -r)一般Ubuntu官方内核源里都有对应版本的头文件,不需要额外配置第三方源。装好之后重新install open-vm-tools,或者直接执行sudo systemctl restart open-vm-tools.service,问题就能解决。
4.3 启动、自启与常用配置
open-vm-tools安装后会自动注册systemd服务,服务名是open-vm-tools.service,desktop包额外注册一个vmtoolsd用户服务。检查服务状态:
systemctl status open-vm-tools.service正常工作状态是active (running)。如果显示inactive,手动启动:
sudo systemctl enable --now open-vm-tools.servicedesktop包的用户服务一般不需要手动管理,它会在桌面会话启动时自动拉起。想确认的话:
ps -ef | grep vmtoolsd能看到一个不带路径的/usr/bin/vmtoolsd进程,就说明在跑。
常用配置里最实用的是时间同步。VMWare默认会把自己的时间同步给虚拟机,但Ubuntu里启用过systemd-timesyncd时两个时间源可能打架。查看当前状态:
vmware-toolbox-cmd timesync status如果显示Enabled,且虚拟机时间一直不对,可以关掉:
sudo vmware-toolbox-cmd timesync disable这个属于进阶操作,平时没痛感可以不管。
5. 装完把共享剪贴板打开并验证双向粘贴
5.1 虚拟机客户机隔离选项在哪儿
安装做完,还得把界面开关打开。路径是:在VMWare Workstation里选中当前虚拟机,点击“虚拟机 -> 设置”,切到“选项”标签页,找“客户机隔离”。里面有“启用复制粘贴”“启用拖放”两个选项,两个都勾上。
这里有个细节容易忽略:修改客户机隔离选项后,如果你用的是官方VMWare Tools,可能需要重启vmtoolsd服务才能让设置生效。用open-vm-tools-desktop的话,一般即时生效,但重启一次虚拟机更干净。
勾选完之后,VMWare会把配置写入虚拟机配置文件里,具体对应.vmx文件里的isolation.tools.copy.disable和isolation.tools.dnd.disable参数。正常状态下这两个参数应该是false或不存在。
5.2 从宿主机向虚拟机复制(验证步骤)
验证双向粘贴建议按这个顺序测:
第一步,在宿主机上复制一段带格式的文本(比如从浏览器里复制的段落),切到Ubuntu虚拟机里,用Ctrl+V粘贴到文本编辑器或终端里。能正常粘出来,说明通道通畅。
第二步,反过来在Ubuntu里复制文本或截图,到宿主机粘贴。这个方向经常被忽略,实际上方向不同走的逻辑略有差异,尤其是在Wayland会话下,反方向的同步偶尔会失效。
第三步,测试拖拽。从宿主机拖一个文件到Ubuntu桌面,再把Ubuntu里的文件拖到宿主机桌面。注意,拖拽和剪贴板共享虽然是两个开关,但底层都依赖同样的通道,如果复制粘贴通了但拖拽不通,多半是拖拽支持本身还没匹配上。
填一下预期结果和常见情况的关系表:
| 测试操作 | 成功标志 | 失败时优先排查项 |
|---|---|---|
| 宿主机复制 -> 虚拟机粘贴 | 文本出现在虚拟机内 | vmtoolsd进程是否存在 |
| 虚拟机复制 -> 宿主机粘贴 | 文本出现在宿主机 | 会话是Wayland还是Xorg |
| 宿主机拖文件到虚拟机 | 文件出现在虚拟机桌面 | “启用拖放”勾选状态、会话类型 |
| 虚拟机拖文件到宿主机 | 文件出现在宿主机桌面 | 文件大小、目录权限 |
5.3 Wayland下的剪贴板兼容情况
Ubuntu从21.10开始默认桌面会话变成了Wayland,22.04的默认登录界面也是Wayland。VMWare Tools对X11的剪贴板同步支持相当成熟,但对Wayland的支持就没那么完美。
具体症状是:安装了open-vm-tools-desktop,客户机隔离选项也勾上了,但剪贴板依然时灵时不灵。终端里复制粘贴可能正常,但图形应用之间复制就偶尔失效,尤其在虚拟机到宿主机这个方向上。
排查方法很简单,先看当前会话:
echo $XDG_SESSION_TYPE输出如果是wayland,可以考虑切回Xorg。方法是在Ubuntu登录界面点击用户名后,右下角或齿轮图标里选择“Ubuntu on Xorg”,再登录。切到Xorg后,剪贴板稳定度会有明显提升。
如果不想切换会话,也可以尝试升级VMWare到较新版本。VMWare 16.2和17对Wayland的适配比15好很多,很多用户反馈升级后Wayland下的剪贴板也基本可用了。但“基本可用”不等于完全稳定,重度依赖剪贴板跨系统复制的场景,我仍然建议用Xorg。
提示:Ubuntu 24.04的默认会话还是GNOME Wayland,如果发现装完tools后剪贴板始终不通,优先怀疑Wayland,别一上来就重装tools。
6. 高频故障排查台账
6.1 菜单里“安装VMWare Tools”是灰的
这个现象我在不少老版本上遇到过。一般有三个原因。
第一个是虚拟机没有开机,VMWare不允许对关机状态的虚拟机关联安装镜像,开机后再点就行。
第二个是VMWare Player或Workstation版本太旧,工具栏菜单里根本没有这个选项,或者对当前客户机系统类型不支持。
第三个比较隐蔽,是虚拟机已经通过其他方式挂过VMWare Tools ISO,菜单状态没刷新,重启VMWare界面或重新打开虚拟机设置即可恢复。
如果以上都无法解决,我的习惯是直接放弃官方菜单路径,改用open-vm-tools。命令安装不需要VMWare菜单,不受版本限制,而且通常比官方ISO更省心。
6.2 装完分辨率不能自动适应窗口
装完工具后,拖动VMWare窗口大小,Ubuntu桌面分辨率应该跟着变。如果没变,先做两个检查:
一,确认装了适合桌面环境的包。如果只有open-vm-tools而没有open-vm-tools-desktop,Xorg下没有video驱动,分辨率自适应就废了。用apt install open-vm-tools-desktop补上。
二,确认vmtoolsd进程在跑。分辨率自适应依赖vmtoolsd前台服务执行“调整窗口尺寸”的指令,进程挂了自然没反应。
命令行可以手动触发一下:
vmware-toolbox-cmd stat raw不过手动触发没有意义,关键是进程常驻。Ubuntu下看systemd日志:
journalctl -u open-vm-tools.service -n 20如果看到和VMCI相关的报错,通常是内核模块没加载。执行sudo modprobe vmw_vmci后重启服务再试。
6.3 文本能复制但文件拖不过去
文本能复制说明客户机隔离通道本身是通的,问题出在拖拽这个具体功能上。
第一步检查“启用拖放”是否真的勾上了。有人只勾了“启用复制粘贴”,拖拽开关还是关闭状态,那自然拖不过去。
第二步检查会话类型。Wayland下拖拽支持非常不稳定,文件拖到虚拟机偶尔能成功,从虚拟机往宿主机拖大概率失败。临时切到Xorg登录会话,再试一次。
第三步考虑文件类型和大小。特别大的文件、文件夹拖拽容易超时,即使Tools工作正常,也不如共享文件夹稳定。有条件就用VMWare共享文件夹。
配置共享文件夹的路径也很简单:虚拟机 -> 设置 -> 选项 -> 共享文件夹 -> 勾选“总是启用”,添加一个宿主机目录。在Ubuntu里会自动挂载到/mnt/hgfs。相比拖拽,共享文件夹处理大文件要靠谱得多。
6.4 内核升级后VMWare Tools失效
这是最恼人的问题。Ubuntu升级内核后,原来编译好的内核模块跟新内核不匹配,vmtoolsd还在跑,但底层的vmw_vmci、vmxnet3等模块加载失败,剪贴板、拖拽、共享文件夹全部罢工。
官方VMWare Tools的内核模块一般以源码形式存在,升级内核后需要重新执行vmware-install.pl重新编译。操作:
cd /tmp/vmware-tools-distrib sudo ./vmware-install.pl -dopen-vm-tools在Ubuntu仓库里是预编译模块,内核升级后一般会随新内核发布适配版本。所以升级内核后应优先执行:
sudo apt update sudo apt upgrade open-vm-tools open-vm-tools-desktop然后重启虚拟机。如果还是没有恢复,先检查:
lsmod | grep vmw没有任何vmw开头的模块,说明模块编译/加载失败,需要安装对应版本linux-headers再重装open-vm-tools。
这也是我推荐open-vm-tools的重要原因之一:它跟系统仓库同步,新内核发布当天往往就有可用版本,官方ISO则要等VMWare发新版,这个时间差有时候长达几个月。
6.5 剪贴板偶尔失效、重启后失效
有些人的VMWare Tools装好后能通,但重启机器后剪贴板又挂了,或者用一段时间就突然失效。
先检查vmtoolsd是否变成僵尸进程:
ps -ef | grep vmtoolsd如果进程还在,尝试重启服务:
sudo systemctl restart open-vm-tools.service如果进程都挂了,看是不是桌面环境没有启动open-vm-tools-desktop。Ubuntu 22.04和24.04有时会因为Wayland会话和用户服务的冲突,导致vmtoolsd桌面进程没有被拉起。
这时可以手动启动,但更建议在桌面环境中检查用户级服务:
systemctl --user status vmtoolsd或者干脆重新登录一次桌面。绝大多数情况重新登录后就能恢复。根治办法是前面提到的切Xorg,稳定度会高很多。
7. 一些省时间的操作心得
先分享一个顺序问题。装Ubuntu系统的时候,很多人一装完就开始折腾软件源、装开发工具,等发现剪贴板不好用才回头装Tools。我的建议是装完系统后第一时间就装好工具,越早越好。原因很简单:装完工具后可以顺畅复制粘贴命令到终端,配置软件源、装环境的时候能省掉大量手敲命令的时间。
第二个心得是,不要在一棵树上吊死。官方VMWare Tools安装脚本在很多老教程里被描述成“唯一标准”,其实对于现代Ubuntu,open-vm-tools才是更顺的路线。我装过Ubuntu 22.04、24.04的虚拟机,用open-vm-tools从没遇到过编译失败的问题,官方ISO反而经常在“检测系统内核设备”那一步卡住。
第三,出现剪贴板不生效时,先看进程再看会话,不要上来就重装。vmtoolsd在跑、客户机隔离勾了、会话是Xorg,这三个条件同时满足时,剪贴板几乎不会出问题。按这个顺序排查,比无脑重装效率高得多。最后再提醒一句:Ubuntu升级内核后顺手跑一遍sudo apt upgrade,把open-vm-tools升到最新,能避开大部分新一轮的内核适配问题。