vmware error after upgrade to ubuntu 16.04

I just upgraded to ubuntu 16.04 and I started having problems with vmware (v 12.1.0 build-3272444).

When I try to play the virtual machine I receive the following error: Could not open /dev/vmmon: No such file or directory. Please make sure that the kernel module vmmon is loaded. followed by Failed to initialize monitor device.

I have spent some time in forums trying to find a solution. Typically in cases like this it is recommended to execute sudo vmware-modconfig --console --install-all, however in my case this doesn't work. In the command log I can see that there are issues.

Starting VMware services:
   Virtual machine monitor                                        failed
   Virtual machine communication interface                         done
   VM communication interface socket family                        done
   Blocking file system                                            done
   Virtual ethernet                                               failed
   VMware Authentication Daemon                                    done
Unable to start services

In the vmware log as well I can see that there problems. I tried to look for solutions to the issue generating the message: Failed to find /lib/modules/4.4.0-21-generic/build/include/linux/version.h, but without success.

2016-04-24T17:07:45.101+01:00| vthread-4| I125: The GCC version matches the kernel GCC minor version like a glove.
2016-04-24T17:07:45.101+01:00| vthread-4| I125: Validating path "/lib/modules/4.4.0-21-generic/build/include" for kernel release "4.4.0-21-generic".
2016-04-24T17:07:45.101+01:00| vthread-4| I125: Failed to find /lib/modules/4.4.0-21-generic/build/include/linux/version.h
2016-04-24T17:07:45.101+01:00| vthread-4| I125: /lib/modules/4.4.0-21-generic/build/include/linux/version.h not found, looking for generated/uapi/linux/version.h instead.
2016-04-24T17:07:45.101+01:00| vthread-4| I125: using /usr/bin/gcc for preprocess check
2016-04-24T17:07:45.115+01:00| vthread-4| I125: Preprocessed UTS_RELEASE, got value "4.4.0-21-generic".
2016-04-24T17:07:45.115+01:00| vthread-4| I125: The header path "/lib/modules/4.4.0-21-generic/build/include" for the kernel "4.4.0-21-generic" is valid.  Whoohoo!
2016-04-24T17:07:45.115+01:00| vthread-4| I125: Using temp dir "/tmp".
2016-04-24T17:07:45.116+01:00| vthread-4| I125: Obtaining info using the running kernel.
2016-04-24T17:07:45.116+01:00| vthread-4| I125: Setting header path for 4.4.0-21-generic to "/lib/modules/4.4.0-21-generic/build/include".
2016-04-24T17:07:45.116+01:00| vthread-4| I125: Validating path "/lib/modules/4.4.0-21-generic/build/include" for kernel release "4.4.0-21-generic".
2016-04-24T17:07:45.116+01:00| vthread-4| I125: Failed to find /lib/modules/4.4.0-21-generic/build/include/linux/version.h
2016-04-24T17:07:45.116+01:00| vthread-4| I125: /lib/modules/4.4.0-21-generic/build/include/linux/version.h not found, looking for generated/uapi/linux/version.h instead.
2016-04-24T17:07:45.116+01:00| vthread-4| I125: using /usr/bin/gcc for preprocess check
2016-04-24T17:07:45.123+01:00| vthread-4| I125: Preprocessed UTS_RELEASE, got value "4.4.0-21-generic".
2016-04-24T17:07:45.123+01:00| vthread-4| I125: The header path "/lib/modules/4.4.0-21-generic/build/include" for the kernel "4.4.0-21-generic" is valid.  Whoohoo!
2016-04-24T17:07:45.289+01:00| vthread-4| I125: found symbol version file /lib/modules/4.4.0-21-generic/build/Module.symvers
2016-04-24T17:07:45.289+01:00| vthread-4| I125: Reading symbol versions from /lib/modules/4.4.0-21-generic/build/Module.symvers.
2016-04-24T17:07:45.314+01:00| vthread-4| I125: Read 18759 symbol versions
2016-04-24T17:07:45.314+01:00| vthread-4| I125: Invoking modinfo on "vmmon".
2016-04-24T17:07:45.316+01:00| vthread-4| I125: "/sbin/modinfo" exited with status 0.
2016-04-24T17:07:45.316+01:00| vthread-4| I125: Invoking modinfo on "vmnet".
2016-04-24T17:07:45.319+01:00| vthread-4| I125: "/sbin/modinfo" exited with status 0.

Any help would be greatly appreciated!

Andreas


Solution 1:

Update: Note that while some indicate that VMWare version 12.1.1-3770994 fixes the issue - excellent for you! - unfortunately, this is not the case for me. I am running 12.1.1-3770994 and still having the problem as per my answer.

I suspect this is a Secure Boot issue. 16.04 now enforces module signatures and the the VMWare modules built by the VMWare installer (vmnet and vmmon) are not signed.

See here for info on the 16.04 change.

See here for a similar problem with VirtualBox.

You can test this by running modprobe manually:

sudo modprobe vmnet

You should see a "Required key not available" error or similar.

Two options:

  1. Disable Secure Boot in your BIOS.
  2. Manually sign your modules. See here for info on how to do this.

I'm unsure if VMWare will provide some mechanism for building this into the install procedure (will keep an eye on the VMWare forums...).

For me, I've had to disable Secure Boot for now as my BIOS does not seem to want to install my MOK (Module owned Key) key.

I'll keep you posted if I learn anything more.

Cheers, Daniel