为什么需要 VMware Tools
安装 VMware 虚拟机后,如果不安装 VMware Tools,你会遇到:
- 分辨率固定:窗口缩放后画面不跟随调整,只能显示 800×600 等固定分辨率
- 无法共享剪贴板:宿主机和虚拟机之间 Ctrl+C / Ctrl+V 不互通
- 鼠标无缝切换失效:切换鼠标焦点需要按 Ctrl+Alt
- 文件拖放不可用:无法从宿主机拖文件到虚拟机桌面
- 时间同步问题:虚拟机时钟可能与宿主机偏差
VMware Tools 是解决以上所有问题的官方客户端套件。
open-vm-tools vs 官方 VMware Tools
| 对比项 | open-vm-tools | 官方 VMware Tools |
|---|---|---|
| 来源 | 开源(VMware 官方维护) | 闭源,随 VMware 软件分发 |
| 安装方式 | apt install,随系统更新 | 需要从 VMware 菜单挂载 ISO 安装 |
| 桌面支持 | open-vm-tools-desktop(需单独安装) | 集成 |
| 推荐场景 | Linux 客户机(Ubuntu/Debian/CentOS) | Windows 客户机 |
| VMware 官方态度 | 推荐用于 Linux | 适用于 Windows |
结论:Linux 虚拟机优先使用 open-vm-tools,不需要从菜单挂载安装盘。
安装步骤
1. 更新软件包索引
sudo apt update && sudo apt upgrade -y
upgrade 确保现有包是最新状态,避免依赖冲突。
2. 安装 open-vm-tools
# 桌面环境(GNOME/KDE/Xfce 等图形界面)
sudo apt install open-vm-tools-desktop -y
# 无桌面的服务器环境(命令行 only)
sudo apt install open-vm-tools -y
open-vm-tools-desktop 包含了 open-vm-tools 的所有功能,并额外提供:
- SVGA 显示驱动(支持动态分辨率)
- 剪贴板共享(
vmware-user-suid-wrapper) - 拖放支持
3. 重启虚拟机
sudo reboot
重启后,VMware 界面底部状态栏会显示 “VMware Tools is running”,分辨率调整也会立即生效。
验证安装
# 检查服务状态
systemctl status open-vm-tools
# 查看版本
vmware-toolsd --version
# 检查 SVGA 驱动是否加载(桌面版)
lsmod | grep vmwgfx
正常输出示例:
● open-vm-tools.service - Service for virtual machines hosted on VMware
Loaded: loaded (/lib/systemd/system/open-vm-tools.service; enabled)
Active: active (running)
常见问题
剪贴板共享仍不工作
确认以下两点:
- VMware 设置里开启了共享:虚拟机 → 设置 → 选项 → 客户机隔离 → 取消勾选”禁用…”
- 服务正在运行:
systemctl restart open-vm-tools
分辨率不能自动调整
有时需要手动启动用户级服务:
vmware-user-suid-wrapper &
或将其加入 ~/.profile 自动启动:
echo "vmware-user-suid-wrapper &" >> ~/.profile
在 Wayland 会话下剪贴板不工作
Ubuntu 22.04+ 默认使用 Wayland,open-vm-tools 的剪贴板共享目前对 Wayland 支持不完整。临时解决方案:在登录界面切换为 Xorg 会话(点击右下角齿轮图标选择)。
包不存在:E: Package ‘open-vm-tools-desktop’ has no installation candidate
这通常出现在 Ubuntu Server 版本(没有图形界面)。改装无桌面版:
sudo apt install open-vm-tools -y
卸载旧版 VMware Tools(如有)
如果之前通过 ISO 安装过官方 VMware Tools,需先卸载再安装 open-vm-tools:
# 检查是否存在旧安装
ls /usr/bin/vmware-uninstall-tools.pl
# 存在则卸载
sudo /usr/bin/vmware-uninstall-tools.pl
然后按上述步骤重新安装 open-vm-tools。