Wanna see this logo while booting your 2.6 kernel? Click here!

29.06.2007 12:33

Updating VMware Tools to compile under 2.6.21.5


Today I deployed a new virtual machine on our ESX hosts at work. This time it should be a linux guest (Debian 4.0) with the most recent stable kernel version (2.6.21.5) but when trying to install the VMware tools package (VMware Tools 3.0.1 build-43424) some of the provided kernel modules (namely vmmemctl, vmhgfs and vmxnet) refused to compile on 2.6.21.5.

Fortunately, there was not much todo to make them compile again but I wasn't able to find a working patch in the VMware community forums nor anywhere else, so I want to provide the updated module sources here for your convenience.

1. vmmemctl

The following error messages appear when trying to compile the vmmemctl module:
Building the vmmemctl module.

Using 2.6.x kernel build system.
make: Entering directory `/tmp/vmware-config0/vmmemctl-only'
make -C /lib/modules/2.6.21.5/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: Entering directory `/usr/src/linux-2.6.21.5'
  CC [M]  /tmp/vmware-config0/vmmemctl-only/os.o
/tmp/vmware-config0/vmmemctl-only/os.c:26:26: error: linux/config.h: No such file or directory
make[2]: *** [/tmp/vmware-config0/vmmemctl-only/os.o] Error 1
make[1]: *** [_module_/tmp/vmware-config0/vmmemctl-only] Error 2
make[1]: Leaving directory `/usr/src/linux-2.6.21.5'
make: *** [vmmemctl.ko] Error 2
make: Leaving directory `/tmp/vmware-config0/vmmemctl-only'
Downloads:


2. vmhgfs

The following error messages appear when trying to compile the vmhgfs module:
Building the vmhgfs module.

Using 2.6.x kernel build system.
make: Entering directory `/tmp/vmware-config0/vmhgfs-only'
make -C /lib/modules/2.6.21.5/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: Entering directory `/usr/src/linux-2.6.21.5'
  CC [M]  /tmp/vmware-config0/vmhgfs-only/cpName.o
  CC [M]  /tmp/vmware-config0/vmhgfs-only/cpNameLinux.o
  CC [M]  /tmp/vmware-config0/vmhgfs-only/dev.o
  CC [M]  /tmp/vmware-config0/vmhgfs-only/driver.o
/tmp/vmware-config0/vmhgfs-only/driver.c: In function 'HgfsChangeFileAttributes':
/tmp/vmware-config0/vmhgfs-only/driver.c:763: error: 'struct inode' has no member named 'i_blksize'
/tmp/vmware-config0/vmhgfs-only/driver.c: In function 'HgfsInitializeInode':
/tmp/vmware-config0/vmhgfs-only/driver.c:835: error: 'struct inode' has no member named 'u'
/tmp/vmware-config0/vmhgfs-only/driver.c: In function 'HgfsIget':
/tmp/vmware-config0/vmhgfs-only/driver.c:884: error: 'struct inode' has no member named 'u'
/tmp/vmware-config0/vmhgfs-only/driver.c: In function 'HgfsCreate':
/tmp/vmware-config0/vmhgfs-only/driver.c:1535: error: 'struct inode' has no member named 'u'
/tmp/vmware-config0/vmhgfs-only/driver.c: In function 'HgfsLookup':
/tmp/vmware-config0/vmhgfs-only/driver.c:1635: error: 'struct inode' has no member named 'u'
/tmp/vmware-config0/vmhgfs-only/driver.c: In function 'HgfsMkdir':
/tmp/vmware-config0/vmhgfs-only/driver.c:1727: error: 'struct inode' has no member named 'u'
/tmp/vmware-config0/vmhgfs-only/driver.c: In function 'HgfsDelete':
/tmp/vmware-config0/vmhgfs-only/driver.c:1854: error: 'struct inode' has no member named 'u'
/tmp/vmware-config0/vmhgfs-only/driver.c: In function 'HgfsRename':
/tmp/vmware-config0/vmhgfs-only/driver.c:2046: error: 'struct inode' has no member named 'u'
/tmp/vmware-config0/vmhgfs-only/driver.c:2048: error: 'struct inode' has no member named 'u'
/tmp/vmware-config0/vmhgfs-only/driver.c: In function 'HgfsRevalidate':
/tmp/vmware-config0/vmhgfs-only/driver.c:2288: error: 'struct inode' has no member named 'u'
/tmp/vmware-config0/vmhgfs-only/driver.c: In function 'HgfsSetattr':
/tmp/vmware-config0/vmhgfs-only/driver.c:2425: error: 'struct inode' has no member named 'u'
/tmp/vmware-config0/vmhgfs-only/driver.c: In function 'HgfsOpen':
/tmp/vmware-config0/vmhgfs-only/driver.c:2801: error: 'struct inode' has no member named 'u'
/tmp/vmware-config0/vmhgfs-only/driver.c: In function 'HgfsDirOpen':
/tmp/vmware-config0/vmhgfs-only/driver.c:3414: error: 'struct inode' has no member named 'u'
/tmp/vmware-config0/vmhgfs-only/driver.c: In function 'HgfsClearInode':
/tmp/vmware-config0/vmhgfs-only/driver.c:4105: error: 'struct inode' has no member named 'u'
/tmp/vmware-config0/vmhgfs-only/driver.c: At top level:
/tmp/vmware-config0/vmhgfs-only/driver.c:4245: warning: initialization from incompatible pointer type
/tmp/vmware-config0/vmhgfs-only/driver.c: In function 'HgfsGetSb':
/tmp/vmware-config0/vmhgfs-only/driver.c:4454: error: too few arguments to function 'get_sb_nodev'
/tmp/vmware-config0/vmhgfs-only/driver.c: At top level:
/tmp/vmware-config0/vmhgfs-only/driver.c:4500: warning: initialization from incompatible pointer type
make[2]: *** [/tmp/vmware-config0/vmhgfs-only/driver.o] Error 1
make[1]: *** [_module_/tmp/vmware-config0/vmhgfs-only] Error 2
make[1]: Leaving directory `/usr/src/linux-2.6.21.5'
make: *** [vmhgfs.ko] Error 2
make: Leaving directory `/tmp/vmware-config0/vmhgfs-only'
Unable to build the vmhgfs module.
Downloads:


3. vmxnet

The following error messages appear when trying to compile the vmxnet module:
Building the vmxnet module.

Using 2.6.x kernel build system.
make: Entering directory `/tmp/vmware-config2/vmxnet-only'
make -C /lib/modules/2.6.21.5/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: Entering directory `/usr/src/linux-2.6.21.5'
  CC [M]  /tmp/vmware-config2/vmxnet-only/vmxnet.o
/tmp/vmware-config2/vmxnet-only/vmxnet.c:11:26: error: linux/config.h: No such file or directory
/tmp/vmware-config2/vmxnet-only/vmxnet.c: In function 'vmxnet_open':
/tmp/vmware-config2/vmxnet-only/vmxnet.c:813: warning: passing argument 2 of 'request_irq' from incompatible pointer type
/tmp/vmware-config2/vmxnet-only/vmxnet.c: In function 'vmxnet_tx':
/tmp/vmware-config2/vmxnet-only/vmxnet.c:945: error: 'CHECKSUM_HW' undeclared (first use in this function)
/tmp/vmware-config2/vmxnet-only/vmxnet.c:945: error: (Each undeclared identifier is reported only once
/tmp/vmware-config2/vmxnet-only/vmxnet.c:945: error: for each function it appears in.)
make[2]: *** [/tmp/vmware-config2/vmxnet-only/vmxnet.o] Error 1
make[1]: *** [_module_/tmp/vmware-config2/vmxnet-only] Error 2
make[1]: Leaving directory `/usr/src/linux-2.6.21.5'
make: *** [vmxnet.ko] Error 2
make: Leaving directory `/tmp/vmware-config2/vmxnet-only'
Unable to build the vmxnet module.
Downloads:


Installation Instructions

1. Click on the "Install VMware Tools" option in your Virtual Machine

2. Mount the VMware Tools CD
mount /cdrom

3. Copy the tar.gz file to a temporary location and extract it
cp /cdrom/VMwareTools-3.0.1-43424.tar.gz /tmp
cd /tmp
tar xzf VMwareTools-3.0.1-43424.tar.gz

4. Replace the shipped tarballs with the ones you downloaded here
cp /where/you/downloaded/my/tarballs/*.tar /tmp/vmware-tools-distrib/lib/modules/source

5. Install VMware Tools
cd /tmp/vmware-tools-distrib
./vmware-install.pl

After you did that, all modules should compile flawlessly.
If they don't, don't hesitate to contact me.