Update 01-11-08: VMware Workstation 6.5 is out and seems to have done away with the need for patching the installation

After upgradering my workstation to Ubuntu Intrepid Ibex (8.10) I have run into the same problem as always with VMware Workstation. It will not compile against the installed kernel (in this case 2.6.26).

This problem is not isolated to Ubuntu but affects all distributions using a 2.6.25 or 2.6.26 kernel (from what I gather). The fix for 6.0.3 and kernel 2.6.24 does not work.

vmmon:

Using 2.6.x kernel build system.
make: Entering directory `/tmp/vmware-config0/vmmon-only'
make -C /lib/modules/2.6.26-4-generic/build/include/..
SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.26-4-generic'
  CC [M]  /tmp/vmware-config0/vmmon-only/linux/driver.o
/tmp/vmware-config0/vmmon-only/linux/driver.c:197: error: unknown field 'nopage'
  specified in initializer
/tmp/vmware-config0/vmmon-only/linux/driver.c:198: warning:
initialization from incompatible pointer type
make[2]: *** [/tmp/vmware-config0/vmmon-only/linux/driver.o] Error 1
make[1]: *** [_module_/tmp/vmware-config0/vmmon-only] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.26-4-generic'
make: *** [vmmon.ko] Error 2
make: Leaving directory `/tmp/vmware-config0/vmmon-only'
Unable to build the vmmon module.

vmblock:

Using 2.6.x kernel build system.
make: Entering directory `/tmp/vmware-config1/vmblock-only'
make -C /lib/modules/2.6.26-4-generic/build/include/..
SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.26-4-generic'
  CC [M]  /tmp/vmware-config1/vmblock-only/linux/block.o
  CC [M]  /tmp/vmware-config1/vmblock-only/linux/control.o
/tmp/vmware-config1/vmblock-only/linux/control.c: In function 'SetupProcDevice':
/tmp/vmware-config1/vmblock-only/linux/control.c:139: error: 'proc_root_fs' undeclared (first use in this function)
/tmp/vmware-config1/vmblock-only/linux/control.c:139: error: (Each undeclared identifier is reported only once
/tmp/vmware-config1/vmblock-only/linux/control.c:139: error: for each function it appears in.)
/tmp/vmware-config1/vmblock-only/linux/control.c: In function 'CleanupProcDevice':
/tmp/vmware-config1/vmblock-only/linux/control.c:199: error: 'proc_root_fs' undeclared (first use in this function)
make[2]: *** [/tmp/vmware-config1/vmblock-only/linux/control.o] Error 1
make[1]: *** [_module_/tmp/vmware-config1/vmblock-only] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.26-4-generic'
make: *** [vmblock.ko] Error 2
make: Leaving directory `/tmp/vmware-config1/vmblock-only'
Unable to build the vmblock module.

Luckily I found the solution in the VMware Communities forums.

  1. Download the updated
    vmmon,
    vmblock and
    vmnet modules (I have made a local copy).
  2. Copy the three files to /usr/lib/vmware/modules/source
  3. Run vmware-config.pl again

After these steps the modules compiles and loads. I still had problems running any virtual machine (just like the last the time I tried 6.0.4 – these instuctions also apply to VMware Workstation 6.0.4 on Ubuntu Gutsy and Hardy).

VMware Workstation unrecoverable error: (vcpu-0) VCPU 0 RunVM failed: Operation not permitted.

The answer was in /var/log/messages

[ 3819.148810] /dev/vmmon[17746]: Task_Switch: Intel VT mode is in use by some other software
[ 3819.148810] /dev/vmmon[17746]: Vmx86_RunVM: Task_Switch failed

After doing a little digging it turns out VMware has changed something making it incompatible with qemu and KVM – Because unloading the kvm module fixed the problem

$ sudo modprobe -r kvm_intel

I ended up uninstalling kvm.

Some people are reporting problems with the clock in VMware Workstation running on kernel 2.6.26. This is because (on Ubuntu Intrepid at least) the device is now called /dev/rtc0 (probably because of some changes in the kernel).

The fix is the add the following to /etc/udev/rules.d/85-hwclock.rules:

# Add a symlink from rtc0 to rtc to allow "legacy" apps to work
KERNEL=="rtc*", SYMLINK+="rtc"

and then restart udev

$ sudo /etc/init.d/udev restart

I have seriously considered switching to another virtualization solution (namely KVM or VirtualBox) but I am sticking with VMware for the time being because networking is a lot easier with Workstation although wireless bridging does not work out of the box and no patches are yet available for 6.0.4.