Build guest vmware kernel modules
Pre built modules are sometimes not enough
When you select "install VMware Tools" then your VMware product will try to install the available vmware modules. If you run linux then sometimes the kernel will not match up with the prebuilt modules as are supplied with your vmware product. You can unzip the vmware tools .tar.gz bundle from the attached virtual CDrom and run the perl script, but if you just supply defaults you might still miss out on some modules as it will fail silently.
eg running:
./vmware-install.pl --default
is great as long as you have provided the VM with the right prerequisites.
The solution
Present the linux vmware tools virtual cd-rom to the VM and mount as a CDRom.
mount /dev/sr0 /mnt/cdrom
Copy the files to your home folder
cd ~ cp /cdrom/VMwareTools-*.tar.gz .
unzip
tar xfz VMwareTools-*.tar.gz
go into sub folder to build the tools
cd vmware-tools-distrib/
check and run pre-requisites from next paragraph if needed and then run:
sudo ./vmware-install.pl
Press <enter> on any questions asked.
After you are done you can remove the vmware-tool-distrib folder as it is only needed before the install.
After installing VMware Tools you now have the possibility to run
vmware-config-tools.pl
to configure how vmware tools is supposed to work.
Please note that on linux kernels 3.3 and higher, the original vmxnet module is no longer recommended. You are advised to use a newer virtual NIC such as vmxnet3 or e1000e.
Preconditions for the script to work
If you try to run the vmware-install.pl script and you need to build new kernel modules, then the script might give you the following error:
Before you can compile modules, you need to have the following installed... make gcc kernel headers of the running kernel
You will have to get your kernel-headers and a compiler and build system before hand. On Ubuntu or debian based systems execute this:
sudo apt-get install build-essential linux-headers-$(uname -r)
On fedora / Red Hat based systems:
su -c "yum install kernel-devel"
On SUSE / openSUSE use YaST to fetch the latest linux-kernel-headers
Troubleshooting
After the manual compile, you can run the lsmod command to see what modules it was able to load:
$ lsmod | grep -i vm
The following kernel modules are currently available:
- vmhgfs - shared folders
- vmxnet3 - virtual network adapter
- vmmemctl - memory
- vmw_balloon - balloon memory driver
- vmw_pvscsi - paravirtual scsi
- vmwgfx - accelerated graphics
- vmblock - enable drag & drop between guest and host OS (desktop feature)
- vmsync -
- vgauth - Guest Authentication
- vmw_vmci - inter-VM and host interface
- vmw_vsock_vmci_transport -
- vsock - virtual sockets
There's also a number of additional commands/scripts to enable other features
- /usr/bin/vmware-toolbox-cmd - shrink, upgrade, statistics, version, timesync, run scripts on power operations, power operations, control devices
- /usr/bin/vmware-user - advanced X features, guest resolution fit, drag and drop, file and text copy & paste. Running this will start the vmtoolsd daemon in /usr/lib/vmware-tools/sbin64
- /usr/lib/vmware-tools/sbin64/vmware-checkvm - prints VMware software version
- /usr/lib/vmware-tools/sbin64/vmware-modconfig-console - module helper for acquiring status, kernel headers version, is a link to /usr/lib/vmware-tools/bin64/appLoader option --install-all will actually build all of your modules as well.
- vmware-tools-thinprint - printing integration with the host using a virtual printing daemon
Alternative solution
Many Linux distributions now come with a package called open-vm-tools and while that does give you a good bases, there are still things missing. Most notable is the host guest file system integration that is provided by the vmhgfs kernel module.