ubuntu安装vmware启动虚拟机失败
一、背景
为了在本地环境中作一些实验而不影响现有环境,因此决定在系统中安装vmware,在vmware中装ubuntu系统。在安装好虚拟机ubuntu后,无法启动。
因此记录下问题以及解决方式
1.1 环境
笔记本
OS: Ubuntu 22.04.5 LTS
vmware: VMware-Workstation-Full-17.6.3
二、问题分析
可以看出系统中确实是没有加载vmmon.ko
为什么没有加载vmmon.ko ?
系统是SecureBoot模式启动的,要求内核加载的驱动都需要签名。
从boot的配置看,内核驱动开启了签名,并且是sha512算法。
可以看出vmmon.ko没有签名信息,因此被拒绝加载了
任意查询一个已经加载的ko文件,确实都是有签名的
三、解决
方法1 直接禁止secureboot
sudo mokutil --disable-validation
- 执行以上命令,将要求输入密码,并且确认密码
- 重启系统
- 启动过程中将要求输入
步骤1
中的密码中的某几位 - 密码验证通过后,将弹出选择boot状态改变,选择禁用
- 确定后,继续启动
经过以上操作后,机器启动后vmmon.ko就加载了,虚拟机也正常运行了。
启动时,屏幕会输出insecure boot mode
sudo mokutil --enable-validation
开启secureboot,流程和禁止secureboot一样。
方法2 签名ko
给vmmon.ko文件制作签名。
sudo kmodsign sha512 /var/lib/shim-signed/mok/MOK.priv /var/lib/shim-signed/mok/MOK.der /lib/modules/$(uname -r)/misc/vmmon.kosudo kmodsign sha512 /var/lib/shim-signed/mok/MOK.priv /var/lib/shim-signed/mok/MOK.der /lib/modules/$(uname -r)/misc/vmnet.ko
同时也将vmnet.ko制作签名,vmmon.ko和vmnet.ko都是安装vmware产生的。
重启系统
$ reboot
四、总结
secureboot模式的系统,内核加载ko时会验证ko的签名,如果没有签名则不会加载;而安装vmware时生成的ko是没有签名的,导致无法加载,软件功能受限。以上两种方式都尝试可以,最终选择了给ko签名的方式,以保证系统的安全。