VMware Workstation 12 vmmon 未找到或未加载

ng0*_*323 12 vmware

在 Ubuntu 12.04 上,我一直愉快地使用 VMware Workstation 6。然后,有一天,在启动 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.
Run Code Online (Sandbox Code Playgroud)

我不确定原因,但这可能纯粹是推测性的,因为升级了 Nvidia 驱动程序(这类似于访问牙医办公室,所以请不要告诉我再次使用图形驱动程序。 )
为了寻求解决方案,我使用 GUI 安装程序更新到 VMware Workstation 12。

gksudo bash xxxxx.bundle  
Run Code Online (Sandbox Code Playgroud)

我认为在继续安装新版本之前卸载旧版本已经足够聪明了。一切都很好,除了当我尝试启动虚拟机时出现上述相同的问题。确实,正如所建议的,我在我的系统中找不到文件或目录/dev/vmmon(在重新安装到新版本之前也是如此。)
按照另一个明智的建议,我尝试了:

sudo vmware-modconfig --console --install-all
Run Code Online (Sandbox Code Playgroud)

完整的输出(以免我因缺乏提供细节而被否决)是这样的:

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
Run Code Online (Sandbox Code Playgroud)

我看到了一些警告消息,但没有错误,因此确实令人困惑的是缺少和可卸载的vmmon 的情况

遵循其他建议:

>> 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)
Run Code Online (Sandbox Code Playgroud)

我拼命寻求你的明智忠告。

小智 15

sudo vmware-modconfig --console --install-all 
Run Code Online (Sandbox Code Playgroud)

这个命令为我修复了它


小智 8

从 UEFI 禁用安全启动是一个糟糕的答案,但它是 VMWare 论坛上的官方答案。

我在安装 VirtualBox 时遇到了类似的问题,并使用相同的方法设法解决了我的 VMWare问题。这使我可以保持启用安全启动并使用 VMWare。

问题是 vmware 内核模块未签名,因此在启用安全启动时无法加载。但是,您可以“自签名”该模块,这就是我为 VMWare 工作站和 VirtualBox 所做的。

  1. 转到此论坛帖子:https : //forums.virtualbox.org/viewtopic.php?f=7&t=77363&start=15
  2. 转至 Fayce66 于 2016 年 5 月 6 日 08:37 发表的帖子
  3. 在每个命令中,将内核模块“vboxdrv”(虚拟机模块名称)替换为“vmmon”(vmware 模块名称)
  4. 您可能需要为内核模块“vmnet”(vmware 网络模块)再次执行所有命令

这些步骤对我有用。我能够保持启用安全启动并使用 VMWare Workstation。


Eri*_*riC 8

您使用 VMware Workstation 12 的问题可能是...

在启用了安全模式的 Linux 主机上,不允许加载任何未签名的驱动程序。因此,VMware 驱动程序(例如 vmmon 和 vmnet)无法加载,从而阻止虚拟机启动。

要在不关闭安全启动的情况下解决此问题,您可以在终端中执行以下操作以对驱动程序进行自签名:

  1. 使用 openssl 生成密钥对对 vmmon 和 vmnet 模块进行签名:

    openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=VMware/"
    
    Run Code Online (Sandbox Code Playgroud)

    (将 MOK 替换为所需的密钥文件名。)

  2. 通过运行以下命令,使用生成的密钥对模块进行签名:

    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)
    
    Run Code Online (Sandbox Code Playgroud)
  3. 通过运行以下命令将公钥导入系统的 MOK 列表:

    sudo mokutil --import MOK.der
    
    Run Code Online (Sandbox Code Playgroud)
  4. 确认此 MOK 注册请求的密码。

  5. 重新启动您的机器。按照说明从 UEFI 控制台完成注册。

引自这篇 VMWare 文章:https : //kb.vmware.com/kb/2146460