vmware/open-vm-tools
GitHub: vmware/open-vm-tools
VMware 官方开源的客户机工具套件,提供虚拟机与宿主机之间的深度集成能力,包括电源管理、时间同步、快照静默、共享文件夹及自动化运维等功能。
Stars: 2587 | Forks: 462
# 概述
## 什么是 open-vm-tools 项目?
open-vm-tools 是一组服务和模块,用于在 VMware 产品中实现多种功能,以便更好地管理客户机并与客户机进行无缝的用户交互。它包含内核模块,用于增强运行 Linux 或其他 VMware 支持的类 Unix 客户机操作系统的虚拟机的性能。
open-vm-tools 在 VMware 产品中启用了以下功能:
- 在客户机中正常执行电源操作(重启和关机)。
- 在各种电源操作期间,在客户机中执行内置或用户配置的脚本。
- 在客户机中运行程序、命令和文件系统操作,以增强客户机自动化。
- 客户机操作的认证。
- 从客户机向主机生成心跳,以便 vSphere HA 解决方案确定客户机的可用性。
- 客户机和主机之间的时钟同步。
- 静默客户机文件系统,以允许主机捕获文件系统一致的客户机快照。
- 在静默客户机文件系统时执行预冻结和后解冻脚本。
- 开机后立即定制客户机。
- 定期从客户机收集网络、磁盘和内存使用信息。
- 调整客户机的图形桌面屏幕大小。
- 在 VMware Workstation 和 VMware Fusion 上,主机和客户机文件系统之间的共享文件夹操作。
- 在客户机和主机或客户端桌面之间复制和粘贴文本、图形和文件。
- 在客户机和主机 UI 之间拖放文件。
- 定期收集客户机中正在运行的应用程序、服务和容器。
- 访问 GuestStore 中的内容。
- 将数据发布到 Guest Data Publisher。
- 管理客户机变量中指定的 Salt-Minion 期望状态。
## 您能提供有关正在发布的实际代码的更多详细信息吗?
以下组件已作为开源软件发布:
- 用于各种设备和文件系统访问的 Linux、Solaris 和 FreeBSD 驱动程序。
- 用于执行正常电源操作和运行电源脚本的 PowerOps 插件。
- 用于在客户机中运行程序和命令以及执行文件系统操作的 VIX 插件。
- 用于定期从客户机收集各种统计信息的 GuestInfo 插件。
- 用于执行时间同步的 TimeSync 插件。
- 用于支持拖放以及文本和文件复制/粘贴操作的 dndcp 插件。
- 用于根据窗口大小自动调整客户机屏幕分辨率的 ResolutionSet 插件。
- 用于支持静默快照操作的 vmbackup 插件。
- 用于支持 GuestStore 操作的 GuestStore 插件。
- 用于支持客户机数据发布操作的 gdp 插件。
- 用于定期收集应用程序信息的 AppInfo 插件。
- 用于定期收集服务信息的 ServiceDiscovery 插件。
- 用于定期收集容器信息的 ContainerInfo 插件。
- 用于处理期望状态操作的 ComponentMgr 插件。
- 客户机认证服务。
- 用于执行磁盘擦除和收缩、管理电源脚本以及时间同步的 toolbox 命令。
- 用于向客户机提供虚拟机信息的 guest SDK 库。
- 用于共享文件夹支持的客户端和服务器。
- 多显示器支持。
- 其他实用程序。
## open-vm-tools 是否随 Linux 发行版提供?
是的。用于用户空间组件的 open-vm-tools 包随主要 Linux 发行版的新版本一起提供,并且在某些情况下会作为操作系统安装的一部分进行安装。有关详细信息,请参阅 VMware 知识库文章 http://kb.vmware.com/kb/2073803。所有主要的 Linux 供应商都支持 open-vm-tools 并将其与其产品捆绑在一起。有关 open-vm-tools 的操作系统兼容性信息,请参阅
http://www.vmware.com/resources/compatibility 的 VMware 兼容性指南
在安装操作系统的同时自动安装 open-vm-tools 消除了在客户机中单独安装 open-vm-tools 的需要。如果 open-vm-tools 未自动安装,您可以从客户机操作系统供应商的公共存储库手动安装它。从 Linux 供应商的存储库安装 open-vm-tools 可以减少虚拟机停机时间,因为 open-vm-tools 的未来更新包含在操作系统维护补丁和更新中。
**注意**:大多数 Linux 发行版都提供两个或更多的 open-vm-tools 包。“open-vm-tools”是核心包,不依赖 X 库;“open-vm-tools-desktop”是附加包,依赖于“open-vm-tools”核心包和 X 库。“open-vm-tools-sdmp”包包含用于服务发现的插件。可能还有其他包,请参阅操作系统供应商的文档。请注意,Linux 发行版提供的 open-vm-tools 包不包含 Linux 驱动程序,因为 Linux 驱动程序是 Linux 内核本身的一部分。Linux 内核版本 3.10 及更高版本包含 open-vm-tools 中存在的所有 Linux 驱动程序,vmhgfs 驱动程序除外。vmhgfs 驱动程序是启用共享文件夹功能所必需的,但已被 vmhgfs-fuse 取代,后者不需要内核驱动程序。
## 是否会继续支持 VMware Tools 和 OSP?
VMware Tools 将继续在商业许可下提供。建议在有 open-vm-tools 可用的 Linux 发行版上使用 open-vm-tools。对于有 open-vm-tools 可用的操作系统,VMware 将不再提供 OSP。
## 这对其他开源项目有何益处?
根据 GPL 的条款,开源社区成员可以使用 open-vm-tools 代码开发自己的应用程序,对其进行扩展,并为社区做出贡献。他们还可以将部分或全部代码整合到自己的项目中,前提是遵守 GPL 的条款。
# 许可证相关
## 代码是在什么许可证下发布的?
代码是在 GPL v2 和 GPL v2 兼容许可证下发布的。具体而言,Linux 内核模块是在 GPL v2 下发布的,而几乎所有用户级组件都是在 LGPL v2.1 下发布的。SVGA 和鼠标驱动程序在 X11 许可证下发布已有一段时间。某些第三方组件是在 BSD 风格的许可证下发布的,VMware 在某些情况下对其做出了贡献,并将继续随 open-vm-tools 一起分发。
## 您为什么选择这些许可证?
我们为内核组件选择 GPL v2,是为了与 Linux 内核的许可证保持一致。我们为用户级组件选择 LGPL v2.1,是因为部分代码实现为共享库,我们不希望限制专有代码链接到这些库。为了保持一致性,我们决定将其余的用户级代码也在 LGPL v2.1 下授权。
## 许可证规定了哪些义务?
每种许可证都有不同的义务。
有关 GPL、LGPL 许可证的问题,自由软件基金会的 GPL 常见问题解答页面提供了大量有用的信息。
有关其他许可证(如 X11、BSD 许可证)的问题,开放源代码促进会提供了许多有用的资源,包括邮件列表。
软件自由法律中心为自由和开源软件 (FOSS) 开发人员提供法律专业知识和咨询。
## 我可以在我的专有软件中使用全部或部分代码吗?如果这样做,我必须发布源代码吗?
不同的开源许可证对发布源代码有不同的要求。由于代码是在各种开源许可证下发布的,因此您需要遵守相应许可证的条款。
## 我是否需要将我对代码所做的任何更改贡献回去?
不需要,您不需要将所做的任何更改贡献回 open-vm-tools 项目。但是,我们鼓励您这样做。
## 我可以在另一个开源包中使用全部或部分代码吗?
可以,只要您遵守适当的许可证。
## 我可以为我喜欢的操作系统打包吗?
可以!请便。
## 商业版本 与开源版本 有什么不同?如果有,有何不同?
我们的目标是努力使开源版本尽可能接近商业版本。但是,我们目前确实使用了某些从第三方许可的组件,以及其他 VMware 产品中的组件,这些组件仅以二进制形式提供。
## 如果我在我的项目/产品中使用 open-vm-tools 项目中的代码,我可以将我的项目/产品称为 VMware Tools 吗?
不可以,因为您的项目/产品不是 VMware 项目/产品。
# 构建 open-vm-tools
## 如何构建 open-vm-tools?
open-vm-tools 使用 GNU Automake 工具生成 Makefile 以构建所有源代码。有关 Automake 的更多信息,请访问:http://www.gnu.org/software/automake/
## 项目构建信息:
以下步骤适用于大多数最新的 Linux 发行版:
```
autoreconf -i
./configure
make
sudo make install
sudo ldconfig
```
### 服务发现 插件
要构建可选的 sdmp(服务发现)插件,请使用 `--enable-servicediscovery` 选项调用配置脚本:
```
./configure --enable-servicediscovery
```
### open-vm-tools 12.0.0 版本引入了一个可选的安装脚本和两个插件(一个可选)
* Salt Minion 安装
* Component Manager 插件
* ContainerInfo 插件(可选)
### Salt Minion 安装
Linux 上的 Salt 支持包含一个单独的 bash 脚本,用于在 VMware 虚拟机上设置 Salt Minion。该脚本要求系统上提供“curl”和“awk”命令。
建议提供 open-vm-tools 包的 Linux 供应商在一个单独的可选包中提供 Salt Minion 支持 —— “open-vm-tools-salt-minion”。
要在 open-vm-tools 构建中包含 Salt Minion 安装,请在调用配置脚本时使用 `--enable-salt-minion` 选项。
```
./configure --enable-salt-minion
```
### Component Manager (componentMgr) 插件
组件管理器管理可从 VMware 获得的预配置组件集,这些组件可在 Linux 客户机上使用。目前,唯一可以管理的组件是 Salt Minion 安装。
### ContainerInfo (containerInfo) 插件
可选的 containerInfo 插件检索 Linux 客户机上运行的容器列表,并将该列表以 JSON 格式发布到客户机变量“**guestinfo.vmtools.containerinfo**”中。containerInfo 插件使用 gRPC 与 containerd 守护进程通信以检索所需信息。对于由 Docker 管理的容器,该插件使用 libcurl 与 Docker 守护进程通信并获取容器的名称。
由于此插件需要额外的构建和运行时依赖项,建议 Linux 供应商将其发布在单独的可选包中 —— “open-vm-tools-containerinfo”。这避免了不使用该功能的客户产生不必要的依赖项。
#### Canonical, Debian, Ubuntu Linux
| 构建依赖项 | 运行时 |
|:------------------------:|:----------------:|
| `libcurl4-openssl-dev` | `curl` |
| `protobuf-compiler` | `protobuf` |
| `libprotobuf-dev` | `grpc++` |
| `protobuf-compiler-grpc` |
| `libgrpc++-dev` |
| `golang-github-containerd-containerd-dev` |
| `golang-github-gogo-protobuf-dev` |
#### Fedora, Red Hat Enterprise Linux, ...
| 构建依赖项 | 运行时 |
|:------------------------:|:----------------:|
| `libcurl-devel` | `curl` |
| `protobuf-compiler` | `protobuf` |
| `protobuf-devel` | `grpc-cpp` |
| `grpc-plugins` |
| `grpc-devel` |
| `containerd-devel` |
#### 为 ContainerInfo 插件配置构建
当所有需要的依赖项都可用时,配置脚本默认构建 ContainerInfo。如果缺少依赖项,则不会构建 ContainerInfo。使用 `--enable-containerinfo=no` 调用配置脚本以显式禁止构建该插件。
```
./configure --enable-containerinfo=no
```
如果配置脚本被赋予 `--enable-containerinfo=yes` 选项且任何必要的依赖项不可用,则配置脚本将以错误终止。
```
./configure --enable-containerinfo=yes
```
## 获取配置选项和帮助
如果您正在寻找有关构建此项目的帮助或其他设置,以下配置命令将显示帮助选项列表:
```
./configure --help
```
在上述步骤中使用 configure 时,只需调用一次 ./configure,除非第一次调用后出现问题。
# 参与其中
## 我今天如何参与?
您今天可以通过几种不同的方式参与:
- 立即开始使用 open-vm-tools 并给我们反馈。
- 提出功能增强建议。
- 在问题部分识别并提交错误:https://github.com/vmware/open-vm-tools/issues
- 开始将代码移植到其他操作系统。以下是拥有 open-vm-tools 的操作系统列表:
* Red Hat Enterprise Linux 7.0 及更高版本
* SUSE Linux Enterprise 12 及更高版本
* Ubuntu 14.04 及更高版本
* CentOS 7 及更高版本
* Debian 7.x 及更高版本
* Oracle Linux 7 及更高版本
* Fedora 19 及更高版本
* openSUSE 11.x 及更高版本
* Flatcar Container Linux,所有版本
* Rocky 8 及更高版本
* AlmaLinux OS 8 及更高版本
## 是否允许外部开发人员成为项目的提交者?
是的。最初,VMware 工程师将是唯一的提交者。随着我们推出我们的开发基础设施,我们也将寻求为项目添加外部提交者。
## 我如何向项目提交代码更改,如错误修复、补丁、新功能?
最初,您可以将错误修复、补丁和新功能作为电子邮件或错误报告的附件提交到项目开发邮件列表。要贡献源代码,您需要作为提交过程的一部分填写贡献协议表格。我们稍后将提供有关此过程的更多详细信息。
## 作为开源项目进行管理的治理模式是什么?
open-vm-tools 项目的功能路线图和时间表将继续由 VMware 定义。最初,VMware 工程师将是唯一批准的提交者。我们将审查传入的提交是否适合合并到项目中。我们将寻求根据社区对项目所做的贡献,将社区提交者添加到项目中。最后,我们还计划建立一个用于增强提案、建立子项目等的流程。
## 您会随 VMware 产品提供我贡献的代码吗?如果是,我会因为我的贡献而获得荣誉吗?
被接受进入 open-vm-tools 项目主源代码树的贡献可能会成为 VMware Tools 的一部分。认识到归属权的价值,并重视您的贡献。因此,我们将确认社区随 VMware 产品分发的贡献。
## 我在做出贡献之前需要签署什么吗?
是的。我们有一份标准贡献协议,涵盖了对项目的所有贡献。它赋予 VMware 和您对您贡献的代码的共同版权利益。该协议还赋予 VMware 许可方面的灵活性,也有助于避免未来可能出现的任何版权/许可相关问题。为了让我们将您的贡献包含在我们的源代码树中,我们要求您发送一份签署的协议副本。您可以通过以下两种方式之一执行此操作:
传真至 +1.650.427.5003,收件人:Product & Technology Law Group
扫描并通过电子邮件发送至 oss-queries_at_vmware.com
协议:http://open-vm-tools.sourceforge.net/files/vca.pdf
## 我的 Linux 版本未被识别。如何将我的 Linux 名称添加到已知列表中?
open-vm-tools 源代码包含一个表,将客户机发行版名称映射到官方识别的短名称。__请不要提交更改此表和相关代码的拉取请求。__ 此处的任何更改都必须伴随着 VMware 主机中的其他更改。VMware 主机无法识别的值将被忽略。
在为您的 Linux 版本配置虚拟机时,请使用适当的通用 Linux 名称。可用的选择将取决于所使用的虚拟硬件版本。
- 其他 5.x 或更高版本的 Linux (64-bit)
- 其他 5.x 或更高版本的 Linux (32-bit)
- 其他 4.x Linux (64-bit)
- 其他 4.x Linux (32-bit)
- 其他 3.x Linux (64-bit)
- 其他 3.x Linux (32-bit)
- 其他 Linux (64-bit)
- 其他 Linux (32-bit)
# 兼容性
## 哪些操作系统支持自定义?
[客户机操作系统自定义支持矩阵](http://partnerweb.vmware.com/programs/guestOS/guest-os-customization-matrix.pdf)提供了有关支持自定义的客户机操作系统的详细信息。
## 哪些版本的 open-vm-tools 与其他 VMware 产品兼容?
[VMware 产品互操作性矩阵](http://partnerweb.vmware.com/comp_guide2/sim/interop_matrix.php)提供了有关不同版本的 VMware Tools(包括 open-vm-tools)与其他 VMware 产品兼容性的详细信息。
# 国际化
## 支持哪些语言?
open-vm-tools 支持以下语言:
- 英语
- 法语
- 德语
- 西班牙语
- 意大利语
- 日语
- 韩语
- 简体中文
- 繁体中文
# 其他
## 邮件列表
请根据您的问题性质向这些邮件列表之一发送电子邮件。
- 开发相关问题:open-vm-tools-devel@lists.sourceforge.net
- 其他问题:open-vm-tools-discuss@lists.sourceforge.net
- 一般项目公告:open-vm-tools-announce@lists.sourceforge.net
标签:Awesome, DNS解析, ESXi, HTTP工具, Linux工具, PE 加载器, Python工具, SaltStack, VMware, vSphere, 云基础设施, 客户端加密, 客户端加密, 客机操作系统, 容器监控, 开源项目, 性能优化, 文件共享, 桌面虚拟化, 检测绕过, 端口探测, 系统管理, 自动化运维, 虚拟化, 虚拟机增强, 远程执行, 驱动程序