If you use VMWare Fusion you can sometimes experience problems with kernel modules after upgrading. This issue typically presents itself after you reboot your Mac. This happend to me recently after I upgraded to High Sierra and then upgraded VMWare Fusion to version 10.

tl;dr

  1. Stop all running virtual machines if there are any
    This includes any in the background or ones that use Vagrant
  2. Quit VMWare Fusion if it is open
  3. Open Terminal
  4. Run these commands:
sudo kextunload /System/Library/Extensions/vmmon.kext
sudo rm -rf /System/Library/Extensions/vmmon.kext
sudo cp -pR /Applications/VMware\ Fusion.app/Contents/Library/kexts/vmmon.kext /System/Library/Extensions/
sudo kextutil /System/Library/Extensions/vmmon.kext

Step 5: Quit Terminal

Now you should be able to run VM Fusion without any issues. Confirm this by re-opening Fusion and starting a virual machine.

Uh… what?

The core problem here is that the kernel extension was somehow not unloaded and upgraded during the process of upgrading Fusion. When the versions do not match Fusion will fail to start a virtual machine with the error message “You have an incorrect version of the ‘vmmon’ kernel module.”

The terminal commands above will, in order:

  1. Unload the extension from the kernel
  2. Remove it
  3. Put the new, correct version in its place
  4. Reload the extension so Fusion can run virtual machines

Bonus: Verify the kernel extension version

If you want to verify the correct kernel extension has been loaded you could also run this command:

$ kextstat | grep vmx

Which, when ran, will give output similar to this:

… snip … com.vmware.kext.vmx86 (0752.01.54)