Baike.dev
All toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
O

open-vm-tools

> 编程语言
Open source

Official repository of VMware open-vm-tools project

2.6K stars0 likes0 views
WebsiteGitHub

About

Official repository of VMware open-vm-tools project

General

What is the open-vm-tools project?

open-vm-tools is a set of services and modules that enable several features in VMware products for better management of, and seamless user interactions with, guests. It includes kernel modules for enhancing the performance of virtual machines running Linux or other VMware supported Unix like guest operating systems.

open-vm-tools enables the following features in VMware products:

  • Graceful execution of power operations (reboot and shutdown) in the guest.
  • Execution of built-in or user configured scripts in the guest during various power operations.
  • Running programs, commands and file system operations in the guest to enhance guest automation.
  • Authentication for guest operations.
  • Generation of heartbeat from guest to host for vSphere HA solution to determine guest's availabilty.
  • Clock synchronization between guest and host.
  • Quiescing guest file systems to allow host to capture file-system-consistent guest snapshot.
  • Execution of pre-freeze and post-thaw scripts while quiescing guest file systems.
  • Customization of the guest immediately after power on.
  • Periodic collection of network, disk, and memory usage information from the guest.
  • Resizing the graphical desktop screen of the guest.
  • Shared Folders operations between host and guest file systems on VMware Workstation and VMware Fusion.
  • Copying and pasting text, graphics, and files between guest and host or client desktops.
  • Dragging and dropping files between guest and host UI.
  • Periodic collection of running applications, services, and containers in the guest.
  • Accessing content from GuestStore.
  • Publishing data to Guest Data Publisher.
  • Managing Salt-Minion desired state specified in a guest variable.

Can you provide more details on the actual code being released?

The following components have been released as open source software:

  • Solaris and FreeBSD drivers for various devices and file system access.
  • Linux drivers have been upstreamed to the Linux community and are not provided in the open-vm-tools release.
  • The PowerOps plugin to perform graceful power operation and run power scripts.
  • The VIX plugin to run programs and commands, and perform file system operations in guest.
  • The GuestInfo plugin to periodically collect various statistics from guest.
  • The TimeSync plugin to perform time synchronization.
  • The dndcp plugin to support drag and drop, and text and file copy/paste operations.
  • The ResolutionSet plugin to adjust guest screen resolutions automatically based on window sizes.
  • The vmbackup plugin to support quiesced snapshot operation.
  • The GuestStore plugin to support GuestStore operation.
  • The gdp plugin to support guest data publishing operation.
  • The AppInfo plugin to periodically collect application information.
  • The ServiceDiscovery plugin to periodically collect service information.
  • The ContainerInfo plugin to periodically collect container information.
  • The ComponentMgr plugin to handle desired state operations.
  • The guest authentication service.
  • The toolbox command to perform disk wiping and shrinking, manage power scripts, and time synchronization.
  • The guest SDK libraries to provide information about virtual machine to guest.
  • Client and server for shared folders support.
  • Multiple monitor support.
  • Other utilities.

Is open-vm-tools available with Linux distributions?

Yes. open-vm-tools packages for user space components are available with new versions of major Linux distributions, and are installed as part of the OS installation in several cases. Please refer to VMware KB article http://kb.vmware.com/kb/2073803 for details. All leading Linux vendors support open-vm-tools and bundle it with their products. For information about OS compatibility for open-vm-tools, see the VMware Compatibility Guide at http://www.vmware.com/resources/compatibility Automatic installation of open-vm-tools along with the OS installation eliminates the need to separately install open-vm-tools in guests. If open-vm-tools is not installed automatically, you may be able to manually install it from the guest OS vendor's public repository. Installing open-vm-tools from the Linux vendor's repository reduces virtual machine downtime because future updates to open-vm-tools are included with the OS maintenance patches and updates. NOTE: Most of the Linux distributions ship two or more open-vm-tools packages. "open-vm-tools" is the core package without any dependencies on X libraries and "open-vm-tools-desktop" is an additional package with dependencies on "open-vm-tools" core package and X libraries. The "open-vm-tools-sdmp" package contains a plugin for Service Discovery. There may be additional packages, please refer to the documentation of the OS vendor. Note that the open-vm-tools packages available with Linux distributions do not include Linux drivers because Linux drivers are available as part of Linux kernel itself. Linux kernel versions 3.10 and later include all of the Linux drivers present in open-vm-tools except the vmhgfs driver. The vmhgfs driver was required for enabling shared folders feature, but is superseded by vmhgfs-fuse which does not require a kernel driver.

Will there be continued support for VMware Tools and OSP?

VMware Tools will continue to be available under a commercial license. It is recommended that open-vm-tools be used for the Linux distributions where open-vm-tools is available. VMware will not provide OSPs for operating systems where open-vm-tools is available.

How does this benefit other open source projects?

Under the terms of the GPL, open source community members are able to use the open-vm-tools code to develop their own applications, extend it, and contribute to the community. They can also incorporate some or all of the code into their projects, provided they comply with the terms of the GPL.

License Related

What license is the code being released under?

The code is being released under GPL v2 and GPL v2 compatible licenses. To be more specific, the Linux kernel modules are being released under the GPL v2, while almost all of the user level components are being released under the LGPL v2.1. The SVGA and mouse drivers have been available under the X11 license for quite some time. There are certain third party components released under BSD style licenses, to which VMware has in some cases contributed, and will continue to distribute with open-vm-tools.

Why did you choose these licenses?

We chose the GPL v2 for the kernel components to be consistent with the Linux kernel's license. We chose the LGPL v2.1 for the user level components because some of the code is implemented as shared libraries and we do not wish to restrict proprietary code from linking against those libraries. For consistency, we decided to license the rest of the userlevel code under the LGPL v2.1 as well.

What are the obligations that the license(s) impose?

Each of these licenses have different obligations. For questions about the GPL, LGPL licenses, the Free Software Foundation's GPL FAQ page provides lots of useful information. For questions about the other licenses like the X11, BSD licenses, the Open Source Initiative has numerous useful resources including mailing lists. The Software Freedom Law Center provides legal expertise and consulting for free and open source software (FOSS) developers.

Can I use all or part of this code in my proprietary software? Do I have to release the source code if I do?

Different open source licenses have different requirements regarding the release of source code. Since the code is being released under various open source licenses, you will need to comply with the terms of the corresponding licenses.

Am I required to contribute back any changes I make to the code?

No, you aren't required to contribute any changes that you make back to the open-vm-tools project. However, we encourage you to do so.

Can I use all or part of this code in another open source package?

Yes, as long as you comply with the appropriate license(s).

Can I package this for my favorite operating system?

Yes! Please do.

Will the commercial version (VMware Tools) differ from the open source version (open-vm-tools)? If so, how?

Our goal is to work towards making the open source version as close to the commercial version as possible. However, we do currently make use of certain components licensed from third parties as well as components from other VMware products which are only available in binary form.

If I use the code from the open-vm-tools project in my project/product, can I call my project/product VMware Tools?

No, since your project/product is not a VMware project/product.

Building open-vm-tools

How do I build open-vm-tools?

open-vm-tools uses the GNU Automake tool for generating Makefiles to build all sources. More information about Automake can be found here: http://www.gnu.org/software/automake/

Project build information:

The following steps will work on most recent Linux distributions:

autoreconf -i
./configure
make
sudo make install
sudo ldconfig

Service Discovery (sdmp) plugin

To build the optional sdmp (Service Discovery) plugin use the --enable-servicediscovery option to invoke the configure script:

./configure --enable-servicediscovery

The open-vm-tools 12.0.0 release introduces an optional setup script and two plugins (one optional)

  • Salt Minion Setup
  • Component Manager plugin
  • ContainerInfo plugin (optional)

Salt Minion Setup

The Salt support on Linux consists of a single bash script to setup Salt Minion on VMware virtual machines. The script requires the "curl" and "awk" commands to be available on the system.

Linux providers supplying open-vm-tools packages are recommended to provide Salt Minion support in a separate optional package - "open-vm-tools-salt-minion".

To include the Salt Minion Setup in the open-vm-tools build use the --enable-salt-minion option when invoking the configure script.

./configure --enable-salt-minion

Component Manager (componentMgr) plugin

The component Manager manages a preconfigured set of components available from VMware that can be made available on the Linux guest. Currently the only component that can be managed is the Salt Minion Setup.

ContainerInfo (containerInfo) plugin

The optional containerInfo plugin retrieves a list of the containers running on a Linux guest and publishes the list to the guest variable "guestinfo.vmtools.containerinfo" in JSON format. The containerInfo plugin communicates with the containerd daemon using gRPC to retrieve the desired information. For containers that are managed by Docker, the plugin uses libcurl to communicate with the Docker daemon and get the names of the containers.

Since this plugin requires additional build and runtime dependencies, Linux vendors are recommended to release it in a separate, optional package - "open-vm-tools-containerinfo". This avoids unnecessary dependencies for customers not using the feature.

Canonical, Debian, Ubuntu Linux

Build Dependencies Runtime
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, ...

Build Dependencies Runtime
libcurl-devel curl
protobuf-compiler protobuf
protobuf-devel grpc-cpp
grpc-plugins
grpc-devel
containerd-devel

Configuring the build for the ContainerInfo plugin

The configure script defaults to building the ContainerInfo when all the needed dependencies are available. ContainerInfo will not be built if there are missing dependencies. Invoke th

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

C

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言