12

On Ubuntu 12.04, I have been happily using VMware Workstation 6. Then, one fine day, this error occurred when starting a VM:

Could not open /dev/vmmon: No such file or directory.
Please make sure that the kernel module `vmmon' is loaded.
Failed to initialize monitor device.

I'm not sure of the reason, but it could be, purely speculative, due to upgrading the Nvidia driver (it was akin to a visit to the dentist's office, so please do not tell me to mess around again with the graphic driver.)
In pursuit of a resolution, I updated to VMware Workstation 12 using the GUI installer.

gksudo bash xxxxx.bundle  

I assume it was smart enough to uninstall the older version before proceeding to installing the new version. All is good, except the same problem above occured when I tried to start a virtual machine. Indeed, as counselled, I could not find the file or directory /dev/vmmon in my system (this is also true before reinstalling to the newer version.)
Following another wise counsel, I tried:

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

The full output (lest I be downvoted for lack of providing detail) is such:

Stopping VMware services:
   VMware Authentication Daemon                                        done
   VM communication interface socket family                            done
   Virtual machine communication interface                             done
   Virtual machine monitor                                             done
   Blocking file system                                                done
Using kernel build system.
make: Entering directory `/tmp/modconfig-ha12A3/vmmon-only'
/usr/bin/make -C /lib/modules/3.13.0-49-generic/build/include/..    SUBDIRS=$PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR= modules
make[1]: Entering directory `/usr/src/linux-headers-3.13.0-49-generic'
  CC [M]  /tmp/modconfig-ha12A3/vmmon-only/linux/driver.o
  CC [M]  /tmp/modconfig-ha12A3/vmmon-only/linux/driverLog.o
  CC [M]  /tmp/modconfig-ha12A3/vmmon-only/linux/hostif.o
  CC [M]  /tmp/modconfig-ha12A3/vmmon-only/common/apic.o
  CC [M]  /tmp/modconfig-ha12A3/vmmon-only/common/comport.o
  CC [M]  /tmp/modconfig-ha12A3/vmmon-only/common/cpuid.o
  CC [M]  /tmp/modconfig-ha12A3/vmmon-only/common/hashFunc.o
  CC [M]  /tmp/modconfig-ha12A3/vmmon-only/common/memtrack.o
  CC [M]  /tmp/modconfig-ha12A3/vmmon-only/common/phystrack.o
  CC [M]  /tmp/modconfig-ha12A3/vmmon-only/common/task.o
  CC [M]  /tmp/modconfig-ha12A3/vmmon-only/common/vmx86.o
  CC [M]  /tmp/modconfig-ha12A3/vmmon-only/vmcore/moduleloop.o
/tmp/modconfig-ha12A3/vmmon-only/linux/driver.c: In function   ‘LinuxDriver_Ioctl’:
/tmp/modconfig-ha12A3/vmmon-only/linux/driver.c:1983: warning: the frame size of 1280 bytes is larger than 1024 bytes
  LD [M]  /tmp/modconfig-ha12A3/vmmon-only/vmmon.o
  Building modules, stage 2.
  MODPOST 1 modules
WARNING: "mcount" [/tmp/modconfig-ha12A3/vmmon-only/vmmon.ko] undefined!
  CC      /tmp/modconfig-ha12A3/vmmon-only/vmmon.mod.o
  LD [M]  /tmp/modconfig-ha12A3/vmmon-only/vmmon.ko
make[1]: Leaving directory `/usr/src/linux-headers-3.13.0-49-generic'
/usr/bin/make -C $PWD SRCROOT=$PWD/. \
      MODULEBUILDDIR= postbuild
make[1]: Entering directory `/tmp/modconfig-ha12A3/vmmon-only'
make[1]: `postbuild' is up to date.
make[1]: Leaving directory `/tmp/modconfig-ha12A3/vmmon-only'
cp -f vmmon.ko ./../vmmon.o
make: Leaving directory `/tmp/modconfig-ha12A3/vmmon-only'
Using kernel build system.
make: Entering directory `/tmp/modconfig-ha12A3/vmnet-only'
/usr/bin/make -C /lib/modules/3.13.0-49-generic/build/include/..     SUBDIRS=$PWD     SRCROOT=$PWD/. \
  MODULEBUILDDIR= modules
make[1]: Entering directory `/usr/src/linux-headers-3.13.0-49-generic'
  CC [M]  /tmp/modconfig-ha12A3/vmnet-only/driver.o
  CC [M]  /tmp/modconfig-ha12A3/vmnet-only/hub.o
  CC [M]  /tmp/modconfig-ha12A3/vmnet-only/userif.o
  CC [M]  /tmp/modconfig-ha12A3/vmnet-only/netif.o
  CC [M]  /tmp/modconfig-ha12A3/vmnet-only/bridge.o
  CC [M]  /tmp/modconfig-ha12A3/vmnet-only/procfs.o
  CC [M]  /tmp/modconfig-ha12A3/vmnet-only/smac_compat.o
  CC [M]  /tmp/modconfig-ha12A3/vmnet-only/smac.o
  CC [M]  /tmp/modconfig-ha12A3/vmnet-only/vnetEvent.o
  CC [M]  /tmp/modconfig-ha12A3/vmnet-only/vnetUserListener.o
  LD [M]  /tmp/modconfig-ha12A3/vmnet-only/vmnet.o
  Building modules, stage 2.
  MODPOST 1 modules
WARNING: "mcount" [/tmp/modconfig-ha12A3/vmnet-only/vmnet.ko] undefined!
  CC      /tmp/modconfig-ha12A3/vmnet-only/vmnet.mod.o
  LD [M]  /tmp/modconfig-ha12A3/vmnet-only/vmnet.ko
make[1]: Leaving directory `/usr/src/linux-headers-3.13.0-49-generic'
/usr/bin/make -C $PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR= postbuild
make[1]: Entering directory `/tmp/modconfig-ha12A3/vmnet-only'
make[1]: `postbuild' is up to date.
make[1]: Leaving directory `/tmp/modconfig-ha12A3/vmnet-only'
cp -f vmnet.ko ./../vmnet.o
make: Leaving directory `/tmp/modconfig-ha12A3/vmnet-only'
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

I see a couple of warning messages but no errors, hence baffling indeed the case of the missing and unloadable vmmon.

Following other counsels:

>> sudo /etc/init.d/vmware restart
Stopping VMware services:
   VMware Authentication Daemon                                        done
   VM communication interface socket family                            done
   Virtual machine communication interface                             done
   Virtual machine monitor                                             done
   Blocking file system                                                done
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

>> sudo modprobe vmmon
FATAL: Error inserting vmmon (/lib/modules/3.13.0-49-generic/misc/vmmon.ko): Unknown symbol in module, or unknown parameter (see dmesg)

Thy wise counsel I desperately seeketh.

5
  • I tried to copy over the vmmon file from another workstation which was doing well with VMware but couldn't. It's a 0 byte 'special' file. What is this dastardly vmmon-ster ???
    – ng0323
    Commented Dec 9, 2015 at 2:18
  • I have tried manually uninstalling from the command line then reinstalled the latest version (downloaded today) and repeated the above counsels, but alas my efforts were in vain!
    – ng0323
    Commented Dec 9, 2015 at 6:36
  • 1
    Please try sudo vmware-modconfig --console --install-all Commented Dec 9, 2015 at 15:51
  • 1
    Is there a way to fix that with ufi boot enabled?
    – rafaelphp
    Commented Jul 14, 2016 at 15:05
  • @CharlesGreen solution worked for me
    – TungstenX
    Commented Jul 27, 2016 at 9:29

5 Answers 5

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

This command fixed it for me

1
  • Excellent, fix errors when connecting a network adapter such as: NET: MACVNetPortOpenDevice: Ethernet1: can't open vmnet device. Commented Jun 8, 2020 at 16:07
8

Disabling Secure Boot from UEFI is a poor answer but it's the official answer on the VMWare forum.

I had a similar issue when installing VirtualBox and managed to resolve my VMWare issue using the same method. This allows me to keep secure boot enabled and also use VMWare.

The issue is that the vmware kernel module is not signed so fails to be loaded when secure boot is enabled. However you can "self sign" the module which is what I did for both VMWare workstation and VirtualBox.

  1. Go to this forum post : https://forums.virtualbox.org/viewtopic.php?f=7&t=77363&start=15
  2. Go to the post by Fayce66 on 6 May 2016, 08:37
  3. In each command replace the kernel module "vboxdrv" (virtualbox module name) with "vmmon" (vmware module name)
  4. You might have to do all the commands again for kernel module "vmnet" (vmware network module)

These steps worked for me. I am able to keep secure boot enabled and use VMWare Workstation.

3
8

It's possible that your problem with VMware Workstation 12 is that...

On Linux host with secure mode enabled, it is not allowed to load any unsigned drivers. Due to this, VMware drivers, such as vmmon and vmnet, are not able to be loaded which prevents virtual machine to power on.

To fix this without turning off secure boot, you can do the following in a terminal to self-sign the drivers:

  1. Generate a key pair using the openssl to sign vmmon and vmnet modules:

    openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=VMware/"
    

    (Replace MOK with the name of the file you want for the key.)

  2. Sign the modules using the generated key by running these commands:

    sudo /usr/src/linux-headers-`uname -r`/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vmmon)
    sudo /usr/src/linux-headers-`uname -r`/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vmnet)
    
  3. Import the public key to the system's MOK list by running this command:

    sudo mokutil --import MOK.der
    
  4. Confirm a password for this MOK enrollment request.

  5. Reboot your machine. Follow the instructions to complete the enrollment from the UEFI console.

Cited from this VMWare article: https://kb.vmware.com/kb/2146460

1
  • This fixed my problem, thanks! Just be sure to have sudo /usr/src/linux-headers-`uname -r`/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vmmon) and sudo /usr/src/linux-headers-`uname -r`/scripts/sign-file sha256 ./MOK.priv ./MOK.der $ (modinfo -n vmnet) as per the linked page and add sudo to mokutil --import MOK.der call above, with the option to use sudo passwd root followed by sudo mokutil --import MOK.der --root-pw if as above doesn't work.
    – Campbeln
    Commented Mar 2, 2018 at 15:21
1

Just disable Secure Boot from UEFI options.

https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2103112

1
  • Disabling secure boot is not a poor answer. In fact this is the only one which worked for both of my machines(Desktop and laptop) running ubuntu 18.04 LTS and VMPlayer 14.x. Problem occurs at the time of opening an image file. Rather than spending a lot of time in various work around - i would recommend better to disable secure boot for the time being and later enable it when the image has been loaded and used.
    – Ashu
    Commented May 20, 2018 at 18:52
0

I build an automated shell script to help download, extract and build the VMWARE vmnet and vmmon files. Running this should fix the issue.

Try it here -> vmware-host-modules-builder-cli and create an issue if you encounter any problems.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .