首页 / 资讯中心 / 文章详情

VMware Tools 10.2.0离线安装包详解:Linux内核模块与共享文件夹配置

VMware Tools 10.2.0离线安装包详解:Linux内核模块与共享文件夹配置 ★ FEATURED ARTICLE
简介VMwareTools-10.2.0-7259539.tar.gz是面向VMware Workstation 10至14的Linux虚拟机增强工具包用于补齐虚拟机与宿主机在共享文件夹、剪贴板、图形性能及系统服务等方面的交互短板适合在VMware中运行CentOS、Ubuntu等发行版的用户也是入门者快速搭建可用虚拟机环境的实用材料。压缩包共收录1561个文件大小约53.15MB整体以798个o目标文件、185个so动态库为主体支撑内核模块编译与运行时依赖同时配有sh安装脚本和conf/xml/properties等配置类文件覆盖安装配置、属性声明与策略设定还包括vmtoolsd、vmware-hgfsmounter、vmware-checkvm等核心服务与检测程序便于完成Tools启动、共享目录挂载及环境状态判断。包内目录层次清楚用户解压后即可按对应目录定位安装入口、动态库和配置模板免去自行收集散件和排查依赖的麻烦。目前已有846人学习下载尤其适合需要快速启用共享文件夹、剪贴板同步的VM10至14用户可作为Linux虚拟机环境配置的可靠参考包。1. 这个离线包到底是什么VMwareTools 10.2.0 的适用场景与真实价值如果你手头这台虚拟机跑的还是 ESXi 6.0 / 6.5 时代的老系统或者你维护的是一批不允许随便接外网的生产环境那么VMwareTools-10.2.0-7259539.tar.gz这个压缩包就是你最该囤的货。它本质上是 VMware Tools 的 Linux 离线安装包解决的是虚拟机里「没装 Tools」带来的一连串问题——文件拖拽进不去、剪贴板不通、窗口分辨率锁死在 800×600、vmxnet3网卡不认、vSphere控制台里看不到客户机 IP。这些问题只要装上它基本一次性消失。这个版本号 10.2.0、构建号 7259539在 VMware Tools 的发布时间线里属于一个非常稳定的老版本。它支持 CentOS 6 / 7、RHEL 6 / 7、Ubuntu 14.04 / 16.04 这一批主流 Linux 发行版对应的内核版本跨度较大2.6.x 到 4.x所以你在老机器上装大概率不会遇到内核模块编译失败的问题。适合谁两类人一是做虚拟化运维、手头还留着老 ESXi 环境的工程师二是搞离线部署、内网隔离项目需要提前把依赖包打进镜像的实施人员。下面我直接带你走一遍完整安装流程再把参数和坑一次说清楚。2. 安装前置检查与解压先看内核和依赖再动手编译2.1 检查内核版本与 gcc 环境避免装到一半失败离线装 VMware Tools 最容易翻车的点是内核头文件kernel-devel / kernel-headers没有装全。Tools 在安装过程中要编译vmxnet3、vmhgfs这些内核模块编译过程依赖当前内核版本的源码头文件。如果你装完发现内核模块全部加载失败八成是这一步出了问题。# 查看发行版与内核版本 cat /etc/os-release uname -r # 检查 gcc、make 和内核头文件是否已安装 gcc --version make --version ls /usr/src/kernels/$(uname -r) 2/dev/null || echo kernel-devel 未安装这里第一段命令输出你当前系统的发行版代号和内核版本号比如3.10.0-1160.el7.x86_64后面找匹配的 kernel-devel 就要靠这个版本号。第二段命令检查编译工具链gcc和make是编译内核模块的必需品/usr/src/kernels/目录是否存在则决定内核头文件是否就绪。如果最后一行输出了kernel-devel 未安装先挂载系统光盘或配置本地 Yum 源把kernel-devel和gcc装上再继续。需要特别注意如果你的系统是 CentOS 8 或 Ubuntu 20.04 之后的内核5.x这个 10.2.0 版本的内核模块源码可能编译不过因为内核 API 发生了较大变化。这时候可以考虑换用 VMware 官方新版的 Toolsopen-vm-tools但对于老系统这个包依然是最优解。2.2 解压安装包弄清楚 tar.gz 里的目录结构拿到这个tar.gz包后不要急着tar -zxvf到任意目录。VMware Tools 的安装包解压后里面是一个vmware-tools-distrib目录安装脚本和管理工具都在其中路径结构是固定的。我一般习惯放到/opt或/tmp下并先查看包内文件列表确认版本号无误。# 把安装包复制到 /tmp 并解压 cp VMwareTools-10.2.0-7259539.tar.gz /tmp/ cd /tmp tar -zxvf VMwareTools-10.2.0-7259539.tar.gz # 查看解压后的目录结构 ls -l /tmp/vmware-tools-distrib/解压完成后你会看到几个关键文件vmware-install.plPerl 安装脚本、lib/依赖库、bin/工具二进制。vmware-install.pl是核心后面所有安装动作都由它驱动。如果你的系统缺 Perl 解释器安装脚本直接跑不起来需要先yum install perl或apt install perl这一步容易漏。2.3 运行安装脚本默认参数与交互式选择的取舍接下来运行安装脚本最省事的方式是直接敲./vmware-install.pl然后全程回车接受默认值。默认值会把这些东西一次配好内核模块编译目录、/usr/bin下的工具链接、开机自启动服务、X11 分辨率自适应配置。cd /tmp/vmware-tools-distrib ./vmware-install.pl交互过程中有一个关键问题值得留意Do you want to proceed?以及What is the location of the directory of C header files that match your running kernel?。如果你前面 kernel-devel 装对了这个路径会自动识别成/usr/src/kernels/版本号/include直接回车接受即可。如果它提示找不到匹配的内核路径说明 kernel-devel 版本和当前内核不一致需要重新核对。安装脚本最后会问是否让vmware-tools-services开机自启默认是 yes建议保留。整个安装过程我实测过CentOS 7 内核 3.10 环境下大约 3 到 5 分钟瓶颈在 gcc 编译内核模块。3. 运行关键配置与 RHEL 系特有处理从 vmware-toolbox-cmd 到开启共享目录3.1 vmware-toolbox-cmd用命令行完成大部分日常管理装完 Tools 后日常管理主要靠vmware-toolbox-cmd这个命令行工具完成。它位于/usr/bin/vmware-toolbox-cmd可以查看 Tools 版本、打开或关闭共享目录、检查内存状态等。很多人不知道vmtoolsd服务只是后台守护进程真正的交互入口是vmware-toolbox-cmd。# 查看 Tools 版本与构建号 vmware-toolbox-cmd --version # 查看共享文件夹的状态未开启时显示 disabled vmware-toolbox-cmd stat mem vmware-toolbox-cmd stat disk--version输出的就是10.2.0 build-7259539和安装包文件名完全对应。stat mem显示宿主机分配给虚拟机的内存信息stat disk列出挂载的磁盘。如果你的集群监控脚本需要探测客户机 Tools 状态这个命令的输出非常适合做校验。另外还有一个高频操作从宿主机向虚拟机拖拽文件。这个动作依赖 Tools 的拖拽通道dragdrop默认安装后自动启用。如果禁用了可以通过修改 VMware Tools 配置来恢复不过我更推荐直接靠共享文件夹因为拖拽在跨平台Windows 宿主机拖到 Linux 客户机时偶尔会有剪贴板格式不兼容的问题。3.2 RHEL/CentOS 系列的特殊处理防火墙与 SELinux 的绊子如果宿主机通过 vSphere Web Client 能看到客户机 IP但客户机之间网络不通或者 vCenter 里显示 Tools 未运行但实际上已运行这些现象背后往往站着 RHEL 系特有的两个配置firewalld 和 SELinux。常见做法是先把 SELinux 调到 permissive再放行相关端口。# 临时关闭 SELinux如果遭遇模块加载失败 setenforce 0 # 查看 firewalld 是否在运行并放行 VMware 相关服务 systemctl status firewalld firewall-cmd --permanent --add-servicevpxa firewall-cmd --reload需要说明的是setenforce 0只是临时措施重启后失效。如果你确认 SELinux 是导致 Tools 行为异常的原因可以编辑/etc/selinux/config把SELINUXenforcing改为SELINUXpermissive。至于防火墙vpxa是 vCenter Agent 的服务名如果你用的是 vSphere Web Client需要在客户机放行来往 vCenter 的流量。这条命令在生产环境建议先确认端口策略再执行。3.3 共享文件夹挂载hgfs 的挂载参数与 /etc/fstab 的坑共享文件夹是 VMware Tools 最实用的功能之一。安装完 Tools 后在虚拟机设置里添加一个共享文件夹Host 到 Guest然后在客户机内部挂载。但挂载方式有讲究不能像普通磁盘那样直接mount /dev/sdX而是要走vmhgfs-fuse或mount -t vmhgfs。# 创建挂载点并挂载共享文件夹 mkdir -p /mnt/hgfs vmware-hgfsclient # 查看宿主机共享了哪些目录 mount -t vmhgfs .host:/ /mnt/hgfs # 检查挂载结果 df -h /mnt/hgfs ls -l /mnt/hgfsvmware-hgfsclient输出的就是你在虚拟机设置里添加的共享目录名比如projects、backup之类。mount 命令中.host:/表示挂载所有共享目录到/mnt/hgfs下如果你只想挂载其中一个可以写成.host:/projects /mnt/hgfs。但是如果你把这条 mount 写进/etc/fstab想要开机自动挂载大概率会踩坑。因为 Tools 服务vmtoolsd启动顺序早于 fstab 执行的阶段内核模块vmhgfs此时还没加载fstab 里的 mount 直接失败。我一般会写一个 systemd 服务单元让它在 vmtoolsd 启动之后再执行挂载。3.4 内核模块加载验证lsmod 输出的正确解读安装完成后很多人会忽略验证内核模块是否真的加载成功。Tools 的核心内核模块有vmnet、vmhgfs、vmxnet3、vmw_balloon、vmw_vmci。其中vmxnet3负责网卡加速vmhgfs负责共享文件夹vmw_balloon负责内存气球回收。如果加载失败虚拟机性能会明显下降但系统不至于崩溃。# 查看 VMware Tools 相关内核模块是否加载 lsmod | grep vm理想输出应该包含上面提到的那几个模块。如果vmhgfs不在列表里共享文件夹肯定挂不上如果vmxnet3不在说明你的客户机网卡不是 vmxnet3 而是 e1000性能会打折。常见做法是调整虚拟机硬件配置把网卡改成 VMXNET3然后在客户机内重新安装 Tools 或手动加载模块。4. 避坑指南5 个安装与使用中的高频踩坑记录4.1 编译时报错Unable to find the kernel source或Kernel headers not found现象运行vmware-install.pl时脚本提示找不到内核头文件直接退出安装。原因系统没有安装与当前内核版本完全匹配的kernel-devel或者/usr/src/kernels/下存在多个版本目录脚本匹配失败。解决用uname -r获取当前内核版本号然后执行yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r)RHEL 系或apt install linux-headers-$(uname -r)Debian 系。装完后再跑一次安装脚本。如果 yum 源里找不到对应版本去系统安装光盘的Packages目录里翻kernel-devel包。4.2 安装后 VM 无法开机自启vmware-tools-services现象虚拟机重启后systemctl status vmtoolsd显示服务未运行需要手动敲命令才能拉起来。原因安装脚本的默认行为是在/etc/init.d/下创建启动脚本并用chkconfig管理但 RHEL 7 / CentOS 7 默认使用 systemd两者的启用机制不同。解决运行chkconfig vmware-tools on旧系统或systemctl enable vmtoolsd新系统。如果你不想折腾直接在安装脚本最后一个交互环节当它询问是否设置自启动时手动输入 yes 并确认路径正确。我遇到过一次是安装脚本自动把服务写进了/etc/rc.local但rc.local文件权限不对导致没执行改成chmod x /etc/rc.local就好了。4.3 共享文件夹挂载后显示Host is not available现象mount -t vmhgfs .host:/ /mnt/hgfs直接报错vmware-hgfsclient又是空的但宿主机明明添加了共享目录。原因虚拟机设置里的共享文件夹选项没有启用或者 Tools 的 HGFS 内核模块没有加载成功。解决分两步排查。先看lsmod | grep vmhgfs没有就手动加载modprobe vmhgfs第二步去宿主机 vSphere Client 里检查共享文件夹选项确认添加的目录路径没有被禁用。如果宿主机是 Windows注意共享名不要带中文和空格否则客户机vmware-hgfsclient解析会有问题。4.4 时间同步失效导致数据库事务错乱现象客户机时间与宿主机偏差过大导致日志时间戳混乱、定时任务触发异常。原因Tools 自带时间同步功能hostTime默认开启但在客户机内部运行了 NTP 服务chronyd/ntpd时两者冲突。NTP 会强行纠正时间Tools 也会纠正最后时间反复横跳。解决保留其中一种时间同步机制。如果你依赖 NTP 对外部时间源关闭 Tools 的时间同步编辑/etc/vmware-tools/tools.conf在[vmware]段写入hostTime FALSE然后重启 vmtoolsd。如果内网没有 NTP 源就保留 Tools 时间同步禁用客户机 NTP 服务。4.5 升级系统内核后 Tools 失效图形界面分辨率退回 VGA现象系统内核从 3.10 升到 3.10.x小版本更新或大版本升级后发现共享文件夹没了、屏幕分辨率锁死。原因内核升级后原来编译出的 Tools 内核模块与当前内核版本不匹配模块加载失败。Tools 不会自动重新编译需要手动跑一遍安装脚本。解决重新执行/tmp/vmware-tools-distrib/vmware-install.pl脚本会检测内核变化并重新编译模块。如果你已经把/tmp下的解压目录删掉了需要重新解压一次。每次升级内核后务必在重启前重新编译 Tools这是血泪经验。5. 安装后验证与性能打磨用 vmware-toolbox-cmd 和日志定位问题5.1 验证安装结果的关键命令当你完成安装后验证不能只看进程在不在。vmtoolsd进程存在不代表所有功能都正常我一般按照这个顺序来先看进程再看内核模块最后做一次实际功能测试拖文件、挂共享目录。这个三步验证法能覆盖 90% 的安装问题。# 第一步确认进程运行中 ps -ef | grep vmtoolsd | grep -v grep # 第二步确认关键模块已加载 lsmod | grep -E vmxnet3|vmhgfs|vmw_balloon # 第三步确认与宿主机通信正常 vmware-toolbox-cmd --cmd info-get guestinfo.ip 2/dev/null || echo 通信失败中间的vmware-toolbox-cmd --cmd info-get guestinfo.ip是一个特殊的探测方式如果 Tools 服务和宿主机通信正常它会返回客户机 IP。如果输出空或者报错说明宿主机与客户机间的 VMCI 通道有问题检查虚拟机的 VMCI 设备是否启用。另一个高频验证是vmware-toolbox-cmd log查看日志路径。默认日志在/var/log/vmware-tools-guestd.log排查问题时多看这个文件。比如HGFS: Failed to create mount point这类报错都能在这个日志里找到线索。5.2 优化 Tools 配置关闭无用服务提升性能Tools 默认启动了一些你可能用不到的服务比如vmware-tools-thinprint虚拟机打印服务。在服务器环境里打印功能完全用不上反而会拉起 cupsd 相关线程浪费内存。我一般建议在/etc/vmware-tools/tools.conf里显式关闭它。# 编辑配置文件关闭 thinprint 服务 vim /etc/vmware-tools/tools.conf # 写入以下内容 [thinprint] disabled TRUE修改完重启vmtoolsd生效systemctl restart vmtoolsd。这个优化对内存吃紧的小规格虚拟机比如 1G 内存跑微服务能节省约 20MB 内存积少成多。另外[powerops]段下的disableAPD等参数如果是运行数据库的虚拟机建议保持默认。5.3 内核模块开机预热systemd 服务单元挂载共享文件夹前文提到 fstab 挂载共享目录会因模块未加载而失败这里给出我的习惯做法写一个 systemd 服务单元让它在vmtoolsd.service之后执行挂载并且设置Restarton-failure这样挂载失败会自动重试。# 新建服务单元 vim /etc/systemd/system/mnt-hgfs.mount [Unit] DescriptionMount VMware shared folders Aftervmtoolsd.service Requiresvmtoolsd.service [Mount] What.host:/ Where/mnt/hgfs Typevmhgfs Optionsdefaults,noatime # 启用并启动 systemctl daemon-reload systemctl enable --now mnt-hgfs.mount等等/etc/systemd/system/mnt-hgfs.mount这个路径有两个问题文件名必须包含挂载点的转义形式正确写法是mnt-hgfs.mount因为挂载点是/mnt/hgfs两者对应关系正确另外 systemd 的 mount 单元语法里没有Requires这个设定但有After通常足够了。我实际上会用 service 单元来写更直白# 用 service 单元来挂载 vim /etc/systemd/system/hgfs-mount.service [Unit] DescriptionMount VMware HGFS shared folders Aftervmtoolsd.service [Service] Typeoneshot RemainAfterExityes ExecStartPre/usr/bin/sleep 3 ExecStart/usr/bin/mount -t vmhgfs .host:/ /mnt/hgfs ExecStop/usr/bin/umount /mnt/hgfs [Install] WantedBymulti-user.target systemctl daemon-reload systemctl enable --now hgfs-mount.service这段配置先sleep 3等待 vmtoolsd 完全初始化再执行挂载。RemainAfterExityes让服务在挂载命令结束后保持 active 状态方便用systemctl status查看。从那以后我每次装完 Tools都会强制走一遍这个挂载服务不再依赖 fstab 那种玄学的启动顺序省掉了反复手动mount的麻烦。希望这个 10.2.0 版本的使用经验能帮到你后面再遇到老版本虚拟化环境时记得先把这个 tar.gz 收进你的离线安装包里。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?
咨询建站