Shortcut
You're experiencing the following VMware Workstation error when powering on your virtual machine:
Cannot open /dev/vmmon: No such file or directory. Please make sure that the kernel module ‘vmmon’ is loaded
If you would like to run a script to resolve your error check out my github:
Otherwise, a step by step walkthrough is up next.
Problem
If your Ubuntu machine is using the Unified Extensible Firmware Interface (UEFI) with secure boot enabled and you start up a virtual machine on VMWare Workstation you will get the following error:

If you attempt to load the kernel module manually it will be rejected by a security feature called secure boot. This is because unsigned drivers such as vmmon and vmnet are not permitted to load.
See the following error:

You have a couple options:
- Disable secure boot and load the modules
- Enroll a Machine Owner Key (MOK) with secure boot and sign the modules yourself.
Let's walk through the second option in order to load our modules while continuing to use the secure boot security feature.
Part 1 - Prerequisites
Open your shell and ensure you have the openssl and mokutil packages installed by running the following command:
sudo apt update && sudo apt install openssl mokutil
Part 2 - Generate the signing key
Create a directory for your signing key
mkdir ~/vmware-signing
Generate your signing keys by running the following command. They will be output in the directory you just created.
openssl req -new -x509 -newkey rsa:2048 -keyout ~/vmware-signing/MOK.priv -outform DER -out ~/vmware-signing/MOK.der -nodes -days 36500 -subj "/CN=VMware Module Signing/"
Part 3 - Enroll your key with secure boot
sudo mokutil --import ~/vmware-signing/MOK.der
This command will ask you to set a password. Record it because you will need it in the next step.
Reboot your computer and follow the steps on the prompt to enroll your keys
Part 4 - Sign the modules
Use the following commands to sign the necessary modules vmmon and vmnet
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ~/vmware-signing/MOK.priv ~/vmware-signing/MOK.der $(modinfo -n vmmon)
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ~/vmware-signing/MOK.priv ~/vmware-signing/MOK.der $(modinfo -n vmnet)
Part 5 - Reload the modules
Use the following command to reload the modules. You should now be able to power on your virtual machine.
sudo modprobe -r vmmon vmnet && sudo modprobe vmmon vmnet
Part 6 - Repeat Part 4 & 5 with each kernel update
You will find that when your kernel updates you will have to re-sign your VMware drivers.
Repeat steps 4 and 5.
