今天咱们聊一个Linux运维里挺常见的问题——VMware Tools安装。但凡你在VMware Workstation或ESXi上跑过Linux虚拟机,十有八九会遇到这么个情况:装完系统发现屏幕分辨率不对、鼠标没法自由拖拽、复制粘贴根本用不了,这些都是VMware Tools没装或者没装好的信号。说白了,VMware Tools就是虚拟机跟宿主机之间的“翻译官”,没了它,俩系统根本不认识。
安装前必须确认的基础环境
开始动手之前,有几件事得先捋清楚。首先你得确定当前Linux系统挂了VMware Tools的光盘镜像。在VMware菜单栏找到“虚拟机”->“安装VMware Tools”,这个操作会虚拟插入一张光盘。如果点完没反应,可能是系统没识别,这时候手动把ISO文件挂上——ISO文件一般在VMware安装目录下的linux.iso里linux操作系统,位置别搞混了。

其次要注意系统版本。老一点的CentOS 6或者Ubuntu 14.04自带open-vm-tools,但新版系统比如Ubuntu 22.04、Rocky Linux 9其实更推荐用open-vm-tools。不过如果公司强制要求用官方VMware Tools,那还是得走传统路线。我的建议是:先看系统有没有预装open-vm-tools,有的话直接卸载干净,不然装官方Tools会打架。
还有一点很多人忽略:内核开发包要提前装好。VMware Tools编译依赖kernel-devel、gcc、make这些包linux虚拟机,缺了任何一个都会报错。用yum或apt先把这些东西补齐,比如CentOS上跑yum install -y kernel-devel gcc make perl,Ubuntu上跑apt install -y linux-headers-$(uname -r) build-essential。这一步卡住的人最多,千万别跳过。
安装过程中最常踩的三个坑

第一个坑就是权限问题。很多人挂载ISO后直接双击运行linux vmware tools安装,结果提示“Permission denied”。正确的做法是挂载到/mnt/cdrom,然后cd进去,用root权限执行。挂载命令是mount /dev/cdrom /mnt/cdrom,如果提示找不到设备,检查一下虚拟机设置里CD/DVD驱动器的连接状态是不是“已连接”。
第二个坑是编译内核模块时报错。有时候系统内核升过级,但kernel-devel还是老版本,这就会导致编译失败。解决办法是重新安装对应版本的kernel-devel:uname -r看一下当前内核版本,然后yum安装同版本的devel包。如果还不行,试试重启进新内核再编译。
第三个坑是图形界面卡死。有些桌面环境比如GNOME或者KDE在安装Tools过程中会弹出交互式对话框,让你选分辨率、确认配置之类的。如果你是通过SSH远程操作的,压根看不到这个界面,安装进程就会挂在那里不动。这时候要么在虚拟机的控制台窗口操作,要么用默认配置跳过交互:在解压后的目录里执行./vmware-install.pl -d,这个-d参数会自动接受所有默认选项。
安装完成后如何验证是否成功

装完不是万事大吉,得检查一下到底跑没跑起来。最简单的办法是执行vmware-toolbox-cmd stat text,如果返回了类似“Guest operating system is running VMware Tools version 12345”的信息,说明服务正常。或者直接看进程:ps aux | grep vmwarelinux vmware tools安装,能看到vmtoolsd进程在跑就行。
分辨率问题也能验证。如果你的Linux桌面能自适应窗口大小,拖拽时鼠标不会卡死在虚拟机里,那基本稳了。如果还是不行,试着重启虚拟机或者手动调整一下显示设置。有些发行版装完Tools后需要重新启动X窗口服务,图形界面才能生效。
还有一个隐藏的验证点:看日志。VMware Tools的日志在/var/log/vmware-vmtoolsd-root.log里,如果里面出现“error”或者“failed”,说明有组件没加载成功。常见的原因是内核模块不匹配,需要重新编译。
不同Linux发行版的安装差异

CentOS/RHEL系列和Ubuntu/Debian系列安装VMware Tools的流程大同小异,但有几个细节要注意。CentOS 7以上的系统默认防火墙规则可能会阻挡Tools的某些通信端口,比如902端口,得放行一下。Ubuntu系统则要注意AppArmor会不会干扰,有时候需要把相关配置文件改一下。
老一点的系统比如CentOS 6,它的包管理器里没有open-vm-tools,只能用官方Tools。但CentOS 8之后就变了,官方推荐直接用open-vm-tools,因为集成度更高,更新也及时。如果你用open-vm-tools,只需一条命令:yum install open-vm-tools,然后systemctl enable --now vmtoolsd就完事,省心不少。
还有一个容易被忽略的情况:如果你用的是VMware ESXi管理的虚拟机,装完Tools后最好在vSphere客户端里手动刷新一下状态,虚拟机的IP地址、主机名那些信息才能同步过去。有时候Tools装好了但控制台里显示“未安装”,重装一下或者重启服务就能解决。
遇到难题时的备用方案
万一官方Tools怎么都装不上,别死磕,换open-vm-tools试试。绝大多数功能包括拖拽文件、剪贴板共享、时间同步都支持。安装命令也简单:Ubuntu上apt install open-vm-tools open-vm-tools-desktop,CentOS上yum install open-vm-tools open-vm-tools-desktop。装完后重启虚拟机就行。
另一个备用方案是手动编译。从VMware官网下载最新版的VMware Tools源码包,解压后手工编译。但这方法对操作水平有要求,适合内核版本特别奇葩或者生产环境不允许动包管理器的场景。编译命令顺序一般是./configure、make、make install,注意看编译输出有没有报错。
如果连open-vm-tools都不行,那得怀疑是不是VMware版本和Linux内核版本差太多。比如VMware Workstation 12跑Linux内核6.x,Tools驱动可能不支持。这时候要么升级VMware到最新版,要么降级Linux内核。生产环境里优先升级VMware,因为降内核风险太大。
