VMware Tools手动安装全攻略:老版本tar包安装、避坑与迁移实践

发布时间:2026/10/14 12:12:08
VMware Tools手动安装全攻略:老版本tar包安装、避坑与迁移实践 简介面向 Linux 虚拟机的 VMware Tools 10.0.6 离线安装包适合在 VMware Workstation 或 vSphere 环境中因在线安装失败、网络受限而需要手动部署工具的用户。包内共 3197 个文件以 .o 内核模块对象、.so 动态链接库和 .properties 配置为主同时包含 .conf、.xml、.sh 脚本及设备规则等辅助内容压缩后约 68.99MB整体结构便于在隔离环境内核对驱动与依赖。这一版本可用作多发行版 Linux 的通用离线来源省去重复联网下载的等待也便于保留固定版本用于生产环境验证。当前已有 581 人学习下载。安装后可获得磁盘与网络 I/O 优化、图形加速、时间同步、复制粘贴与拖放、分辨率自适应、设备驱动支持和电源管理等能力明显改善虚拟机的交互体验和运行效率。对经常搭建 Linux 虚拟机或维护虚拟化环境的用户这套离线资源既能用于常规部署也可在网络受限时作为排错和补装工具的备选方案。1. 老版本 VMware Tools 手动安装为什么装好系统后第一件事还是它装完虚拟机里的 Linux你大概率会遇到三个现象分辨率卡在 800x600、宿主机和虚拟机之间拖不动文件、共享文件夹怎么都挂不上。很多人以为是系统问题折腾半天显卡驱动其实真正缺的是 VMwareTools-10.0.6-3595377.tar 这个安装包里对应的服务组件。这个老版本 tar 包是 VMware 虚拟化平台早期提供给 Linux 虚拟机的 Tools 安装介质作用是补齐虚拟硬件驱动、共享文件夹、拖拽、分辨率自适应和时间同步这些基础能力。它解决的痛点是“系统能跑但很难用”。适合的场景是你的发行版没有预装 open-vm-tools、虚拟机模板里没带 Tools、或者因为安全策略必须用平台分发的原版安装包手动安装。本文要讲清楚这个包的结构、安装前的环境检查、完整的编译安装步骤、老版本常见的坑以及现在还值不值得继续用。2. 安装前检查清单内核头文件、编译链与这个 tar 包里到底有什么2.1 打开压缩包先看结构很多人在这一步就开始踩坑。拿到 VMwareTools-10.0.6-3595377.tar 后直接解压发现里面有一堆 .o 文件、.c 文件和 perl 脚本分不清哪个是安装入口。这个版本的 tar 包解压后是一个以 vmware-tools-distrib 命名的目录里面大致有这几类东西安装引导脚本、内核模块源码、用户态服务程序、配置文件模板和卸载脚本。我先说一个习惯动作不要直接运行包根目录下看起来像安装程序的脚本而是先列出内容确认版本和入口。常见做法是解压后先看目录名和文件清单。mkdir -p /tmp/vmware-tools-src tar -xzf VMwareTools-10.0.6-3595377.tar -C /tmp/vmware-tools-src ls -la /tmp/vmware-tools-src/vmware-tools-distrib这里把安装包解压到 /tmp 下的独立目录避免污染当前工作目录。tar -xzf的z表示处理 gzip 压缩这个包虽然扩展名是 .tar但通常内部是 gzip 压缩的。解压后重点看vmware-install.pl这个 perl 脚本它是整个安装流程的总入口后面所有编译和配置都由它调度。目录里还有lib/、modules/和bin/分别对应共享库、可加载内核模块源码和用户态工具源码。这一步的意义在于确认你拿到的是一个完整的源码分发包而不是预编译好的二进制包。从 10.0.x 这个时期起Linux 版 Tools 基本都是现场编译所以你的虚拟机里必须具备完整的编译环境否则装到一半会以失败告终。2.2 需要提前确认的四项环境检查老版本 Tools 的安装逻辑是先探测当前内核版本再在模块源码目录里挑对应的头文件路径然后用你系统里的 gcc 把内核模块编译出来。任何一个环节缺失安装脚本都会在中途退出。这个版本已经是黑匣子式检测它不会告诉你具体缺了什么只会抛出一句“无法找到内核头文件”然后终止。所以我的建议是在解压安装包之前先把下面四项检查做完。不要等到编译报错再来排查。uname -r ls /usr/src/kernels/$(uname -r) gcc --version perl -v第一行输出当前运行的内核版本第二行确认这个版本对应的内核头文件源码目录存在。在 RHEL 系发行版上内核头文件通常安装在/usr/src/kernels/下某个发行版可能放在/usr/src/linux-headers-$(uname -r)这取决于你的发行版打包习惯。关键是uname -r的版本号必须和头文件目录名一致花括号展开后能定位到目录才算通过。第三行检查 gcc 是否可用老版本 tools 对 gcc 版本有要求过新的编译器大概率在编译时报隐式函数声明错误这个放到后面避坑章节细说。第四行是 perl 解释器vmware-install.pl 本身就是 perl 脚本系统里没有 perl 的话连安装界面都出不来。版本匹配问题是老版本 Tools 安装最容易翻车的地方。很多人的系统里装了多个内核版本重启后进入的是新内核但 kernel-devel 只装了旧版本对应的。此时uname -r和头文件目录对不上安装脚本就会找不到头文件。另一种情况是系统内核太新工具链也太新这个 2016 年左右的 tools 版本在内核 API 变化后根本无法编译。后面单独写一节讲这些坑但环境检查这一步已经能挡掉一半问题。2.3 用户态组件依赖也要提前准备内核模块只是 tools 的一部分编译完之后 vmware-config-tools.pl 还要配置 Xorg 显示驱动、拖拽剪贴板、PAM 会话等。这些用户态组件分别依赖 X11 开发库、GTK 库、PAM 开发库。很多精简安装没有装这些库配置脚本会在某一步卡住提示缺少某个头文件或库文件。操作步骤通常是先确认系统里有哪些包管理器然后按发行版习惯把编译基础包和 X11 开发包装齐。这里的“装齐”不是把整个桌面环境都装上而是对照 tools 源码的依赖项安装。常见的一个依赖组合是libxt、libxmu、libx11 开发包、libgtk2.0-dev、libpam0g-dev。在配置阶段用到哪一项取决于你希望启用哪些功能。如果你不打算在虚拟机里使用图形界面的拖拽和分辨率自适应可以只装编译内核模块的最少依赖然后在配置脚本里把 X 相关功能关掉。但我一般不建议这么做因为 VMware Tools 的价值很大一部分就在这些桌面增强功能上。既然手动安装一次就把依赖一次装齐省的后面又要重跑配置脚本。3. 手动安装解压、configure、make 与配置脚本的完整执行路径3.1 解压安装包并查看安装参数环境检查通过后正式开始安装。还是先用解压命令把安装包展开然后看一眼安装脚本支持哪些参数。这一步很重要老版本 tools 的安装脚本支持--help可以列出你可以在命令行传入的选项比如指定内核源码路径、关闭某个模块的编译、跳过 X11 支持等。cd /tmp/vmware-tools-src/vmware-tools-distrib ./vmware-install.pl --help运行--help后脚本不会进入安装流程而是打印一行参数说明告诉你用--default可以让所有问题采用默认值用--clobber-kernel-modules可以在内核模块已存在时强制重新编译用--skipinstall只做安装前检查不实际安装。如果脚本没有自动探测到内核头文件路径你还可以先设置CFLAGS或指定--kernel-source-dir这类参数不过这个版本的选项名比较有限最常见的做法还是先把头文件目录的软链接建对让脚本自己探测。从使用习惯来看我一般不会直接用--default一路回车。默认值里有几个选项不符合我的环境比如默认会编译所有内核模块但某些模块比如新的虚拟硬件驱动 vmxnet3编译依赖较新的内核 API内核太老会编译失败。我会选择先让脚本自己跑在交互式提问时再决定哪些模块编译、哪些跳过。3.2 用默认值起步执行安装如果你只是想快速让 tools 跑起来且确认过环境检查没问题可以用一个相对省事的方式启动安装。老版本脚本设计上支持--default含义是所有交互问题都选择默认答案。我通常在第一次安装时用纯交互方式而在我确信默认值符合需求时才用这个快捷参数。cd /tmp/vmware-tools-src/vmware-tools-distrib ./vmware-install.pl --default这个命令会依次执行几个阶段把安装文件复制到/usr/lib/vmware-tools在/etc/vmware-tools下生成配置目录然后开始编译内核模块。编译的对象至少包含 vmhgfs共享文件夹、vmmemctl内存控制、vmxnet3虚拟网卡、vmblock拖拽的块设备支持。每个模块编译时需要调用 gcc 配合内核头文件这一步耗时取决于虚拟机 CPU 核数和磁盘性能通常一两分钟到十几分钟。必须强调的是--default并不是一点都不问问题。它把问题默认值全部填好但你在控制台依然能看到类似“Running VMware Tools Installer”的过程输出。如果某个内核模块编译失败脚本会提示你继续、中止还是跳过该模块。这个交互设计是这个版本的机制之一不要指望一条命令装完所有东西并自动成功。3.3 配置脚本 vmware-config-tools.pl 的交互回答安装脚本复制完文件、编译完内核模块后会自动调用vmware-config-tools.pl进入配置阶段。这个 perl 配置脚本负责设置 Xorg 驱动、分辨率、拖拽、时间同步、共享文件夹等运行时参数。它的问题模式和回答方式值得单独说明一下因为这里最容易答错。常见的问题包括是否启用 floppy 设备支持、是否启用 Xorg 显示驱动、是否配置鼠标驱动、是否启用 host 时间同步。大部分问题按默认回车即可但有一个问题例外当它问到你希望虚拟机分辨率自动适应窗口大小时如果你的环境是 headless 服务器没有 Xorg就要选择不启用 X。如果你选了启用而系统里又没有装 Xorg配置脚本会继续尝试检查 X 的安装路径并抛出错信息最后卡住。这里给出一个我在服务器环境常用的做法先安装时不给图形功能后面需要时手动改配置。配置脚本支持交互式回答也支持在命令行传递若干参数但你很难在文档里找到全部参数列表。实际中更可靠的方式是让配置脚本跑完后直接把/etc/vmware-tools/config里对应的协议号和分辨率值改掉再用vmware-toolbox-cmd从命令行刷新。另外值得说明的是这个版本在配置完成后会自动启动 vmtoolsd 服务。如果你的发行版使用 systemd它会尝试注册vmtoolsd.service并设为开机启动。如果这一步没有生效通常是 systemd 单元文件路径不对而导致该问题最常见的原因是安装脚本把服务文件写到了老式的启动目录里。出现这种情况时手动把服务软链接挂到 systemd 目录即可这个也属于常见坑后面展开。4. 避坑记录老版本 tools 安装中的 6 个常见问题4.1 编译报错找不到内核头文件但版本匹配现象执行 vmware-install.pl 后脚本提示“Unable to find the kernel source code”并终止但你确认uname -r对应的内核头文件已经安装。原因安装脚本查找的不是当前内核的头文件路径而是固定的几个默认路径比如/usr/src/linux或/lib/modules/$(uname -r)/build。如果你的发行版把头文件装在了自定义路径脚本找不到。另一个原因是/lib/modules/$(uname -r)/build这个软链接没有指向真实的头文件目录。解决先确认/lib/modules/$(uname -r)/build存在且指向有效路径。如果软链接断了手动重建ln -s /usr/src/kernels/$(uname -r) /lib/modules/$(uname -r)/build重建后重新运行安装脚本。如果发行版头文件路径不是/usr/src/kernels先ls /usr/src/确认实际的目录名再创建软链接。这个操作只需要 root 权限没有其他副作用。4.2 gcc 版本太新导致编译失败现象编译内核模块时报出一堆implicit declaration of function或expected ‘’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’错误基本确定是 GCC 对老代码的语法检查变严导致。原因VMwareTools-10.0.6-3595377 这一代内核模块源码基于 2016 年以前的内核 API 和 GCC 语法编写。新版 GCC 对函数声明、内联汇编格式和结构体初始化的要求更严格老代码里一些不严谨的写法会直接变成编译错误。这个现象在较新的发行版上很常见。解决不换 gcc 的情况下可以去内核源码目录看是否有针对老 tools 的补丁宏但这在旧版本上机会渺茫。实际做法有两个一是安装依赖里允许的旧版 gcc但这会污染系统环境二是改用发行版仓库里的 open-vm-tools 替代原版 tar 包这也是我后续会建议的方案。如果必须用这个 tar 包尝试加编译参数-Wno-error不一定有效因为报错不是 warning 而是 error。4.3 装完没有生成 shared folder 挂载点现象安装和配置都显示成功vmtoolsd 服务也在运行但/mnt/hgfs目录不存在共享文件夹无法访问。原因老版本 tools 的共享文件夹功能依赖 vmhgfs 内核模块该模块负责把宿主机的共享目录挂载为一个文件系统。但这个模块在编译时没有被自动编译或者在配置阶段被你通过交互问题跳过还有一种情况是模块编译了但配置脚本没有在/mnt下创建挂载点。解决手动检查模块是否加载。lsmod | grep vmhgfs mkdir -p /mnt/hgfs modprobe vmhgfs如果模块加载成功再检查共享文件夹是否已经在 VMware 虚拟机设置里添加。宿主机端没有配置共享目录时客户机侧模块再正常也看不到挂载点。配置好共享目录后执行vmware-hgfsmounter命令挂载所有配置的共享vmware-hgfsmounter /mnt/hgfs这个命令是 tools 包自带的挂载工具它会读取宿主机传入的共享配置并挂载。如果显示挂载失败多半是 vmtoolsd 后台服务没起来先systemctl status vmtoolsd确认服务状态再排查。4.4 分辨率只有 800x600无法自适应拉大窗口现象tools 安装完拖拽和共享文件夹都正常但窗口分辨率不会随着宿主机窗口大小自动调整手动改分辨率选项也不全。原因分辨率自适应由两个部分组成显卡驱动和用户态服务。老版本 tools 自带 Xorg 驱动模块如果 Xorg 配置文件没有加载这个驱动自适应就失效。另外vmtoolsd 的 user 进程要持续运行才能周期读取窗口大小并通知 Xorg。解决确认 Xorg 是否加载了 vmware 驱动模块。在 Xorg 配置目录里检查是否包含 vmware 相关的驱动配置段。没有的话用安装包里的配置工具重新生成/usr/bin/vmware-xorgdetect这个命令会检测当前的显卡设备是否匹配 vmware 虚拟显卡。如果它没有输出设备信息可能是虚拟机的显卡模式设置了旧式 VGA而不是 VMware SVGA II。改法是在虚拟机设置里把显卡类型改为“VMware 兼容”类型然后重启虚拟机重新运行 vmware-config-tools.pl。4.5 服务无法设置开机自启现象安装完成后 vmtoolsd 能手动启动功能也正常但重启虚拟机后服务不在了需要手动执行启动命令。原因老版本安装脚本把服务注册到了/etc/rcX.d的旧式启动链路里而现在很多发行版默认使用 systemd服务状态和自启信息还没完善。另外某些精简镜像用 systemd 但关闭了旧式 rc 脚本兼容层。解决手动补一条 systemd 服务单元最简单的方式是直接建立一个 service 文件指向 tools 自带的后台服务程序cat /etc/systemd/system/vmtoolsd.service EOF [Unit] DescriptionVMware Tools Agent Afternetwork.target [Service] ExecStart/usr/bin/vmtoolsd Restartalways [Install] WantedBymulti-user.target EOF systemctl enable vmtoolsd systemctl start vmtoolsd注意ExecStart的路径要和你安装后的实际路径一致。可以提前用which vmtoolsd确认。这样处理后虚拟机开机后服务就会自动拉起时间同步、共享文件夹、拖拽等功能都能持续工作。用 systemd 管理比依赖旧 rc 脚本更可靠排查也方便。4.6 内核升级后模块失效现象虚拟机更新内核包并重启后共享文件夹和拖拽失效lsmod显示 vmhgfs、vmxnet3 等模块加载失败。原因内核二进制模块和内核版本强绑定。内核升级后原编译的 .ko 模块文件面对新内核版本号不一致或内部 API 变化无法加载。老版本 tools 没有自动重新编译机制需要你手动重跑配置流程。解决进入 tools 安装目录重新执行vmware-config-tools.pl。cd /usr/lib/vmware-tools/bin ./vmware-config-tools.pl配置脚本会检测内核版本变化并触发内核模块重新编译。编译完成后会自动加载新模块。如果你发现脚本没有触发重新编译可以用--clobber-kernel-modules参数强制重编。重编期间服务会短暂中断属于正常现象。这也提示一个习惯每次升级虚拟机内核后都要把 tools 检查一遍否则会莫名其妙丢功能。5. 验证与调优toolbox-cmd、共享文件夹、分辨率与时间同步的落地确认5.1 用 toolbox-cmd 确认服务状态安装完成后验证优先于继续调试。老版本 tools 自带一个命令行管理工具叫 vmware-toolbox-cmd它位于/usr/bin/vmware-toolbox-cmd用来查询 tools 运行状态、开关时间同步、查看磁盘信息和宿主机交互能力。这是判断 tools 是否真正工作的第一步比盲目重启虚拟机来得高效。vmware-toolbox-cmd stat这个命令会输出当前 tools 的运行状态以及宿主机与客户机之间的通信是否正常。如果输出正常说明 vmtoolsd 服务在运行和宿主机之间的交互通道已经建立。如果输出错误信息重点检查服务进程是否存在、虚拟设备上是否还遗留旧驱动导致的冲突。下一步查看更细腻的信息vmware-toolbox-cmd timesync status这个命令查询时间同步开关的状态。默认情况下 tools 启用时间同步虚拟机会周期性从宿主机校准时间。如果输出显示 disabled可以手动打开。工具子命令还有 disk、device、stat、help 等用于配合脚本完成自动化检查。宿主机端随时能感知客户机的在线状态、执行关机指令等能力也都依赖这里建好的通道。5.2 验证共享文件夹挂载与拖拽功能共享文件夹是虚拟机场景里最常用的功能它的验证方式也直观。先确认内核模块存在且已加载lsmod | grep -E vmhgfs|vmxnet|vmcivmhgfs是共享文件夹模块vmxnet系列是虚拟网卡驱动vmci是虚拟机通信通道。三个模块都出现才算完整。检查完后看挂载列表mount | grep hgfs有输出说明挂载正常。没有输出时按避坑章节的操作尝试vmware-hgfsmounter /mnt/hgfs。拖拽功能的验证相对麻烦它依赖 X11 环境下的用户态插件如果 tools 安装时没有编译 Xorg 相关组件拖拽肯定不工作。这里我要强调一个实践细节拖拽是否可用和共享文件夹是否配置无关它走的是 vmci 通道上的剪贴板协议。如果拖拽失效先检查 Xorg 日志里是否有 vmware 相关驱动初始化失败的记录再检查 vmtoolsd 的 user 进程是否以当前桌面用户身份运行。老版本 tools 在配置阶段装入 Xorg 的模块如果不是按当前桌面环境版本编译的日志里会留下明确报错。对于 headless 服务器拖拽可以放弃共享文件夹才是刚需。挂载成功后测试一下在共享目录里创建文件宿主机端立刻能看到就说明 vmhgfs 的通道是通的。这里的一个改进点老版本挂载共享目录默认在/mnt/hgfs你也可以在自己的挂载点下通过 fstab 加一条自动挂载记录让虚拟机开机时自动挂载宿主机共享目录免去每次手动执行挂载命令。5.3 调时间同步和内存优化参数时间同步在虚拟化环境经常被忽略但坑不少。如果你的虚拟机里运行着集群软件或定时任务时间漂移会造成大问题。启用时间同步的常用命令vmware-toolbox-cmd timesync enable开启后宿主机时间会周期性强制校准客户机时间。老版本 tools 的默认同步周期是 60 秒如果需要手动调整可以修改/etc/vmware-tools/config里的timeSync.period参数。改动后重启 vmtoolsd 服务生效。针对需要精确时间的环境我建议保留 tools 时间同步不要额外跑 ntpdate两者会互相干扰造成时间跳变。内存控制方面老版本 tools 提供 vmmemctl 模块它允许宿主机在内存压力大的时候从客户机回收内存。这个功能对宿主机有帮助但对客户机里跑数据库的场景会产生性能抖动。如果你确认不需要宿主机动态回收内存可以在配置脚本里禁用它或者加载后卸载modprobe -r vmmemctl注意这个模块卸载后虚拟机的内存 balloon 功能会消失宿主机内存压力检测就不会再把客户机内存收回去适合数据库和 Java 应用这类吃内存的服务。如果你拿捏不准保持默认即可默认启用不会出乱子。此外虚拟网卡驱动值得单独提一句安装 tools 后系统里一般会出现 vmxnet3 或 vmxnet 网卡驱动相比默认的 e1000 虚拟网卡多队列和中断处理能力更好。装完 tools 后去网卡配置里看一眼驱动名ethtool -i 网卡名输出 driver 字段如果是 vmxnet3说明虚拟网卡工作在优化驱动下。老虚拟机的默认网卡类型如果还是 e1000可以在虚拟机关机状态下把网卡类型改成 VMXNET3改完再开机网络连接会短暂断开重新配置一下 IP 即可。6. 老版本 tar 包还值得装吗迁移到 open-vm-tools 的判断依据与操作路线到了这一步你心里肯定有个疑问这个 2016 年的 tar 包在今天的系统上还能顺利编译但要不要继续装它我的判断是如果你的发行版仓库里提供了 open-vm-tools就应该直接用它老 tar 包只适用于特殊场景比如宿主机平台强制要求使用平台原版 tools、或者 open-vm-tools 的功能差异不能满足需求。迁移到 open-vm-tools 的路线是先停掉老 tools 服务再卸载旧模块然后安装发行版仓库里的 open-vm-tools 包。卸载动作要留个心眼。老 tar 包装完后通常带一个vmware-uninstall-tools.pl脚本位置一般在/usr/lib/vmware-tools/bin。先把服务停掉再跑卸载脚本顺序不能反。systemctl stop vmtoolsd /usr/lib/vmware-tools/bin/vmware-uninstall-tools.pl卸载完成后检查一下/mnt/hgfs挂载点是否还剩残留引用有的话umount -l /mnt/hgfs强制卸掉。随后再从发行版软件源安装 open-vm-tools包名一般是 open-vm-tools桌面增强功能还需要 open-vm-tools-desktop。安装完成后启动对应服务功能几乎完全等价分辨率自适应、拖拽、共享文件夹、时间同步都会有而且它随内核版本同步更新不会有编译问题。换过去后验证和手里这套老 tar 包完全一致用vmware-toolbox-cmd stat就能看到状态。这里的核心区别是 open-vm-tools 是发行版维护不需要你手动维护内核模块升级内核后包管理器会自动重编或预编译好模块省掉了很多手动操作。唯一要注意的是 open-vm-tools 在某些定制内核下依然要用 DKMS 方式额外构建模块转账路径类似但整体比老 tar 包稳定得多。我的习惯是能走发行版包管理器就不走原版 tar 包除非宿主机平台版本特别老才保留原版。迁移过程中我把老服务卸载后没有立刻装新包结果重启发现硬盘挂载表里还留着 hgfs 的记录导致系统启动时等待超时。那次教训让我以后每次迁移都要先清理 fstab 或 mount 配置再换。希望帮到你。本文还有配套的精品资源点击获取

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询