解决 VMware 启动虚拟机时“Cannot open /dev/vmmon: No such file or directory”的错误

最近在 Ubuntu 上用 VMware 开了一个 Windows 10 虚拟机,但是在启动的时候却出现了“Cannot open /dev/vmmon: No such file or directory Please make sure that the kernel module `vmmon’ is loaded”的错误,导致虚拟机启动失败。在 VMWare 的 Knowledge Base 上找到了解决方法,这里记录一下。

原因

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

解决方法一

知道了原因,最直接的解决方法就是禁用安全引导模式,这个就要去 BIOS 里设置了,具体怎么禁用根据每个电脑型号去百度吧。如果要求必须使用安全模式引导,那就看方法二。

解决方法二

该方法的思想是:使用 openssl 生成密钥对来签署 vmmon 和 vmnet 模块,通过生成的密钥对来对这两个模块签名,最后再将模块导入到系统中。危险预警:此操作涉及到内核,请做好内核炸了的心理准备。(博主就差点翻车了 :(笑尿) )

下面是具体的操作步骤(已经在 Ubuntu 16.04 18.04 上测试通过,一般适用于所有 Linux 发行版,但特定的 Linux 发行版可能在命令上有所不同。)

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/"
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)
3.导入

通过运行下面的命令将密钥导入到系统的 MOK 列表:

mokutil --import MOK.der

向系统 MOK 列表注册是需要密码的,因此在这一步中你需要指定一个密码,在运行上面的命令后会让你输入一个密码,该密码会在后续的导入过程中让你再次输入。之后就是重启电脑,由 UEFI 引导来进行接下来的步骤。

4.重启

这一步由于官方没有给出示例,我在折腾的时候也差点翻车,这里我尽量说的详细点。

这一步正常情况下应该是电脑重启时就自动进入 UEFI 控制台模式(如果是多系统引导,要选择正确的启动引导后才能进入 UEFI 控制台模式),它会引导着你进行 MOK 的注册(enroll)。博主为了做演示,又进行了一次操作,下面是截图:

在进入 UEFI 控制台后,一般都会出现提示“perform enroll mok”之类的,屏幕下方还有重启的倒计时,此时要按回车键来进入图示的界面,移动高亮行选择"Enroll MOK",按回车继续
在进入 UEFI 控制台后,一般都会出现提示“perform enroll mok”之类的,屏幕下方还有重启的倒计时,此时要按回车键来进入图示的界面,移动高亮行选择”Enroll MOK”,按回车继续
移动高亮行选择“Continue”,当然你也可以选择 View Key,看看是不是你所签署的那个MOK
移动高亮行选择“Continue”,当然你也可以选择 View Key,看看是不是你所签署的那个MOK
这个界面是在询问你是否注册该 Key,选择 yes
接着就会让你输入密码,这个密码就是之前导入的时候让你输入的,注意在输入的时候不会有任何字符显示
接着就会让你输入密码,这个密码就是之前导入的时候让你输入的,注意在输入的时候不会有任何字符显示
如果密码正确就会回到一开始的界面,这个时候选择重启就行了
如果密码正确就会回到一开始的界面,这个时候选择重启就行了

重启之后就可以启动虚拟机了。结束 :(哈哈)

参考

“Cannot open /dev/vmmon: No such file or directory” error when powering on a VM (2146460)


版权说明:
作品 sunriseydy 采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
文章内容如未说明均为原创,欢迎转载,但请注明原作者(sunriseydy)和原文链接(https://blog.sunriseydy.top/technology/server-blog/server/vmware_cannot_open_vmmon/)
部分来自互联网的文章,如有侵权,请联系我,24小时内删除,谢谢

分享到微博 分享到QQ 微信赞赏 点赞 0

评论一下呗亲

电子邮件地址不会被公开。 必填项已用*标注