Pil*_*ot6 97 kernel dkms uefi secure-boot
此问题仅发生在启用了安全启动的 UEFI 系统上。
当我尝试安装诸如 VirtualBox、Nvidia 或 Broadcom 驱动程序之类的 DKMS 模块时,它们不会安装,Required key not available当我尝试安装它们时,我会安装modprobe。
VirtualBox 抱怨vboxdrv未加载。
Broadcomwl驱动程序显示lspci -k为内核模块,但未使用。sudo modprobe wl抛出Required key not available。
当我从 git 源安装一些内核模块时,也可能发生这个问题。
内核更新后可能会出现此问题,如禁用无线适配器、重启后黑屏等。
我该如何解决?
Pil*_*ot6 104
从 Ubuntu 内核 4.4.0-20 开始,EFI_SECURE_BOOT_SIG_ENFORCE内核配置已经启用。如果启用了 UEFI 安全启动,这将阻止加载未签名的第三方模块。
解决此问题的最简单方法是在 UEFI (BIOS) 设置中禁用安全启动。
在大多数情况下,您可以使用 grub 菜单进入 UEFI 设置。ESC在启动时按下按钮,进入 grub 菜单并选择系统设置。安全启动选项应位于 UEFI 的“安全”或“启动”部分。
你可以直接进入 UEFI,但这取决于你的硬件。阅读您的计算机手册以了解如何到达那里。它可能是Del,或F2启动时,或其他东西。
另一种方法是使用mokutil.
由于 Ubuntu 内核构建 4.4.0-21.37,这可以通过运行来修复
sudo apt install mokutil
sudo mokutil --disable-validation
Run Code Online (Sandbox Code Playgroud)
它将需要创建一个密码。密码长度至少应为 8 个字符。重新启动后,UEFI 会询问您是否要更改安全设置。选择“是”。
然后您将被要求输入之前创建的密码。一些 UEFI 固件不要求输入完整密码,而是输入其中的一些字符,例如 1st、3rd 等。小心。有些人不明白这一点。我也没有从第一次尝试中得到它;-)
更新:现在所有支持的 Ubuntu 内核都启用了这个内核配置。Ubuntu 16.04、15.10 和 14.04 受到影响。
Maj*_*jal 42
正如用户@zwets所建议的,我在这里复制(带有编辑)一个答案:
自内核版本 4.4.0-20 起,强制执行未签名的内核模块在启用安全启动的情况下将不被允许运行。如果您想保留安全启动并运行这些模块,那么下一个合乎逻辑的步骤是对这些模块进行签名。
所以让我们尝试一下。
创建签名密钥
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive name/"
Run Code Online (Sandbox Code Playgroud)签署模块
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der /path/to/module
Run Code Online (Sandbox Code Playgroud)注 1:单个驱动程序/模块可以有多个文件要签名,因此/path/to/module可能需要替换为$(modinfo -n <modulename>),例如$(modinfo -n vboxdrv)
注 2:sudo kmodsign sha512 ./MOK.priv ./MOK.der /path/to/module如果sign-file不可用,则为替代。
注册安全启动的密钥
sudo mokutil --import MOK.der
Run Code Online (Sandbox Code Playgroud)
提供密码以供重新启动后使用
Reboot并按照说明注册 MOK(机器所有者密钥)。这是一个带有图片的示例。系统将再重新启动一次。
如果密钥已正确注册,它将显示在 下sudo mokutil --list-enrolled。
请让我知道您的模块是否会在 Ubuntu 16.04 上以这种方式运行(我相信在内核 4.4.0-21 上)。
资源:Fedora和Ubuntu模块签名实现的详细网站文章。(他们一直在努力);-)
附加资源:我每次virtualbox-dkms升级时都创建了一个 bash 脚本供我自己使用,从而覆盖了签名的模块。查看我vboxsign最初在 GitHub 上的内容。
安全(额外)意识的附加说明:;-)
由于您创建的私钥(MOK.priv在本例中)可供任何有权访问它的人使用,因此保持其安全是一种很好的做法。您可以chmod对其进行加密(gpg)或将其存储在其他安全的地方(r)。或者,如本评论中所述,删除-nodes步骤 1中的选项。这将使用密码短语加密密钥。
小智 7
您可以通过以下步骤在 BIOS 中禁用安全启动 (UEFI):
重新启动您的机器并进入 BIOS 菜单(在我的情况下按 F2)
搜索 Secure Boot 并更改为 Legacy
在华硕主板中:
| 归档时间: |
|
| 查看次数: |
209913 次 |
| 最近记录: |