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

在经过详尽的在线研究和观看Youtube视频并面对所有建议的解决方案失败后,我需要您的专业帮助。

已在Ubuntu 18.4上安装了VMWare工作站15(请参见截图),但遇到了内核错误。

以下是我已经执行但未找到解决方案的步骤:

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

注册一个新的密钥并按照以下命令顺序进行注册:
  1. 运行 OpenSSL:

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

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

    tail $(modinfo -n vboxdrv) | grep "Module signature appended"
    
  4. 运行 mokutil

    sudo mokutil --import VMWARE.der
    

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

mokutil --test-key VMWARE.der

也可以通过手动注册司机来完成:
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./VMWARE.priv ./VMWARE.der $(modinfo -n vmmon)

最后:

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

请注意,我在Linux世界中是新手,因此希望能提供逐步指南!

System Info

VMWare Error 1

VMWare Error 2


VMWare支持提供了完整的指导,涉及密钥生成、签名等方面。请参考以下链接获取详细说明:https://kb.vmware.com/s/article/58533?lang=en_US 在完成上述指导并重新启动系统后,请按照这些指导进行"MOK注册"。 - dropdown
有用的链接 https://kb.vmware.com/s/article/2146460 - Ferroao
VMWare的团队在这个问题上有一个知识库页面:https://kb.vmware.com/s/article/2146460 - GMaster
sudo vmware-modconfig --console --install-all 可以解决问题 @Afshin - akikara
灾难!Ubuntu和VMware :-( - Jeroen van Langen
11个回答

接受的答案还可以,但是我们可以稍微改进一下格式和重新排序步骤,添加预期反馈等。原帖中提供了一些关于VirtualBox的信息,如果你没有它,可能会出现令人困惑的错误。
这个问题主要是由于安全启动导致的,安全启动不允许未经数字签名的内核模块加载。因此,我们需要创建一个可信的密钥,并使用它来签署新编译的模块vmmonvmnet
这些说明已经在VMWare 15和Ubuntu 18.04至19.04上进行了测试。
  1. 安装VMWare

  2. 运行以下命令

    sudo vmware-modconfig --console --install-all
    
你会发现显示器和网络有问题,没关系。
生成密钥
openssl req -new -x509 -newkey rsa:2048 -keyout VMWARE15.priv -outform DER -out VMWARE15.der -nodes -days 36500 -subj "/CN=VMWARE/"
你会看到信息,它做得很好。
使用我们刚生成的密钥来签署这两个内核模块。 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)
这没有给任何反馈。
检查签名是否正确应用。 tail $(modinfo -n vmmon) | grep "模块签名已附加"
你应该得到二进制文件(标准输入)匹配 现在我们通过以下命令将此密钥导入到机器所有者密钥(MOK)管理系统,使其成为信任的密钥。 在这里 你可以阅读更多关于Linux中MOK的工作的信息。
sudo mokutil --import VMWARE15.der

这将要求您输入密码,请输入一个稍微长一点的新密码,例如1515vmware。再次输入相同的密码。
7. 重启电脑后,你会看到一个有蓝色背景的菜单。在这个菜单里,你需要找到注册密钥并输入刚刚创建的密码。这只会发生一次,之后就可以继续启动。
8. 要测试驱动程序/模块是否正确安装,请输入以下命令:
```bash mokutil --test-key VMWARE15.der ```
你应该得到VMWARE15.der已经注册,这意味着VMWare应该可以正常工作。
所有的功劳归原作者。
注意:我发现在一些涉及内核(或类似的东西)的Linux更新之后,这个修复方法会停止起作用,你需要再次执行所有步骤才能使其重新工作。(无需重新安装vmware)

谢谢,效果非常好。 - sg28
2起初,我在重新启动后没有得到蓝屏背景,这是因为我的安全启动设置为从grubx64.efi引导,而不是shimx64.efi。但是在我将其更改为shim之后,MOK管理器要求我注册此密钥。 - darksky
太棒了!完美地运行了。 - Ken Ingram
4谢谢,对于这个很好的解释... 类似的教程也可以在VMware文档中找到:https://kb.vmware.com/s/article/2146460 - Imtiaz Shakil Siddique
在安装了全新的19.10版本后,vmware-workstation可以直接使用,无需额外设置。这个问题似乎已经在更新的内核/Ubuntu中得到修复。 - darksky
谢谢。问题解决了。说明非常清晰! - hatze
谢谢,运行得很顺利。我使用的是Linux系统,在重启时没有注册密钥,但它仍然有效。 - sg28
从一到五步刚刚好。 - EsmaeelE
这个完美地起作用了,谢谢! - Benji Vesterby
1步骤 - 6:我不确定,但我必须重新启动命令行sudo reboot,才能在启动时获得蓝屏。我使用的是Ubuntu 18.04。 - KLiFF
谢谢兄弟...这个完美地起作用了。 - thiagoBarbosa48
这种方法适用于Ubuntu 20.04 LTS;2020年9月28日。 - user2989643
工作正常,但我有两个注意事项: 1:“密切关注重新启动”。您必须手动中断引导序列以输入密钥。否则,在几秒钟后会跳过,并且您必须在重新启动之前重复导入命令(这是答案的第6步)。 2:键盘配置错误。我有一个法语键盘,并输入了“azeAZE123”作为密码。必须键入“qweQWE&é”才能识别我的密码。如果使用更复杂的密码可能会有些棘手。我的操作系统是某个桌面版的Ubuntu 20.x。 - Balmipour
在Pop_OS!上,我只需要进行第二步就能解决这个问题。 - CenterOrbit
非常感谢,这确实帮了大忙。 - Tanishq Vyas
我在一台惠普Elitedesk G3上尝试了这个。启动后我进行了注册,但在重新启动期间出现了黑屏。Ubuntu 20.04 - Al Grant
1BIOS中安全启动(Secure Boot)是开启还是关闭有关系吗? - Al Grant
这些步骤在Ubuntu 22.04上经过测试,一切正常 :-) - Dhaval D
在我的Debian 11系统上,有"modinfo"但没有"mokutil" :( - Thomas Tempelmann
我可以确认@KLiFF的建议使用sudo reboot对我来说是必要的。 - Amjo
这在Ubuntu 22.04上对我非常有效。谢谢! - KBurchfiel

我写了一个简单的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

你还可以在我的github仓库https://github.com/rune1979/ubuntu-vmmon-vmware-bash)中找到它。

3谢谢!我可以确认这个方法在Ubuntu 20和当前版本的VMware Player(15.5.6)上仍然有效。 - Dan Dascalescu
1太棒了,@Rune79!很少见到像你这样具有自动化思维和分享方式的人。非常感谢! - Nam G VU
2@Rune79 给出错误:“此系统不支持 EFI 变量”。有什么想法吗? - akikara
我认为这个人可能会在这个问题上给出一些指导。 - Rune79
我没有启用EFI,遇到了相同的问题,并且当尝试使用解决方案时,得到了和@Run79一样的错误提示:'此系统不支持EFI变量'。 - schmoopy
我从18LTS开始使用Ubuntu,现在运行的是20LTS,但自始至终都启用了安全启动,突然几天前出现了这个问题(可能是有内核更新而我没有注意到?)。不管怎样,这个脚本非常好用。 - ubuntux
1在Ubuntu 22.04LTS上使用Vmware 16运行良好。感谢您使事情变得非常简单。 - sam
在Ubuntu 22.04和VMWare Workstation Player 17上运行得非常好。非常感谢这个节省时间的解决方案! - KBurchfiel

问题解决了!我按照原帖中完全相同的步骤操作,唯一不同的是我将密钥的名称改成了其他的!新的密钥成功地在开发目录中签名了vmmon,并且VMware正常工作了!

1我不明白你具体改变了什么,但它起作用了。 - Fatemeh Karimi
1嗨Fatemeh!基本上,当你安装VirtualBox或VmWare时,会引入一个新的内核到Linux中。当你安装Linux时,通常会设置一个安全启动,并且安全启动会阻止任何新的内核工作,除非附加了一个安全密钥。解决方案是创建一个新的安全密钥,安装它,重新启动并注册密钥,以便vmware的新内核能够与之配合工作。这是一个令人沮丧的过程,但最终成功了!哈哈,如果你有其他问题,请告诉我... - Afshin
我按照指示更改了名称,当我运行"mokutil --test-key VMWARE.der"命令时,终端返回"mokutil --test-key VMWARE.der",我认为这意味着它已经起作用; 但是,当我尝试在VMplayer上加载我的VM时,它给了我与您最初相同的两个错误。 - WitchsFISTS

我也遇到了这个问题,并按照上述步骤解决了它,但每次更新后都需要重新执行这些步骤。所以我意识到我可以在我的BIOS中禁用安全启动,问题立即得到解决。

在我的情况下,当我尝试从VMware Player启动虚拟机时,我也遇到了这些错误。我没有使用安全启动,但是在我运行Ubuntu 16.04时安装了VMware Player。那时候VMware一切正常。一周前,我升级到了Ubuntu 18.04,问题就从那时开始出现了。对我来说,我只需要按照楼主指出的第一步操作即可。
$ sudo vmware-modconfig --console --install-all

不需要卸载或重新安装应用程序,也不需要签署任何内核模块。甚至无需重启电脑 - 只需再次启动VMware Player即可。

我做了以下组合来使其正常工作。
卸载:
sudo vmware-installer -u vmware-player
Install build essentials and gtk module
sudo apt install build-essential gcc
sudo apt install libcanberra-gtk-module

重新安装Vmware Player

sudo ./VMware-Player-15.0.2-10952284.x86_64.bundle

在脚本的GitHub存储库中,按照这里的说明运行ubuntu-vmmon-vmware-bash。
wget https://raw.githubusercontent.com/rune1979/ubuntu-vmmon-vmware-bash/master/wm_autoupdate_key.sh
sudo chmod +x wm_autoupdate_key.sh
./wm_autoupdate_key.sh 

因为我的Ubuntu 18.04.5 LTS内核更新了,所以我不得不再次重复整个过程,所以我准确地记录下了我所做的一切。
在安装了VMWARE-Player之后(如果您的计算机上已经安装了VMWARE-Player,则无需重新安装),或者在更新了Linux内核之后,您需要执行以下操作:
由于在更新了Ubuntu内核之后,您的VMWARE需要进行更新,并且还会尝试运行/签名和执行vmmon和vmnet的密钥,但在大多数情况下,第二部分将无法正常工作,因此您需要运行一些脚本并重新启动系统,请参考下面的顺序。
sudo vmware-modconfig --console --install-all
openssl req -new -x509 -newkey rsa:2048 -keyout VMWARE.priv -outform DER -out VMWARE.der -nodes -days 36500 -subj "/CN=VMWARE/"
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./VMWARE.priv ./VMWARE.der $(modinfo -n vboxdrv)       

上述代码会产生一个错误,因为它是针对vbox的,但我还是运行了它。
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./VMWARE.priv ./VMWARE.der $(modinfo -n vmmon)
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./VMWARE.priv ./VMWARE.der $(modinfo -n vmnet)
sudo mokutil --import VMWARE.der

重要提示:您的密码不应超过5个字符,我只选择了确切长度为5个小写字母。
- 我重新启动了机器,进行了冷启动。 - 启动时我按了几次空格键,出现了一个菜单: - 我选择了Enroll Mock - 继续 - 是 - 密码 - 重新启动
重新启动后,我启动了VMWARE-Player并打开了我的kali虚拟机或任何您想要启动的虚拟机,它成功启动了。

这里使用空格键进行“重新启动”的步骤对我来说是缺失的一部分,谢谢你加上了!再加上https://askubuntu.com/a/1145426/1652162解决了问题。 - DriveItLikeYouStoleIt

我会先从您的系统中卸载VMWare Workstation,方法如下:
sudo vmware-installer -u vmware-workstation

现在让我们重新安装它,但在安装Vmware Workstation Player 15软件包之前,让我们使用以下命令安装/更新软件包及其依赖项的新版本:
sudo apt-get update

现在我们需要安装一些依赖项,这些依赖项是 Vmware Workstation Player 15 安装所需的(默认情况下,它们应该已经安装在 Ubuntu 18.04 上,但如果没有安装,将会安装):
首先按照以下步骤安装 build-essential 和 gcc:
sudo apt install build-essential gcc

然后按照以下步骤安装libcanberra-gtk-module:
sudo apt install libcanberra-gtk-module

让我们继续进行Vmware Workstation的安装。
在终端中运行以下命令来安装VMware Workstation Player 15:
mkdir ~/vmware
cd ~/vmware
wget -c https://download3.vmware.com/software/player/file/VMware- 
Player-15.0.2-10952284.x86_64.bundle

(目前,截至今天,最新的捆绑包)
或者
忘记“wget”部分,在这里下载捆绑包:

https://my.vmware.com/en/web/vmware/free#desktop_end_user_computing/vmware_workstation_player/15_0

将其放入您刚创建的vmware目录中。
为该软件包授予权限:
sudo chmod u+x VMware-Player-15.0.2-10952284.x86_64.bundle

最后,安装:
sudo ./VMware-Player-15.0.2-10952284.x86_64.bundle

一旦安装程序启动,请按照屏幕上的指示完成安装。
选择“我接受许可协议中的条款”,然后点击“下一步”。 启动时更新;选择是(如果需要)。 反馈;选择是或否。 许可密钥是可选的(对于Workstation Pro而言是必需的,但可以留空)。
在下一个屏幕上点击“安装”。
完成后关闭。
---注意---
如果未启用3D加速: 编辑隐藏文件/.vmware/preferences,并查找以以下内容开头的行:
mks.gl.allowBlacklistedDrivers

如果它不存在,你可以将其添加到文件中。
这应该被更改为:
mks.gl.allowBlacklistedDrivers = "TRUE"

---此外---

转到 /vmware/ 文件夹下的 .vmx 文件 使用 gedit(或等效软件)打开它,并添加以下行:

mks.gl.allowBlacklistedDrivers = "TRUE"

对于Windows客户机,我还在隐藏文件和上述的".vmx"文件中添加了以下行:
mks.enableDX11Renderer = "FALSE"
mks.enableGLRenderer = "TRUE"

这将把3D加速从默认的DX11切换到OpenGL。
这应该能让您开始运行并解决问题。

1感谢你的努力,但是没有起作用!这个解决方案基本上就是卸载和重新安装vmware,而我已经做过了;不过还是谢谢。 - Afshin
很高兴看到你成功解决了问题。是的,你说得对;卸载并重新安装它就好了。这是我安装它的方法,从来没有出过任何问题。 - Dave

在我的情况下,我也遇到了这些错误,当我尝试从 VMware Player 版本 17.0.1 启动虚拟机时。我没有使用安全启动,但是在我运行 Ubuntu 22.04 LTS 时安装了 VMware Player。几个月来,VMware 一直正常工作。登录时,出现了“/dev/vmmon…”的消息。以下方法解决了这个问题: $ sudo vmware-modconfig --console --install-all
不需要卸载或重新安装应用程序,也无需签署任何内核模块。甚至不需要重启-只需重新启动 VMware Player。
系统信息:Jammy 22.04 LTS;内核 5.15.0-60 x86-64

1重复的问题,已经在https://askubuntu.com/a/1145426/中回答过了。 - karel

(2019年9月3日)
对我来说的解决方案是:

(

卸载:
sudo vmware-installer -u vmware-workstation 

取消安装:

sudo vmware-installer -u vmware-player

)

并且

安装:

sudo ./VMware-Player-15.1.0-13591040.x86_64.bundle