VMware Tools tar包安装实战:从解压到内核模块编译全流程 📅 发布时间:2026/9/8 7:17:57 👁 浏览次数: 简介VMware Tools 10.0.6-3595377.tar 是面向 Linux 虚拟机的 VMware Tools 离线安装包适用于 VMware Workstation、vSphere 等虚拟化场景帮助运维人员与虚拟化初学者解决虚拟机性能偏低、剪贴板/拖放不可用、分辨率不自适应、时间漂移等常见问题。包体共 3197 个文件压缩后约 68.99MB文件构成以 2135 个 .o 目标文件、211 个 .so 动态库、292 个 .properties 配置和 194 个 .symvers 符号版本文件为主辅以 .sh 安装脚本、.xml/.xsd 描述文件及 vmmouse_detect、hal-probe-vmmouse 等驱动探测工具覆盖编译、链接、安装和硬件识别多个环节这种结构既便于直接使用也便于排查依赖异常。目前已有 571 人浏览学习尤其适合在线安装失败、网络受限或需要离线交付的内网环境。解压后目录结构清晰完整既可直接编译安装也可作为剖析 VMware Tools 模块组成与安装流程的参考配合官方文档还可掌握性能优化、共享剪贴板、分辨率自适应、ISO 挂载、电源管理等功能的配置思路对虚拟化环境日常维护与故障排除有较高实用价值。 手头上这个VMwareTools-10.0.6-3595377.tar光看名字就知道是VMware Tools的Linux安装包。把它放进Ubuntu虚拟机以后很多人第一反应是挂载光驱、直接运行安装脚本结果往往卡在内核头文件报错上。这篇文章就从拿到tar包开始把解压、编译、配置、排查这整条链路讲透顺便把tar命令的几个高频用法一起理清楚。适合正在折腾VMware Workstation或者ESXi虚拟机、又不想依赖系统自带的open-vm-tools的人参考。先澄清一个容易踩的小坑。标题里写的是.tar但真实从VMware官网或者ISO里拿到的文件绝大多数是VMwareTools-10.0.6-3595377.tar.gz。Linux社区习惯把tar.gz也简称为tar包如果浏览器或者某些脚本把后缀里的.gz吞掉了不影响后面的操作。这篇文章按最常见的tar.gz场景来讲其实流程和纯tar包完全一样。1. 装之前先搞清VMware Tools到底解决了什么问题1.1 不装VMware Tools虚拟机等于“半残”VMware Tools本质上是运行在客户机里的一组驱动和守护进程主要解决三件事图形和鼠标体验、网络与磁盘性能、以及“宿主和客户机之间的数据交换”。装上之后SVGA驱动能把屏幕分辨率自动适配窗口大小vmxnet3网卡能明显降低网络延迟鼠标在宿主和虚拟机之间切换不用再按CtrlAlt剪贴板和拖拽文件功能才能启用。尤其在使用共享文件夹HGFS的时候没有VMware Tools几乎等于没有这条路。有些人觉得“我没装也能用”那是因为VMware Workstation提供了VESA兼容驱动和普通IDE/SATA/NVMe控制器系统可以运行但性能和功能都被限制得很明显。想象一下买了一台配置很好的电脑却装了一个没有显卡驱动的系统。VMware Tools就是给虚拟机补上这层驱动。1.2 为什么还要手动装tar包不直接用自动安装VMware在Workstation和vSphere客户控制台里都提供了“安装VMware Tools”按钮点击后会自动挂载一个ISO镜像。但自动挂载不等于自动安装Linux发行版千差万别VMware没法保证一条命令解决所有问题。手动下载tar包的方式更适合以下几种场景一是服务器版本没有图形界面自动执行时常常半路卡住二是客户机处于内网环境没法在线安装系统自带的open-vm-tools或相关依赖三是某些老版本ESXi和较新的Ubuntu内核之间存在兼容问题需要用官方对应版本的VMware Tools包来编译模块。另外tar包是官方发布的标准Linux安装介质可以随便拷贝、离线分发也可以在一个机器上解压后手工调整目录灵活性比ISO双击安装高得多。手动装还有一个隐性好处你能看到每一步编译日志真出问题时排查路径更清晰。2. 环境准备缺依赖比缺包更让人头大2.1 编译安装需要哪些基础依赖VMware Tools的安装过程不是简单的解压拷贝它会针对当前内核编译内核模块所以很多报错都出在“工具链不完整”。我在Ubuntu上装之前一定会先确认这几个组件存在gcc、make、perl还有最重要的linux-headers-$(uname -r)。组件作用Ubuntu安装命令gcc用来编译内核模块sudo apt install gccmake构建过程中调用sudo apt install makeperl运行vmware-install.pl脚本sudo apt install perllinux-headers-$(uname -r)提供与当前内核匹配的头文件sudo apt install linux-headers-$(uname -r)build-essential包含gcc/make等组合工具sudo apt install build-essential如果想省事直接一条sudo apt install build-essential perl linux-headers-$(uname -r)就能把绝大多数Ubuntu环境垫好底。别小看这个准备步骤我见过太多人解压完包执行vmware-install.pl后立刻报错然后才发现缺了make或者头文件。2.2 内核头文件版本必须和当前内核一致这是VMware Tools安装最经典的一个坑。虚拟机开机后如果执行过系统内核升级但是没有重启弹出的内核还是会停留在旧版本而/usr/src下的头文件也许已经是新内核的。安装脚本搜索头文件时会根据uname -r输出去找对应目录版本对不上自然找不到。动手前建议先跑三行命令uname -r ls /usr/src/linux-headers-$(uname -r) dpkg -l | grep linux-headers如果/usr/src/linux-headers-$(uname -r)目录不存在说明头文件没装上或者版本不对先执行sudo apt update再安装。如果你的机器之前换过内核最好是先重启到最新内核再装VMware Tools避免装好的模块和后续内核不匹配导致断断续续出问题。3. 从解压到安装VMwareTools tar包的完整落地流程3.1 挂载ISO并取出tar包在VMware Workstation里先给虚拟机执行“虚拟机 安装VMware Tools”。如果是vSphere Web Client就右键虚拟机在“客户机操作系统”菜单里选“安装VMware Tools”。这一步会把官方ISO挂到虚拟光驱上。进入Ubuntu后执行下面的命令挂载mkdir -p /mnt/cdrom sudo mount -t iso9660 /dev/cdrom /mnt/cdrom ls /mnt/cdrom如果系统里cdrom设备不在/dev/cdrom可以用lsblk看一下通常会是/dev/sr0。挂载完能看到类似VMwareTools-10.0.6-3595377.tar.gz的文件。这里有个经验先在 /tmp 下新建目录把安装包拷贝过去再解压别直接在只读挂载点上操作。原因是安装脚本会在当前目录生成不少临时文件挂在ISO上会直接报只读文件系统错误。mkdir -p /tmp/vmtools cp /mnt/cdrom/VMwareTools-10.0.6-3595377.tar.gz /tmp/vmtools/ cd /tmp/vmtools3.2 解压时特别注意顶层目录拷贝完成后解压tar -zxvf VMwareTools-10.0.6-3595377.tar.gz解压完你会看到一个目录vmware-tools-distrib这才是真正的安装主体里面是vmware-install.pl脚本。如果解压时不想把文件散到当前目录可以指定-C参数。很多老手会顺手用--strip-components1去掉顶层目录mkdir -p /opt/vmware-tools tar -zxvf VMwareTools-10.0.6-3595377.tar.gz --strip-components1 -C /opt/vmware-tools--strip-components1的意思是解压时去掉路径中第一层目录这样/opt/vmware-tools下面直接就是vmware-install.pl。但我的习惯还是保留原来的vmware-tools-distrib目录结构因为官方卸载脚本会按这个目录推断安装路径擅自改变目录层级虽然能装后续排查和卸载容易出幺蛾子。3.3 运行vmware-install.pl的参数选择进入解压目录开始正式安装cd vmware-tools-distrib sudo ./vmware-install.pl脚本会问一系列问题从“选择安装目录”到“是否启用HGFS共享文件夹”大多数情况直接按回车使用默认值就行。如果不耐烦看一堆交互可以加-d参数sudo ./vmware-install.pl -d-d表示使用默认值自动安装这在批量部署或者远程排查时很省事。但要注意-d不会帮你解决底层依赖缺gcc、缺头文件它照样卡住。安装脚本会在最后编译内核模块这个过程会输出大量编译日志稍有耐心等它跑完。装完后不要急着关虚拟机建议执行一次配置sudo vmware-config-tools.pl这个命令会重新配置X图形界面、共享文件夹等模块。如果嫌麻烦直接重启虚拟机也行但多跑一次配置能减少很多后患。验证版本的命令是vmware-toolbox-cmd -v看到版本号就说明Tools核心已经就位。再用ps -ef | grep vmtoolsd确认守护进程存在整个过程就算结束了。4. tar命令实战进阶别只会用-zxvf4.1 zxvf、zcvf、czvf到底有什么区别解压看tar -zxvf压缩用tar -zcvf大部分人的习惯是这样。但很多人看到tar -czvf会懵这跟-zcvf不是一样吗确实一样。z表示gzipc表示创建归档x表示解压v表示显示过程f表示指定文件名。参数顺序基本不敏感关键在于c和x是互斥动作同时出现一定是你命令写错了。# 解压.tar.gz tar -zxvf VMwareTools-10.0.6-3595377.tar.gz # 压缩一个目录成.tar.gz tar -zcvf mybackup.tar.gz /home/user/data # 解压纯tar包 tar -xvf VMwareTools-10.0.6-3595377.tar还有一个细节f后面必须紧跟归档文件名最好放在参数最后否则容易把tar后续的路径参数当成文件名。很多新手跑tar -vzxf没问题但tar -fzxc这种组合就直接报错了。4.2 tar包常见操作查看、提取单个文件、去除顶层目录实际运维中比解压整个包更常用的是“只看不拆”和“单点提取”。查看tar包里的文件列表tar -ztvf VMwareTools-10.0.6-3595377.tar.gz | grep vmware-install.pl-t是列出内容配合grep能快速确认脚本在不在、目录结构长什么样。如果想从包里只拉出一个文件tar -zxvf VMwareTools-10.0.6-3595377.tar.gz vmware-tools-distrib/vmware-install.pl注意要写tar包内部的完整相对路径。提取某个子目录同理把路径写成vmware-tools-distrib/bin就行。这类操作在需要紧急修复时能救命比如包很大、你只想拿一个配置文件不用把整个包解开。--strip-components前面已经提过它在部署场景里很实用。比如把安装包解压到指定目录并去掉二级路径tar -zxvf someapp.tar.gz --strip-components2 -C /opt/someapp这种“剥目录”的做法通常是为了让解压结果直接和预期目录结构对齐省得手工挪文件。4.3 解压乱码的常见处理思路很多在Windows下打包的tar包文件名编码可能是GBKLinux默认按UTF-8处理解压后就出现一串“乱码”。VMware Tools包一般不会这样但日常在服务器上折腾别的tar包时很容易遇到。我的处理顺序是先用bsdtar试一次它能指定读取编码sudo apt install libarchive-tools bsdtar --optionsread_convgbk -xf somefile.tar.gz如果已经解压乱了就用convmv批量转换文件名sudo apt install convmv convmv -f gbk -t utf-8 -r --notest 乱码目录--notest是真正执行重命名不加它只会预览。这两个方案覆盖了大多数情况剩下的极端字符集问题就得写Python脚本逐个处理了。5. 常见问题与排查实战中踩过的坑5.1 kernel header not found是最常见的翻车点装VMware Tools时最经典的一句话是“Searching for a valid kernel header path...”然后安装程序就退出或者一直搜不到。原因无非两件事头文件包没装或者头文件版本和当前内核不一致。排查命令uname -r ls /usr/src dpkg -l | grep linux-headers解决方案也很直接sudo apt update sudo apt install --reinstall linux-headers-$(uname -r) build-essential如果你确认头文件都在但安装脚本还是找不到可以在脚本提示时手动输入路径通常填/usr/src/linux-headers-$(uname -r)。老版本的内核头文件有时还需要做一个软链接sudo ln -s /usr/src/linux-headers-$(uname -r) /usr/src/linux这里要提醒一句如果虚拟机跑的是云镜像或者定制内核标准头文件可能根本装不上那就不建议硬磕tar包方案直接用open-vm-tools更省心。5.2 装完共享文件夹和剪贴板还是不可用安装成功但功能不对这个问题更隐蔽。现象是vmware-hgfsclient能列出共享目录但/mnt/hgfs下什么都没有。先确认模块是否加载lsmod | grep vmhgfs如果没加载新版系统上优先尝试FUSE方式挂载sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o uid1000老版本系统则用sudo mount -t vmhgfs .host:/ /mnt/hgfs想让系统重启后自动挂载可以在/etc/fstab加一行.host:/ /mnt/hgfs fuse.vmhgfs-fuse defaults,allow_other 0 0剪贴板失效通常和vmtoolsd进程有关确认一下服务状态ps -ef | grep vmtoolsd如果没有进程尝试/etc/init.d/vmware-tools start。实在不行就重启虚拟机让驱动和守护进程完整初始化。5.3 服务状态检查与彻底卸载技巧做完安装如果怀疑有问题检查命令再贴一遍vmware-toolbox-cmd -v看版本/etc/init.d/vmware-tools status看服务状态。想卸掉后重装一定用官方卸载脚本sudo /usr/bin/vmware-uninstall-tools.pl如果之前系统里已经有open-vm-tools手动装tar包前最好先卸载避免两个包互相抢模块sudo apt remove open-vm-tools open-vm-tools-desktop编译模块失败留下的残骸用vmware-modconfig --console --install-all可以尝试重新编译别急着手动删/usr/lib/vmware-tools。手动清理一时爽后患无穷尤其是删掉了一些软链接之后系统可能连网络驱动都一起丢了。最后再说一点个人体会。我在一台Ubuntu 16.04虚拟机里装过10.0.6这个版本当时卡在内核头文件上搞了半宿最后发现只是升级内核后没重启。后来只要系统比较新我都优先用open-vm-tools但碰上内网离线环境或者老版本ESXi官方tar包依然是绕不开的方案。两个小建议安装前先对虚拟机打快照出问题一键回滚如果目标机器没有软件源下载安装包时把依赖的deb文件也一起带进去离线装能少跑很多趟。tar包的活宜细不宜急多看日志、多备份基本不会有太大问题。本文还有配套的精品资源点击获取