我刚刚安装了具有安全启动功能的 Ubuntu 16.04,并遇到了与此处所述相同的vmware 错误:
modprobe: ERROR: could not insert 'vmnet': Required key not available
.
规避此问题的一种方法是禁用安全启动,但我不想这样做。另一种方法是签署内核模块由我自己,这下很详细的线程。有一个关于如何在 RHEL和fedora 中执行此操作的教程,但所有这些解决方案都依赖于我似乎找不到的一些脚本:
sudo /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vmmon)
我在哪里可以sign-file
在 Ubuntu 中找到这个脚本?
相关:https : //github.com/bergwolf/rhel6/blob/master/Documentation/module-signing.txt并在内核编译后签署模块。
Jos*_*Jos 10
在 Ubuntu 上,这将是/usr/src/linux-headers-$(uname -r)/scripts/sign-file
.
我是怎么想出来的?我做了一个搜索sign-file
:
dpkg -S sign-file
它告诉我哪个包提供了这个文件(当前linux-headers-4.4.0-22-generic
)以及它的安装位置,即在/usr/src/linux-headers-4.4.0-22-generic/scripts/
.
这uname -r
部分只是为了使命令独立于当前安装的 headers-generic 包。
从 VMware 的站点,您的问题的原因可能是:
在启用了安全模式的 Linux 主机上,不允许加载任何未签名的驱动程序。因此,VMware 驱动程序(例如 vmmon 和 vmnet)无法加载,从而阻止虚拟机启动。
要在不关闭安全启动的情况下解决此问题,您可以在终端中执行以下操作:
使用 openssl 生成密钥对对 vmmon 和 vmnet 模块进行签名:
~$ openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=VMware/"
(将 MOK 替换为所需的密钥文件名。)
通过运行以下命令,使用生成的密钥对模块进行签名:
~$ 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)
通过运行以下命令将公钥导入系统的 MOK 列表:
~$ sudo mokutil --import MOK.der
确认此 MOK 注册请求的密码。
引自这篇 VMWare 文章:https : //kb.vmware.com/kb/2146460
归档时间: |
|
查看次数: |
16801 次 |
最近记录: |