简介:这套工具集由VMware官方提供,是适用于Ubuntu及其他Linux发行版的VMware Tools 10.3.2安装包,构建编号9925305,面向在VMware Workstation/ESXi等平台使用虚拟机的运维人员与开发者。安装后可显著提升虚拟硬件性能、图形显示、鼠标切换与文件共享体验,尤其适合需要改善虚拟机卡顿、分辨率异常或无法拖放文件的场景;同时可解决时钟漂移与电源联动问题。压缩包约52.92MB,内含1491个文件,以.o目标文件、.so动态库、.properties配置、.symvers符号表及shell脚本为主,并包含vmware-tools-distrib目录与vmware-install-tools.pl安装脚本,整体结构完整,便于直接部署。目前已有1433人学习下载。借助该工具包,用户可完成内核模块加载、3D图形加速、共享剪贴板、拖放传输及电源联动等配置,让Ubuntu虚拟机获得接近物理主机的操作体验。
1. 先搞清楚手里这个 tar 包到底是什么
1.1 VMware Tools 10.3.2 解决了什么问题
拿到VMwareTools-10.3.2-9925305.tar这个名字,第一反应是:这不就是一个压缩包吗,解压然后就装呗。很多人会直接tar -zxvf,结果报错,然后开始怀疑人生。这个文件其实是在 vSphere 或 Workstation 里给 Linux 虚拟机安装 VMware Tools 用的标准安装包,里面的核心是vmware-tools-distrib目录,装着安装脚本、内核模块源码、驱动二进制、以及一系列辅助工具。
10.3.2 这个版本发布于 2020 年左右,对应的是当时主流 ESXi 6.7/7.0 和 Workstation/Player 15.x。如果你手头还有跑着老系统的虚拟机,比如 CentOS 7、Ubuntu 18.04、Debian 9,这个版本装上去完全没问题。VMware Tools 干了什么?表面看是让虚拟机支持剪贴板互通、鼠标无缝进出、窗口分辨率自适应、拖拽文件,深层看是安装了一套虚拟化驱动,包括网络、显示、鼠标、内存管理模块,这些模块直接决定了虚拟机在宿主上的运行效率和稳定性。很多人觉得"装不装无所谓",直到发现拷贝大文件速度上不去、屏幕分辨率固定 800x600、vCenter 里看不到 IP 地址和资源状态,才意识到这东西还真不能少。
1.2 为什么官方 Linux 版要打包成 tar
Windows 版的 VMware Tools 是一个.exe安装程序,双击就完事。Linux 世界不太一样,发行版太多,依赖库、内核版本、包管理器千差万别,官方直接给你一个通用的 tar 包,让你到目标机器上去编译、去适配。这个 tar 包没有用 gzip 二次压缩,后缀就是.tar,说明它只是归档,不是压缩包,所以内部文件结构是完整的,权限也保留了。
因此,解压时必须保证当前用户有权限写入目标目录,并且不会丢失可执行权限。我一般习惯用 root 执行或者 sudo 解压到/tmp或者/root。还有一个容易被忽略的点:tar 包里的安装脚本vmware-install.pl是 Perl 脚本,依赖 Perl 解释器和一堆编译工具;如果系统是精简安装,没有装perl、gcc、make、linux-headers,就算解压成功,安装也会卡在半路。这不是 tar 的锅,但很多人会误以为是解压或安装包坏了,其实宿主环境没准备好。
2. 解压 VMwareTools 之前,这些 tar 命令容易踩坑
2.1 看到 .tar 就加 -z,这是最常见的翻车现场
很多人在解压时会顺手打出tar -zxvf VMwareTools-10.3.2-9925305.tar,结果终端直接输出:
gzip: stdin: not in gzip format tar: Child returned status 1 tar: Error is not recoverable: exiting now这个报错的含义很简单:你告诉 tar "这是一个 gzip 压缩文件,先解压再解开归档",但文件本身只是普通归档,没有经过 gzip 压缩,gzip 程序读到的头不对,于是罢工。正确的命令是:
tar -xvf VMwareTools-10.3.2-9925305.tar-z参数对应 gzip 压缩,-j对应 bzip2,-J对应 xz。文件后缀名就是最直观的信号:.tar用-xvf,.tar.gz或.tgz用-zxvf,.tar.xz用-Jxvf。我见过不少同事在批量安装时,因为图省事统一复制一条带-z的命令,结果在.tar文件上反复翻车。
2.2 解压前先看看包里面有什么
拿到一个来路不明或者不熟悉的 tar 包,最稳妥的操作不是直接解压,而是先列出内容清单:
tar -tf VMwareTools-10.3.2-9925305.tar-t是 list 模式,只查看归档里的文件名和目录结构,不会真正释放文件。这样你能立刻确认是不是你要的那个安装包、顶层目录叫什么、体积大概多大。尤其是接手别人的服务器,不确定这个包是不是带恶意脚本,先看内容再决定解不解压,是个好习惯。VMware 官方包顶层目录通常是vmware-tools-distrib/,如果看到的是一个完全陌生的顶层目录,你就要警惕了。
如果想解压到指定目录,用-C参数:
tar -xvf VMwareTools-10.3.2-9925305.tar -C /tmp/这样会把vmware-tools-distrib解压到/tmp/vmware-tools-distrib,而不是在当前目录里完全铺开。安装完再清理也方便。
2.3 理解 tar -zcvf、-zxvf、-tf 和管道玩法
热词里出现了tar -zcvf和tar -zxvf,这两个是平时最常用的。-c是创建归档,-v是显示过程,-f指定归档文件名。组合起来:
tar -zcvf backup.tar.gz /home/user/data/意思是把/home/user/data/目录打成backup.tar.gz,先归档再用 gzip 压缩。-x是展开,-z先解压再还原。而tar -tf只是查看,不落地。
还有一个容易被忽略的组合:tar -xvf archive.tar -C /path和tar -cvf archive.tar file1 file2之间的灵活搭配。热词里还有tar|xargs,常用于批量解压多个包后对文件做后续处理:
ls *.tar | xargs -I {} tar -xf {}你也可以在解压后直接管道处理,比如把解压日志通过grep过滤掉无用的权限告警。这个后面会专门讲。
3. 从 tar 包到能用的 VMware Tools,完整安装链路
3.1 挂载 Tools 镜像,把 tar 包弄进虚拟机
在虚拟机管理界面里,右键虚拟机,选择Install VMware Tools(或者 Guest -> Install/Upgrade VMware Tools),这个操作会在虚拟光驱里挂载一个linux.iso或类似镜像。然后进到系统里:
mount /dev/cdrom /mnt cp /mnt/VMwareTools-10.3.2-9925305.tar /tmp/如果提示mount: no medium found,说明镜像没有挂载成功,去 VM 设置里确认 CD/DVD 设备状态,或者执行mount /dev/sr0 /mnt。有些系统把光驱识别成/dev/sr0而不一定是/dev/cdrom,可以lsblk看一下。
很多教程会建议直接在/mnt下解压,但我建议先复制到/tmp。因为安装过程中会去读解压出来的文件,如果光驱偶尔出现 I/O 问题,安装会中断;复制到本地磁盘更稳。复制完记得umount /mnt,把光驱释放掉,否则虚拟机的 CD/DVD 一直被占用。
3.2 解压和安装脚本的两种姿势
进入/tmp后:
tar -xvf VMwareTools-10.3.2-9925305.tar cd vmware-tools-distrib/ ./vmware-install.pl脚本会逐个问你安装路径、是否启用某些特性,一路回车就按默认来。如果不想交互式回答,可以加-d:
./vmware-install.pl -d-d是 default 模式,所有选项都用默认值。批量部署时非常有用。安装过程会先编译内核模块,再安装 vmware-tools-services、vmware-tools-daemon、vmware-toolbox-cmd 等组件。整个过程耗时取决于系统性能和是否有编译缓存,一般三到五分钟。
成功后脚本会提示Enjoy your vmware-tools,这时最好reboot一次,确保模块正确加载。不要偷懒不重启,内核模块加载顺序这个东西,靠服务 restart 有时候会漏。
3.3 安装依赖与内核模块编译的细节
这条链路最容易卡住的是编译内核模块。vmware-install.pl 会把几个内核模块——vmxnet3、vmw_balloon、vmw_vmci 等——针对当前运行的内核重新编译,所以系统里必须存在:
gcc make perl linux-headers-$(uname -r)CentOS 系执行:
yum install -y gcc make perl kernel-develUbuntu/Debian 系执行:
apt-get install -y gcc make perl linux-headers-$(uname -r)有个坑值得单独提:如果你升级过内核,重启进了新内核,那/lib/modules/$(uname -r)/build指向的头文件目录必须和当前内核完全匹配。很多人的机器只装了老版本的 kernel-devel,新内核编译时提示找不到build目录。解决办法就是先确认当前内核版本,再装对应版本的 headers,再重新跑安装脚本。如果不想重新跑整个安装,可以只执行vmware-config-tools.pl重新配置并编译模块。
4. 安装过程中最常见的报错与排查链路
4.1 一次真实的编译失败排查
我之前帮一台 CentOS 7.6 虚拟机装 Tools,执行./vmware-install.pl -d之后,屏幕滚了几行长日志,最后报:
Failed to compile module vmw_balloon!粗看像是内核模块源码有问题,但 VMware 官方包一般不会犯这种低级错误。我先把日志里的错误行抓出来:
tail -100 /tmp/vmware-root/vmware-install*.log看到关键提示:gcc: error: unrecognized command-line option ‘-fno-stack-protector-strong’。这个选项太新了,系统自带的 GCC 4.8 不认识。根本原因是 GCC 版本太老,而模块源码用了新版编译选项。解决办法不是手动改源码,而是把 GCC 升级到高版本,或者用 devtoolset 套装切换到新版 gcc。那次我装了devtoolset-8,然后用高版本 gcc 重新执行vmware-config-tools.pl,问题消失。
这类问题给你的启发是:遇到编译报错,先看日志,日志里往往直接写了根因。别盲目搜网上"复制粘贴"的解决方案,很多方案针对的是完全不同的内核版本。
4.2 几个高频报错的定位路径
| 报错信息 | 根因 | 解决办法 |
|---|---|---|
gzip: stdin: not in gzip format | 用-z解普通.tar包 | 把-z去掉 |
The path "" is not valid | 默认安装路径下已有残留或权限不足 | 清理旧版本,换 root 执行 |
Please re-run this program as root | 当前用户没有 root 权限 | sudo 运行 |
Your kernel was built with gcc version X, but you are using gcc version Y | 内核编译工具链和当前 gcc 不一致 | 安装匹配版本的 gcc 或用 CC 指定 |
searching for a valid kernel header path... not found | 缺少 linux-headers | 安装对应版本 kernel-devel/headers |
Unable to restart vmware-tools-services | 服务脚本权限或 systemd 单元冲突 | 查看服务状态systemctl status vmware-tools |
注意,第 1 个报错和第 5 个报错在不同阶段出现,但都常见。第 5 个报错很多人以为是 tar 包解压不完整,其实根本原因是uname -r对应的 headers 没装。用ls /usr/src/kernels/看看到底有哪些内核源码,然后对比一下当前uname -r,一目了然。
4.3 日志文件和清理残留
VMware Tools 安装日志默认写在/tmp/vmware-root/,里面有vmware-install*.log和vmware-modconfig*.log。排查问题第一件事就是看这些日志,别靠猜。日志里会明确记录每一步执行结果,包括 kernel header 探测、gcc 版本、编译命令和失败行。
另外,失败的安装会在系统里留下半成品。比如/usr/lib/vmware-tools、/etc/vmware-tools、/etc/init.d/vmware-tools等。重新安装之前,最好先把旧的卸载干净:
vmware-install.pl -u如果卸载脚本也因为依赖问题跑不动,可以直接删除关键目录和/etc/vmware-tools下的配置文件,再重新解压安装。但这种方式要谨慎,别删了系统自带的库。老手一般会先把/etc/vmware-tools备份,再动手清理。
5. VMware Tools 装完后,怎么确认它真的在工作
5.1 常用验证命令清单
安装完并重启后,先跑几个命令确认状态:
vmware-toolbox-cmd -v vmware-toolbox-cmd stat speed vmware-toolbox-cmd stat hosttime第一个命令输出版本号,比如10.3.2.9925305 (build-9925305);第二个命令查看虚拟网卡速度;第三个命令和宿主机时间同步。如果第一个命令提示找不到,多半是没装vmware-toolbox,或者安装时选择了不装该组件。
还可以看看内核模块是否加载:
lsmod | grep vmw正常情况下能看到vmw_balloon、vmw_vmci、vmxnet3之类的模块。记住,如果你用的是较新内核,官方老版本 Tools 的模块可能在新内核里已经合并,加载情况可能不太一样。此时用vmware-toolbox-cmd -v依然是最直接的验证方式。
5.2 剪贴板、拖拽和分辨率自适应的设置
很多用户裝完 Tools 发现剪贴板还是不互通,原因在于虚拟机设置里没开启对应能力。在 Workstation 里,VM > Settings > Options > Guest Isolation,要勾选 Enable copy and paste 和 Enable drag and drop。在 vCenter 里,类似的 Guest Operating System Mismatch 或 Isolation 设置也要打开。Tools 只是提供了底层接口,配置不打开就不会生效。
分辨率自适应这块,装了 Tools 后宿主机窗口变化,虚拟机分辨率应能自动匹配。如果不行,检查/etc/vmware-tools下的配置,或者手动执行:
vmware-resolution-set 1920 10805.3 老机器和老版本的取舍:要不要换 open-vm-tools
聊完 10.3.2 的安装,得认真说一句大实话:如果你用的 Linux 发行版是 CentOS 7+、Ubuntu 16.04+、Debian 8+,官方仓库里已经有open-vm-tools,大概率不需要再手动解压这个 tar 包。open-vm-tools 是 VMware Tools 的开源版本,由 VMware 维护,直接通过系统包管理器安装,和系统的整合度更好,也不用手动编译内核模块。
yum install -y open-vm-tools # 或 apt-get install -y open-vm-tools为什么还要保留这份 10.3.2 的 tar 包?因为有些等保要求、离线环境、特殊定制的旧内核,必须使用官方闭源或者特定版本驱动的环境里,tar 包安装依然是兜底方案。两种方式不要混装,先卸载其中一个再装另一个,否则vmware-toolbox-cmd和vmtoolsd的服务会互相冲突。我个人经验是:能用 open-vm-tools 就用 open-vm-tools,tar 包只留给特殊场景。
6. 顺手把 tar 命令这几招也记牢
6.1 压缩、解压、排除、提取单文件
因为这篇文章标题就是 tar 包,热词里也全是 tar 相关,我顺手把平时最高频的几个场景过一遍。
创建 tar.gz:
tar -zcvf project_backup.tar.gz /home/project/解压到指定目录:
tar -zxvf project_backup.tar.gz -C /tmp/restore/排除不需要的目录,比如 node_modules 和 .git:
tar -zcvf project_backup.tar.gz /home/project/ \ --exclude=/home/project/node_modules \ --exclude=/home/project/.git--exclude可以写在 create 和 x 两个模式中。解压时排除特定文件,用法类似:
tar -zxvf project_backup.tar.gz --exclude='*.log' -C /tmp/restore/只提取包里的单个文件:
tar -zxvf project_backup.tar.gz home/project/README.md注意这个路径必须和压缩包里的路径一致,必要的时候先tar -tf看路径结构。
6.2 tar 配合 xargs 批量操作
热词里有个tar|xargs,实际场景非常常见:你有一堆 tar 包,想逐个解压后进入解压目录执行某条命令。比如:
ls *.tar | xargs -I {} tar -xf {}更复杂的批量处理,比如解压所有 tar.gz 后,删除解压目录里的.class文件:
ls *.tar.gz | xargs -I {} sh -c 'tar -zxf "{}" && find . -name "*.class" -delete'xargs 的-I指定占位符,这样每次替换成实际文件名。要注意的是,文件名如果带空格,最好用-print0配合xargs -0,否则会按空格切分。不过.tar包一般名字比较干净,这个坑遇到再说。
6.3 关于 tar 包安全性的几个提醒
最后提醒三件事。
一,不要盲目解压来路不明的 tar 包。tar 包里的文件如果带着../../tmp/xxx这种路径,解压时会写入你意想不到的位置,这就是所谓的 tar 路径穿越。解压前先用tar -tf看一下是否有异常路径。为了避免这类问题,也可以加参数:
tar -xzf archive.tar.gz --no-same-owner --no-same-permissions在共享环境中,这能避免把别人包里的属主和权限直接覆盖到你的系统。
二,解压时尽量使用-C指定目录,而不是在当前目录直接铺开。这样清理时直接删目录就行,不会污染你的工作目录。我见过有人tar -xvf解压后,当前目录多出几十个文件,追悔莫及。
三,tar 包不是越新越好。VMware Tools 这种纯 tar 归档,20 MB 可能就是完整版;但如果一个号称是"VMware Tools"的 tar 包体积只有几十 KB,那你应该警惕它是不是伪装成安装包的脚本。用tar -tf看目录结构、用file命令看文件类型,两步就能筛掉大部分异常。
拿这个 10.3.2 的包多折腾几次,tar 命令基本就熟了大半。我自己踩过的最大教训就是:别看见.tar就加z,也别在自己不熟悉的系统上一路回车装完就跑,安装日志和版本验证,这两步永远省不得。
本文还有配套的精品资源,点击获取