Fixes to VMware Tools

Written at evening time in English • Tags: , , , ,

I just patched a couple of ESXi hosts to 4.0.0 build 256968 and found that VMware Tools were no longer loading after upgrading them. After some digging everything is more or less back to normal.

Turns out that insserv(8) isn’t happy on Ubuntu 9.10 or 10.04, so now vmware-config-tools.pl falls back to using update-rc.d(8). However, since old rc.d links have been left behind, update-rc.d won’t do anything at all. On top of that vmware-config-tools.pl calls it incorrectly.

Before running vmware-config-tools.pl or vmware-tools-upgrader first remove all the rc.d links:

cd /etc
rm -f rc?.d/*vmware-tools

On one of my systems I had multiple links at each run level, with different priorities, left behind from earlier VMware Tools installations. I guess regular manual inspection of the state of the links is warranted.

You may also want to apply this patch to vmware-config-tools.pl before running it:

--- vmware-config-tools.pl.orig 2010-06-06 19:45:49.176241344 -0400
+++ vmware-config-tools.pl      2010-06-06 20:25:56.000000000 -0400
@@ -1495,7 +1495,7 @@
    if ($gHelper{'update-rc.d'} ne '') {
      if (0 == system(shell_string($gHelper{'update-rc.d'}) . " " . $service
                     . " start " . $S_level . " S ."
-                     . " start " . $K_level . " 0 6 .")) {
+                     . " stop " . $K_level . " 0 6 .")) {
        return;
      }
    }

If your Linux kernel is 2.6.32 or later, the vmci module probably isn’t compiling for you either. Unpack the sources:

cd /tmp
tar -xvf /usr/lib/vmware-tools/modules/source/vmci.tar

Then apply this patch:

--- vmci-only.old/vmciKernelIf.c        2010-05-07 00:11:18.000000000 -0400
+++ vmci-only/vmciKernelIf.c    2010-06-06 20:39:40.693377830 -0400
@@ -44,6 +44,7 @@
 #include "compat_page.h"
 #include "compat_mm.h"
 #include "compat_highmem.h"
+#include "compat_sched.h"
 #include "vm_basic_types.h"
 #include "pgtbl.h"
 #include <linux/vmalloc.h>

Then replace the source tar with the patched files:

cd /tmp
tar -cvf /usr/lib/vmware-tools/modules/source/vmci.tar vmci-only

Now run vmware-config-tools.pl and everything should compile fine and you should have good start and stop links in your rc.d directories. Note that a start link is only installed in run level S: that’s okay, as according to the documentation that level is always run on boot. Seems to hold true, as the tools are now loaded fine on my systems.