If you need to run VMware Workstation 7.1.6 or Player 3.1.6 (because newer versions require virtualization support in CPU) with recent kernels, you will run into several problems:

  1. If you use kernel with just two-number version (e.g. 3.11), VMware refuses to compile the kernel modules because it expects three numbers in kernel version (e.g. 3.2.0). This can be solved by patching VMware binary files:
    # sed 's/\x83\xe8\x03\x83\xf8\x01\x0f\x96\xc0/\x83\xe8\x02\x83\xf8\x01\x0f\x96\xc0/' -i /usr/lib/vmware/lib/libvmware-modconfig-console.so/libvmware-modconfig-console.so
    # sed 's/\x83\xe8\x03\x83\xf8\x01\x0f\x96\xc0/\x83\xe8\x02\x83\xf8\x01\x0f\x96\xc0/' -i /usr/lib/vmware/lib/libvmware-modconfig.so/libvmware-modconfig.so

    as described here: https://bbs.archlinux.org/viewtopic.php?pid=974766#p974766
  2. If you attempt to compile the modules manually, it will fail because they use deprecated kernel functions. This can be solved by applying some patches to the module sources:
    • Patch that updates the modules to work with kernel 3.4:
      from http://blog.errorok.com/2012/07/07/262/
      This also includes patch-modules_3.4.0.sh script that does all the work – unpacking, patching, packing the sources back and running compilation.
    • Patches to vmblock and vmnet for kernel 3.12:
      from https://github.com/amitkr/vmware-patches
  3. VMware fails to find kernel header files because it searches for version.h file at /lib/modules/`uname -r`/build/include/linux/version.h. This can be easily solved by creating a symlink to the new file location:
    ln -s /lib/modules/`uname -r`/build/include/generated/uapi/linux/version.h /lib/modules/`uname -r`/build/include/linux/version.h

I put everything together and created a package of the above patches and modified script that does everything automatically: vmware-patch_for_kernel_3.11.tar.gz

  1. Make sure you have gcc and kernel headers for the currently running kernel installed:
    # aptitude install linux-headers-`uname -r`
  2. Install VMware:
    $ kdesu ./VMware-Player-3.1.6-744570.i386.bundle

    $ gksu ./VMware-Player-3.1.6-744570.i386.bundle
  3. Unpack and apply the patches:
    $ tar xf vmware-patch_for_kernel_3.11.tar.gz
    # cd vmware-patch_for_kernel_3.11
    # ./patch-vmware_for_kernel_3.11.sh
  4. Run VMware.

Tested with Debian Wheezy using kernel 3.11 from wheezy-backports.

Comments are closed.