Fedora_V43安装使用的问题4

在启用安全启动的linux 上安装和构建 VMware Workstation 模块

我有时在电脑上使用 VMware Workstation 进行快速测试。然而,在最新版本(截至今日为 25H2)中,我仍然遇到 vmmon 和 vmnet 模块可以编译但无法正确安装的问题。查看日志后,我发现它们无法加载的原因是未签名。我的电脑启用了安全启动,因此内核不会将未签名的模块加载到内存中,因为它认为这些模块不安全。这篇博客将详细介绍如何创建密钥、安装密钥以及在编译完成后对内核模块进行签名,以便它们能够正确加载。

从博通的支持网站下载并安装了 VMware Workstation。现在个人用户可以免费使用。下载完成后,需要更改其权限,使其具有可执行权限,然后从终端运行安装程序:

chmod +x VMware-Workstation-Full-25H2-24995812.x86_64.bundle

sudo ./VMware-Workstation-Full-25H2-24995812.x86_64.bundle

安装完成后,内核模块会被编译,但无法安装。尝试运行虚拟机时,会失败并提示无法加载 vmmon 模块。尝试通过命令行界面 (CLI) 安装模块时,出现以下错误:

sudo modprobe vmmon

modprobe: ERROR: could not insert 'vmmon': Key was rejected by service

经过一番查找,我发现这是因为我使用了安全启动,而内核模块没有签名。所以我需要执行以下操作来对模块进行签名。

由于我们在安装NVIDIA驱动时已经创建了秘钥所以只要运行命令重新签名即可


sudo /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 /etc/pki/akmods/private/private_key.priv /etc/pki/akmods/certs/public_key.der $(modinfo -n vmmon)
sudo /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 /etc/pki/akmods/private/private_key.priv /etc/pki/akmods/certs/public_key.der $(modinfo -n vmnet)

如果是ubuntu系统下也要执行类似操作

它们将位于 /lib/modules/$(uname -r)/misc 目录中,但是我们将在下一个命令中将其用作变量,我们将使用该变量对模块进行签名:

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)

然后您可以使用该modprobe命令安装模块,但我通常只是重启电脑,让所有程序正常启动,然后我就可以正常打开 VMware Workstation 了。