Ubuntu 18.4 上的 VMWare 15 错误 - 无法打开 /dev/vmmon:没有这样的文件或目录

Afs*_*hin 25 vmware kernel

在用尽在线和 youtube 视频研究并面临所有这些建议的解决方案失败后,我需要您的专业帮助。

在 Ubuntu 18.4 上安装了 VMWare 工作站 15(请参见屏幕截图)并出现内核错误。

这些是我已经执行但没有解决方案的步骤:

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

注册了一个新密钥并按顺序通过以下命令注册:

  1. 运行 OpenSSL:

    openssl req -new -x509 -newkey rsa:2048 -keyout VMWARE.priv -outform DER -out VMWARE.der -nodes -days 36500 -subj "/CN=VMWARE/"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 运行sign-file

    sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./VMWARE.priv ./VMWARE.der $(modinfo -n vboxdrv)
    
    Run Code Online (Sandbox Code Playgroud)
  3. 运行tail

    tail $(modinfo -n vboxdrv) | grep "Module signature appended"
    
    Run Code Online (Sandbox Code Playgroud)
  4. 运行mokutil

    sudo mokutil --import VMWARE.der
    
    Run Code Online (Sandbox Code Playgroud)

然后我重新启动 --> 在启动成功时注册密钥并通过以下方式确认:

mokutil --test-key VMWARE.der
Run Code Online (Sandbox Code Playgroud)

还通过以下方式手动注册驱动程序:

sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./VMWARE.priv ./VMWARE.der $(modinfo -n vmmon)
Run Code Online (Sandbox Code Playgroud)

最后:

sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./VMWARE.priv ./VMWARE.der $(modinfo -n vmnet)
Run Code Online (Sandbox Code Playgroud)

请注意,我是 Linux 世界的新手,因此将不胜感激分步说明!

系统信息

VMWare 错误 1

VMWare 错误 2

Gui*_*ino 49

接受的答案是好的,但做得更好一些格式化和重新排序的步骤,添加预期的反馈等。 OP 有一些关于 VirtualBox 的信息,如果你没有它,它会产生令人困惑的错误。

这个问题的发生本质上是因为安全启动不允许内核模块在没有使用受信任证书进行数字签名的情况下加载。所以我们需要创建一个可信的密钥并用它来对新编译的模块vmmonvmnet.

这些说明已经针对 VMWare 15 和 Ubuntu 18.04 到 19.04 进行了测试。

  1. 安装 VMWare
  2. 运行这个

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

    你会看到显示器和网络有问题,没关系。

  3. 生成密钥

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

    你会看到信息表明它做得很好。

  4. 使用我们刚刚生成的这个密钥对两个内核模块进行签名。

    sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./VMWARE15.priv ./VMWARE15.der $(modinfo -n vmmon)
    sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./VMWARE15.priv ./VMWARE15.der $(modinfo -n vmnet)
    
    Run Code Online (Sandbox Code Playgroud)

    这不会给出任何反馈

  5. 检查签名是否正确应用。

    tail $(modinfo -n vmmon) | grep "Module signature appended"
    
    Run Code Online (Sandbox Code Playgroud)

    你应该得到 Binary file (standard input) matches

  6. 现在,我们通过使用以下命令将其导入机器所有者密钥 (MOK) 管理系统来使该密钥受信任。在这里你可以阅读更多关于 MOK 在 Linux 中的工作。

    sudo mokutil --import VMWARE15.der
    
    Run Code Online (Sandbox Code Playgroud)

    这将要求您输入密码,输入一些新密码,如1515vmware. 重新输入相同的密码。

  7. 重启,重启时你应该看到一个蓝屏背景的菜单,你必须自己注册密钥并输入你刚刚创建的密码,这只会发生一次,然后继续启动。

  8. 要测试正确安装的驱动程序/模块,请输入命令

    mokutil --test-key VMWARE15.der
    
    Run Code Online (Sandbox Code Playgroud)

    你应该得到VMWARE15.der is already enrolled,这意味着 VMWare 应该可以工作。

所有学分都归功于 OP。

注意:我发现在一些涉及内核(或类似的东西)的 Linux 更新之后,此修复程序停止工作,您必须再次执行所有步骤才能使其再次工作。(无需重新安装vmware)

  • 谢谢,很好的解释......也可以从 VMware Doc 中找到类似的教程:https://kb.vmware.com/s/article/2146460 (4认同)
  • 起初,重新启动后我没有看到蓝屏背景,但那是因为我的安全启动设置为从 grubx64.efi 启动,而不是从 shimx64.efi 启动。但在我将其更改为 shim 后,MOK 经理要求我注册此密钥。 (2认同)

Run*_*e79 7

我制作了一个简单的 bash 脚本来对该过程进行少量自动化。在修补 Ubuntu 时,这似乎是一个反复出现的问题,我每次都发现自己在谷歌上搜索解决方案。

cd /tmp
wget https://raw.githubusercontent.com/rune1979/ubuntu-vmmon-vmware-bash/master/wm_autoupdate_key.sh
chmod +x wm_autoupdate_key.sh
./wm_autoupdate_key.sh
Run Code Online (Sandbox Code Playgroud)

您也可以在我的 github 存储库中找到它(https://github.com/rune1979/ubuntu-vmmon-vmware-bash

  • 谢谢你!我可以确认这仍然适用于 Ubuntu 20 和当前版本的 VMware Player (15.5.6) (3认同)
  • @Rune79 给出错误:“此系统不支持 EFI 变量”。有任何想法吗? (2认同)

Afs*_*hin 5

问题解决了!除了将密钥的名称更改为其他名称外,我按照原始帖子中的完全相同的步骤进行操作!新密钥在 dev 目录中成功签署了 vmmon,并且 vmware 工作正常!