Ubuntu – VMWare Workstation Pro 12 on Ubuntu 16.04 cannot compile vmmon

virtualizationvmware

I've installed the VMware bundle without issues in my Ubuntu 16.04 (dual booth). When I try to run it and it tries compiling, it generates the following log, it can't compile vmmon:

...
2016-08-15T16:13:39.909+02:00| vthread-4| I125: Successfully extracted the vmmon source.
2016-08-15T16:13:39.910+02:00| vthread-4| I125: Building module with command "/usr/bin/make -j8 -C /tmp/modconfig-SUMBLV/vmmon-only auto-build HEADER_DIR=/lib/modules/4.4.0-34-generic/build/include CC=/usr/bin/gcc IS_GCC_3=no"
2016-08-15T16:13:40.934+02:00| vthread-4| W115: Failed to build vmmon.  Failed to execute the build command.

I've started troubleshooting the problem by searching on the web and
I've changed the get_user_pages method name to get_user_pages_remote both in vmnet.tar and vmmon.tar in their directory, but it hasn't solved the problem, vmmon still won't compile.

When starting VMware with gksudo via the terminal I get the following error messages:

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

Thinking it would've been a graphic card related issue I've successfully installed the NVidia drivers for my graphic card, disabled Secure Boot by using the MOK management utility when booting up after having installed them. I've also disabled Secure Boot in my BIOS, it's an Asus laptop.

I forgot to install the VMWare bundle using gksudo, I thought it was unlikely the problem source, but I'll point this out just for accuracy sake.

The kernel version is 4.4.0-34-generic. I've read it should be up to the VMWare team to patch this kernel version, is there a quick fix to solve this or should I shoot for Virtualbox and get it over with?

I have some virtual machine images I'd like to import from somewhere else.

Thanks for reading.

Best Answer

I had the same issue. Here is the fix Go to the folder

cd /usr/lib/vmware/modules/source

Untar the file vmmon.tar using (you might need su/sudo to do these)

tar xf vmmon.tar

Edit the file ./vmmon-only/linux/driver.c

nano ./vmmon-only/linux/driver.c

Apply these changes, courtesy of https://forums.gentoo.org/viewtopic-p-7841306.html#7841306 At around line 400, delete lines starting with a - and add ones starting with a + (don't actually put the +). There's a way to do this using the patch command but whatever. If you know how to read patch files you'll see the user on that form included another change to another file but it all works without me carrying that out.

#ifdef VMX86_DEVEL 
    unregister_chrdev(linuxState.major, linuxState.deviceName); 
 #else 
-   if (misc_deregister(&linuxState.misc)) { 
-      Warning("Module %s: error unregistering\n", linuxState.deviceName); 
-   } 
+   misc_deregister(&linuxState.misc); 

Backup the original

mv vmmon.tar vmmon.tarbackup

Retar the files

tar cf vmmon.tar ./vmmon-only

I'm a little iffy from this point on, since I did a few things and didn't test after each step. So both of these might not be strictly necessary. Recompile libs using the driver.c you just edited

sudo vmware-modconfig --console --install-all

Run VMWare, telling it to use the libs you just compiled

sudo VMWARE_USE_SHIPPED_LIBS=yes vmwarex:
Related Question