大部分安装过程都可以在网上找到相应教程
比如说禁用自带的 nouveau nvidia驱动一系列过程
这里需要记录的是:
由于Ubuntu内核4.4.0-20已启用 EFI_SECURE_BOOT_SIG_ENFORCE
内核配置。如果启用了UEFI安全启动,则可以防止加载未签名的第三方模块。
在安装过程中,nvidia驱动安装程序可以自动为你生成一对秘钥,请记录下相应public以及private安装地址。
此时,由于public秘钥没有被注册到安全启动当中去,当安装程序会提醒你,只会安装内核并不能进行全部安装。
正常情况下,在你进行完成这一系列步骤后,进行重启应该会出现蓝屏的perform mok managemnet。
只需要按照以下步骤进行即可:
在perform mok mangement界面选择enroll mok
选择continue(enroll mok界面)
选择yes(enroll the key界面)
输入在安装时设定的密码
跳转到perform mok manageent界面boot即可。
重启后输入navidia-smi即可看到显卡信息了!!恭喜安装成功!
可是,如果不幸的是,重启的时候没有跳出mok界面,而你一检查发现,确实也没有安装成功。
不要着急
进行如下操作(将秘钥注册到安全启动):
sudo mokutil --import MOK.der
MOK.der指代的是你记录下来的public秘钥的位置。
此时在进行重启,就会出现mok management界面,再进行以上操作即可。
另附:
从内核版本4.4.0-20开始,强制要求 unsigned 内核模块在启用安全启动的情况下运行。如果您想保持安全启动和也运行这些模块,那么下一个合乎逻辑的步骤是签署这些模块。
让我们试一试。
如果您的模块在Ubuntu 16.04上以这种方式运行(我相信内核4.4.0-21),请告诉我。
资源:详细网站 Fedora文章和Ubuntu实施。 (他们一直在努力);-)
安全(额外)意识的补充说明:; - )
由于您创建的私钥(在此示例中为 MOK.priv
)可供任何可以访问它的人使用,因此最好保证其安全。您可以 chmod
it,加密( gpg
)它,或将其存储在其他地方安全(r)。或者,作为在此评论中注明,删除步骤1中的选项 -nodes
。这将使用密码加密密钥。
创建签名密钥
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive name/"
签署模块
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der /path/to/module
将密钥注册到安全启动
sudo mokutil --import MOK.der
提供密码以供以后重启
Reboot
并按照说明注册MOK(机器所有者密钥)。这是一张带图片的示例。系统将再次重启。
另外一种解决uefi安全启动项的方法是关闭它!
附:
解决此问题的最简单方法是在UEFI(BIOS)设置中禁用安全启动。
在大多数情况下,您可以使用grub菜单进入UEFI设置。在启动时按 ESC 按钮,进入grub菜单并选择System Setup。安全启动选项应位于UEFI的"安全"或"启动"部分。
您可以直接进入UEFI,但这取决于您的硬件。阅读您的计算机手册,了解如何到达那里。它可能是 Del ,或 F2 在启动时,或其它。
另一种方法是使用 mokutil
禁用安全启动。
由于Ubuntu内核版本为4.4.0-21.37,因此可以通过运行
来修复
sudo apt install mokutil
sudo mokutil --disable-validation
需要创建密码。密码长度至少应为8个字符。重新启动后,UEFI将询问您是否要更改安全设置。选择"是"。
然后,系统会要求您输入以前创建的密码。某些UEFI固件要求不是完整密码,而是输入一些字符,如1st,3rd等。小心。有些人不明白这一点。我没有从第一次尝试中得到它; - )
https://wiki.ubuntu.com/UEFI/SecureBoot/DKMS
有关解决uefi安全启动项的方法