VMware里装Ubuntu,装好系统之后的第一件事是什么?很多人第一反应是更新软件源、装输入法、调字体,但真正用过虚拟机的人都明白,第一件事应该是把VMware Tools装好,否则鼠标一进虚拟机就“锁死”,按Ctrl+Alt才能逃出来,窗口分辨率永远固定在1024x768或者800x600,复制粘贴文件、调剪贴板全是奢望。这篇文章就来完整聊一聊Ubuntu下安装VMware Tools这件事,把两种安装路线、坑点、报错处理、以及新版VMware的兼容性问题一次性讲透。适合所有在VMware Workstation或ESXi里跑Ubuntu的同学参考,不管你是刚入门的虚拟机新手,还是踩过几次坑想彻底搞明白“为什么别人装得上、我装不上”的老手,这篇都值得看完。
1. VMware Tools到底在解决什么问题
1.1 没装Tools的虚拟机有多难受
先把一个很多人忽略的问题说清楚:虚拟机的系统和宿主机之间是有一层隔离的,鼠标、剪贴板、显示分辨率、文件拖放这些事情,并不是天然就能丝滑互通。如果你正在用VMware运行Ubuntu,并且没装VMware Tools,最常见的反馈就三句话:鼠标出不来、分辨率调不对、复制粘贴用不了。
鼠标出不来,本质上是虚拟显卡和输入设备的驱动缺失,导致鼠标事件被虚拟机捕获后没法自动释放。分辨率调不对,是因为虚拟显卡驱动没有动态感知宿主机的显示区域。而复制粘贴和拖放文件,属于“客户机隔离”功能的一部分,它需要虚拟机内部有对应的Agent进程在跑,这个Agent就是VMware Tools的核心组件之一。
这个体验差异有多大?举个例子,装了Tools之后,虚拟机窗口大小一变,Ubuntu桌面会自动调整分辨率,鼠标可以不按Ctrl+Alt就直接在宿主机和虚拟机之间来回移动,宿主机里的文字和文件可以直接拖进虚拟机里,复制粘贴双向互通。没装的时候,这些功能统统没有。所以很多教程说“VMware Tools让Ubuntu变成可用的桌面环境”,不是夸张,是事实。
1.2 从技术原理看Tools到底做了什么
VMware Tools并不是一个单一程序,而是一组模块的集合,可以从两个层面理解。
第一层面是内核模块。VMware Tools(以及开源版open-vm-tools)会向Linux内核加载一些虚拟化相关的驱动模块,比如vmxnet3网卡驱动、vmw_balloon内存气球驱动、vmw_pvscsi存储驱动、vmwgfx显示驱动等。这些驱动的作用是让虚拟机里的Ubuntu能直接使用VMware虚拟化层提供的硬件能力,而不是靠低效的软件模拟。你可以把虚拟机想象成一个“模拟出来的电脑”,但这些驱动让操作系统知道自己跑在模拟器里,并且告诉它“怎么用这些虚拟硬件最快”。
第二层面是用户态服务。安装完成后系统里会多一个叫vmtoolsd的服务,它在后台运行,负责宿主机和虚拟机之间的通信,比如剪贴板同步、拖放文件、分辨率自适应、时间同步这些功能都靠这个守护进程来实现。桌面版还会额外用到一些图形相关的组件来对接X Window或者Wayland。
把这两个层面放一起,其实就解释了为什么服务端Ubuntu和桌面版Ubuntu需要安装的东西不完全一样:纯服务器只需要内核模块和基本的vmtoolsd,桌面版还需要桌面整合组件。搞清楚这个原理,后面选包、排错就有方向了,不会瞎试。
2. 动手前先分清:传统VMware Tools和open-vm-tools
2.1 两种形态的来龙去脉
很多人会卡在第一步:打开VMware菜单,点“安装VMware Tools”,结果没什么反应;或者弹出一个提示框,写着“vmware tools is no longer shipped with vmware workstation for this guest operating system”。这个提示翻译过来就是:当前VMware版本不再为这个客户机系统提供传统的VMware Tools安装包了。这其实是新版VMware Workstation 16/17在遇到新版Ubuntu(尤其是20.04及以后)时的常规行为。
原因很简单。早期VMware Tools主要以闭源二进制包的形式分发,VMware会针对不同Linux发行版做适配,然后打包成ISO镜像挂载给虚拟机。后来VMware把Tools的大部分组件开源了,这就有了open-vm-tools,并且open-vm-tools被Linux发行版官方仓库收录。现在你在Ubuntu里执行apt install open-vm-tools,装的就是开源版。它和传统VMware Tools的功能基本一致,而且随着Linux内核迭代同步更新,兼容性反而更好。
对新版Ubuntu来说,VMware官方认为系统仓库里已经有open-vm-tools了,再往虚拟机里塞一个古老的tar.gz安装包,反而容易出兼容问题。所以新版VMware对某些操作系统不再提供“安装VMware Tools”菜单项,或者在执行时给出提示。这个变化坑了很多人——习惯性地去挂载ISO,结果光盘里什么都没有,或者直接弹报错。
2.2 该装哪一个:一张决策表
以我的个人经验,判断方法可以这样:
| 场景 | 推荐安装方式 |
|---|---|
| Ubuntu 18.04及以后,无论是桌面版还是服务器版 | 优先用apt安装open-vm-tools,桌面版额外装open-vm-tools-desktop |
| 宿主机是VMware Workstation 16/17,安装菜单显示不再提供传统Tools | 直接用open-vm-tools,不要再挂载ISO |
| 宿主机是VMware ESXi,客户机里没有软件源访问条件 | 用传统VMware Tools或预先下载deb包 |
| 老版本VMware Workstation,菜单里有“安装VMware Tools”且ISO可用 | 可以手动安装传统Tools,但建议同样优先尝试apt方式 |
| Ubuntu 16.04及更老版本,且open-vm-tools无法正常使用 | 手动安装传统VMware Tools |
判断当前系统是否需要传统方式,可以看一眼VMware菜单:如果“安装VMware Tools”是灰色不可点的,或者点了之后提示不再提供,那就直接放弃传统路线。如果菜单正常可点、挂载出来的CD里有VMwareTools-开头的tar.gz文件,那说明你的环境还支持传统安装。另外注意,即使你手动把传统Tools装上了,系统里可能会同时存在open-vm-tools的包,两者功能重叠,容易引起服务冲突。所以建议二选一,不要混装。
3. 推荐路线:用apt安装open-vm-tools
3.1 三条命令搞定基础安装
对于绝大多数现代Ubuntu系统,我强烈推荐使用open-vm-tools,因为它在软件源里长期维护,和内核版本的兼容性最好,安装也最简单:
sudo apt update sudo apt install open-vm-tools open-vm-tools-desktop -y如果你是Ubuntu桌面版,一定要把open-vm-tools-desktop也装上。这个包包含了桌面环境集成组件,负责剪贴板、拖放、分辨率自适应等图形界面的功能。如果只装open-vm-tools,服务端够用,桌面版的功能会缺一大块。如果跑的是纯服务器Ubuntu,只装open-vm-tools就可以了。
安装完成后,建议重启一次虚拟机,或者手动启动服务:
sudo systemctl restart vmtoolsd.service sudo systemctl enable vmtoolsd.service实际上apt安装open-vm-tools后,服务通常会自动设置为开机自启动,不用太操心。重启之后,再用下面命令确认安装是否完整:
systemctl status vmtoolsd.service看到active (running)就说明核心服务在跑。再执行vmware-toolbox-cmd -v,能输出版本号,说明命令行工具也可以正常使用。如果这两项都正常,那么鼠标释放、动态分辨率、剪贴板共享这些基础功能基本就能用了。
3.2 桌面版功能生效的几个隐藏前提
曾经有朋友跟我反馈,说装了open-vm-tools-desktop,重启后拖放文件还是不行。这个问题的根源往往不在工具包本身,而在虚拟机设置。VMware的客户机隔离选项默认是开着的,但如果被手动关掉,或者安装系统时用的自定义配置里禁用了“拖放”和“复制粘贴”,光装软件也白搭。
检查方式:VMware菜单 -> 虚拟机设置 -> 选项 -> 客户机隔离。把“启用拖放”和“启用复制粘贴”都勾上。这步做完,再在虚拟机里重新登录一次桌面会话,基本就正常了。
还有一个容易被忽略的点:Wayland。Ubuntu 22.04及之后版本默认使用Wayland显示服务器,而VMware的桌面集成组件对Wayland的支持不如Xorg那么彻底。如果你装了Tools但发现剪贴板同步失效或者拖放文件时灵时不灵,可以切回Xorg会话试试——在登录界面选择Ubuntu on Xorg,然后重新登录。根据我的实测,切到Xorg之后,绝大多数桌面集成问题都能解决。
4. 老路线也不淘汰:手动安装传统VMware Tools
4.1 从菜单到ISO挂载的完整操作
虽然apt方式简单,但有些老环境、离线环境、或者ESXi下的特殊需求,还是得走传统安装流程。这里我把步骤写细一点,照着做基本不会出错。
第一步,在VMware菜单栏点“虚拟机”->“安装VMware Tools”。如果之前安装过,这里会显示“重新安装VMware Tools”。此时VMware会尝试把VMware Tools的ISO镜像挂载到客户机的光驱里,这一步是“手动安装”的触发条件。
第二步,在Ubuntu里等几秒钟,让系统识别并自动挂载CD-ROM。正常情况下,桌面版Ubuntu会自动把光驱挂载到/media/用户名/VMware Tools目录下。如果没有自动挂载,就手动执行:
sudo mkdir -p /mnt/cdrom sudo mount /dev/cdrom /mnt/cdrom挂载后,在/media/你的用户名/VMware Tools或/mnt/cdrom目录下应该能看到一个VMwareTools-10.x.x-xxxxxx.tar.gz的文件。第三步,把这个压缩包复制到一个方便操作的目录并解压:
cp /media/用户名/VMware\ Tools/VMwareTools-*.tar.gz /tmp/ cd /tmp tar -zxvf VMwareTools-*.tar.gz第四步,进入解压出来的目录,用root权限运行安装脚本:
cd vmware-tools-distrib sudo ./vmware-install.pl接下来安装脚本会问一堆问题,比如“Do you want to install the VMware Tools shared folders module?”、“Do you want to change the default timeout?”之类,如果没有特殊需求,全程按回车使用默认选项即可。等待编译和安装结束后,重启虚拟机让内核模块生效。
4.2 关于“继续运行脚本未能在虚拟机中成功运行”的说明
很多人在传统安装过程中会看到VMware弹出的错误提示:VMware Tools继续运行脚本未能在虚拟机中成功运行。第一次遇到这个提示的人很容易慌,以为安装失败了。实际根据我的经验,这句话的出现有两种情况。
第一种是安装过程中编译内核模块失败,脚本没有完整执行完,所以VMware客户端检测到Tools状态异常,弹出这个提示。这种情况需要去虚拟机的终端里看报错日志,常见原因是缺少gcc、make、linux-headers等编译依赖。解决办法是先用apt把依赖补齐:
sudo apt install build-essential linux-headers-$(uname -r)然后重新运行vmware-install.pl。
第二种情况很有意思:使用open-vm-tools时,VMware菜单里仍可能弹出这个提示,但这种情况下虚拟机里的实际功能是正常的,因为open-vm-tools的组件和VMware的检测脚本不完全对接。如果你是通过apt装Tools并且系统功能正常,那么这个提示可以直接忽略,或者去VMware的“虚拟机设置”里把Tools的“更新策略”调成手动,避免频繁弹窗。
4.3 编译失败后的排查思路
手动安装传统Tools最烦的就是编译报错。常见报错信息包括“Unable to find the kernel source”。这意味着系统里没有安装当前内核的头文件包。Ubuntu下最稳妥的解法是精确安装对应版本的内核头文件:
sudo apt install linux-headers-$(uname -r)装完之后再看/usr/src目录,里面应该会出现linux-headers-当前内核版本号之类的目录。如果安装脚本还是找不到,可以手动指定路径,一般就是/usr/src/linux-headers-$(uname -r)。另一个坑是Ubuntu默认使用的是gcc的新版本,但VMware Tools的旧安装包工具链比较老,有低概率出现编译不支持的情况。遇到这种兼容性问题,我的建议是及早放弃传统工具,直接切换回open-vm-tools——花时间跟旧脚本搏斗,性价比太低。
5. 安装完成后的那些琐碎配置
5.1 共享文件夹挂载与自动挂载
Tools装好之后,如果想要宿主机和Ubuntu之间通过文件夹共享文件,还需要简单配置。在VMware的“虚拟机设置”->“选项”->“共享文件夹”里,启用共享并添加一个宿主机目录。共享文件夹名称建议不要带空格,否则后续挂载命令容易出问题。
然后在Ubuntu里执行命令查看共享文件夹是否被识别:
vmware-hgfsclient如果输出了你设置的共享名称,说明虚拟机和宿主机已经打通了。接下来需要手动挂载它。新版open-vm-tools普遍使用fuse方式:
sudo mkdir /mnt/hgfs sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o uid=1000这里如果只有一个共享文件夹,也可以写成vmhgfs-fuse .host:/共享名称 /mnt/hgfs。为了让重启后依然生效,可以编辑/etc/fstab:
.host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,defaults 0 0还有一种情况是系统里找不到vmhgfs-fuse命令,这通常是因为没装open-vm-tools-desktop,或者装的是精简版Open VM Tools。桌面版用户需要补装:
sudo apt install open-vm-tools-desktop5.2 时间同步与硬件预设置
VMware Tools另一个容易被忽略的功能是时间同步。打开VMware Workstation的“虚拟机设置”->“选项”->“VMware Tools”,建议勾选“时间同步”。这样虚拟机操作系统的时钟会定期和宿主机同步。特别是当宿主机休眠或睡眠之后,虚拟机的时钟经常会出现明显漂移,装了Tools并开启时间同步能省掉很多麻烦。
还要顺带提一个虚拟硬件层面的建议:安装Ubuntu时虚拟机的网络适配器尽量选择VMXNET 3。虽然默认的e1000兼容性更好,但在量产和性能要求高的场景里,VMXNET 3是半虚拟化网卡,网络吞吐和CPU占用都要好不少。这个选择只有在系统里已经有对应驱动模块(vmxnet3)时才能发挥最大效果,而VMware Tools刚好会补充这类驱动。同理,存储控制器选PVSCSI,磁盘性能在重IO场景下表现更稳定。这些属于“装Tools顺手还能干的事”。
6. 常见问题与排查技巧实录
6.1 高频报错速查表
把这几年最常见的几个问题和解决思路整理成一张表,遇到问题直接对照着查:
| 问题现象 | 常见原因 | 解决方案 |
|---|---|---|
| 安装VMware Tools菜单是灰色的 | VMware判断当前系统不再支持传统Tools | 改用apt安装open-vm-tools |
| 提示vmware tools is no longer shipped with vmware workstation for this guest operating system | 新版VMware对较新Ubuntu不再提供传统Tools | 忽略提示,使用open-vm-tools |
| 弹出VMware Tools继续运行脚本未能成功运行 | 编译依赖缺失或脚本未正常执行完 | 安装build-essential和linux-headers后重跑脚本;或用open-vm-tools |
| 安装完成但鼠标释放不出来 | 内核模块没加载或服务没启动 | 检查vmtoolsd服务状态,重启虚拟机 |
| 剪贴板或拖放功能失效 | 客户机隔离未开启,或Wayland会话兼容性问题 | 勾选客户机隔离的拖放/复制粘贴;切换Xorg会话 |
| 共享文件夹看不到 | 共享目录未启用/未挂载,或缺少vmhgfs-fuse | 检查vmware-hgfsclient输出,用vmhgfs-fuse挂载 |
| 内核升级后Tools功能失效 | 内核模块与新版内核不匹配 | 使用open-vm-tools(随内核自动更新)或重装传统Tools |
| 手动安装脚本编译时找不到内核源码 | 未安装linux-headers | apt install linux-headers-$(uname -r) |
6.2 几个容易误判的细节
排查问题的时候,几个细节很容易被漏掉。
第一个是vmtoolsd进程是否有权限正常运行桌面集成组件。如果你习惯用sudo或root用户登录桌面,偶尔会遇到部分组件服务异常。更推荐在普通用户会话下使用,权限问题最少。
第二个是Ubuntu里同时升级内核和Tools的时机。open-vm-tools之所以省心,是因为它作为deb包会随着内核升级自动适配,只要定期apt upgrade就好。传统VMware Tools则不同,内核升级后经常需要重新运行vmware-install.pl来编译新模块,很多人忘记这一步,导致某次重启后工具突然失效。
第三个是检测驱动是否真的生效,可以查看内核模块列表:
lsmod | grep vmw正常情况下,你会看到vmw_balloon、vmnet、vmw_vmci这样一堆模块。如果安装完重启后一个都看不到,说明内核模块没有编译成功,功能自然也就无从谈起。
第四个坑来自Ubuntu 24.04。这个版本里某些桌面组件和Wayland的整合更激进,open-vm-tools-desktop在个别会话下兼容性一般。如果你在24.04上装了Tools后桌面仍然不跟手,可以检查是不是会话选成了Wayland,切换到Xorg再试一次。我已经不是第一次被这个问题折腾了,后来干脆在安装系统时就直接把显示管理器固定成Xorg,省心。
6.3 关于“装了但仍不生效”的终极兜底方案
如果所有方法都试过了,Tools还是没生效,我的建议是别硬刚,用最朴素的重装大法:先彻底卸载再重装。
sudo apt remove --purge open-vm-tools open-vm-tools-desktop -y sudo apt autoremove -y sudo reboot sudo apt update sudo apt install open-vm-tools open-vm-tools-desktop -y sudo reboot这个方法可以解决90%的“装了但没反应”案例,原因是可以清除掉之前半吊子状态留下的配置文件和损坏模块。如果你系统里同时装过传统VMware Tools和open-vm-tools,建议先把传统卸载干净,再走上面流程。
我个人这些年折腾下来的体会是,新版Ubuntu + 新版VMware的组合下,官方仓库的open-vm-tools几乎就是唯一推荐,传统VMware Tools已经渐渐退出历史舞台了。只要你理解了vmtoolsd、内核模块、客户机隔离这三个核心点,遇到问题基本都能自己推出来原因。
最后再分享一个实用小技巧:装好Tools之后,在虚拟机里跑一下vmware-toolbox-cmd -v确认版本号,再顺手查看vmware-toolbox-cmd stat hosttime是否输出宿主机时间,如果这个输出正常,说明宿主机和客户机之间的通讯链路完全通畅,后续的拖放、剪贴板、共享文件夹就都会稳定。把这个验证动作养成习惯,能帮你少踩不少暗坑。