在VMware虚拟机中安装Ubuntu时,Secure Boot(安全启动)的启用状态会直接影响虚拟机的运行。以下是详细分析及解决方案:
1. Secure Boot启用时的问题
-
模块加载失败:
当主机BIOS启用Secure Boot时,VMware的核心模块(如vmmon
和vmnet
)由于未经过数字签名,无法通过UEFI的安全验证,导致虚拟机启动失败,报错例如:Could not open /dev/vmmon: No such file or directory
Failed to initialize monitor device
这一问题在Ubuntu 16.04至24.04等版本中普遍存在。
-
根本原因:
Secure Boot要求所有内核模块必须由受信任的证书签名,而VMware默认安装的模块(如vmmon.ko
)未包含有效签名,因此被系统拒绝加载。
2. 解决方案
方案一:禁用Secure Boot(推荐)
-
操作步骤:
- 重启主机并进入BIOS/UEFI设置界面。
- 找到
Secure Boot
选项并将其设置为Disabled。 - 保存设置并重启系统。
- 重新启动VMware服务或虚拟机即可正常运行。
-
优势:
操作简单,适用于大多数用户,尤其是非生产环境。
方案二:手动签名VMware模块(高级)
-
适用场景:
需保持Secure Boot启用,同时希望使用VMware。 -
操作步骤:
- 生成自签名证书:
openssl req -new -x509 -newkey rsa:2048 -keyout VMWARE.priv -outform DER -out VMWARE.der -nodes -days 36500 -subj "/CN=VMware/"
- 签名
vmmon
和vmnet
模块:
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)
- 导入证书