服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - 在启用安全启动的 Fedora 中安装英伟达驱动

在启用安全启动的 Fedora 中安装英伟达驱动

2023-08-06 09:41Linux中国 Linux

背景信息 现在新出厂的电脑 UEFI 会默认开启安全启动Secure Boot,它的作用是防止恶意软件侵入。当电脑的引导程序被病毒修改之后,它会给出提醒并拒绝启动,避免可能带来的进一步损失。不过它同样会阻止一些未经微软签名的 Linux 内核启动运行。虽然可以直接选择在主板设置中关闭安全启动来解决这些麻烦,但在近期微软公布的 Windows 11 最低硬件标准中可以看到,安全启动被微软看的越来越重

在启用安全启动的 Fedora 中安装英伟达驱动

背景信息

现在新出厂的电脑 UEFI 会默认开启安全启动Secure Boot,它的作用是防止恶意软件侵入。当电脑的引导程序被病毒修改之后,它会给出提醒并拒绝启动,避免可能带来的进一步损失。不过它同样会阻止一些未经微软签名的 Linux 内核启动运行。虽然可以直接选择在主板设置中关闭安全启动来解决这些麻烦,但在近期微软公布的 Windows 11 最低硬件标准中可以看到,安全启动被微软看的越来越重。如果你的电脑是 Windows + Linux 双系统,最好还是让 Linux 本身支持安全启动。

而最好用的发行版之一 Fedora 更热衷于开源驱动。Fedora 其本身是支持安全启动的,但是当你通过 Rpmfusion 安装官方的英伟达驱动,会造成这些驱动的内核模块未签名。在 Linux 启动过程中因为安全启动校验签名,会阻止加载这些模块,进而无法正常驱动显卡。

用过 Ubuntu 的伙伴们应该知道,在安全启动开启的情况下,Ubuntu 安装程序会自动用自签密钥来签名英伟达驱动内核模块,并在开机过程中自动将该自签密钥导入 MOK List(安全启动机器主人信任密钥列表)。但 Fedora 只会保证自身内核签名有效,而对 Rpmfusion 中的第三方内核模块签名问题不予理会,导致无法正常加载英伟达驱动。

本文介绍如何在 Fedora 中自动签署英伟达内核模块

准备工作

在 Fedora 36 之前,要像 Ubuntu 那样自动签署内核模块有点困难。但从这个版本开始,你只需几个简单的步骤就能做到。

在开始之前,让我们先确认一些前提条件已经满足:

  1. 已启用安全启动;
  2. 尚未安装英伟达驱动程序(非常关键,如果你已经安装了专有的英伟达驱动,可能需要重装系统才行);
  3. 以及安装了 Fedora 36 及以上版本。

本指南主要参考了以下资料:

  1. Rpmfusion 的官方英伟达文档
  2. Rpmfusion 的官方安全启动文档
  3. Andrei Nevedomskii 的博客教程

希望深入了解的朋友可以阅读上述资料进一步研究。

具体步骤

1、安装自动签名所需的工具

sudo dnf install kmodtool akmods mokutil openssl

2、生成签名密钥

sudo kmodgenca -a

该命令会在 /etc/pki/akmods/certs/ 目录下生成密钥,运行正确的情况下不会有输出。

3、启动密钥注册

这将使 Linux 内核信任使用你的密钥签名的驱动程序。

sudo mokutil --import /etc/pki/akmods/certs/public_key.der

你会被要求输入一个密码。请记住这个密码,在下面的第五步中还需要再次使用。

4、重启以注册密钥

sudo reboot

5、注册密钥

重启后,你将看到蓝色的 MOK 管理器界面,不要被这种类似 BSOD 的页面吓坏,按照以下步骤注册密钥。

如果你曾在启用安全启动的 Ubuntu 中安装过英伟达驱动程序,你可能见过这个界面。

1、首先要及时按任意建继续进入 MOK 管理(如果没有及时进入 MOK 管理,系统会重启)

在启用安全启动的 Fedora 中安装英伟达驱动MOK 管理界面1

2、首先选择 “Enroll MOK” 注册 MOK。

3、然后选择 “Continue”。

4、选择 “Yes” 并输入步骤 3 中的密码并回车(密码不会在输入框中显示,输入密码直接回车就好了)。

在启用安全启动的 Fedora 中安装英伟达驱动MOK 管理界面2

5、此时密钥已经注册,选择 “reboot”,设备将再次重启。

在启用安全启动的 Fedora 中安装英伟达驱动MOK 管理界面3

6、安装英伟达驱动程序

现在只需正常安装英伟达驱动程序。

sudo dnf install gcc kernel-headers kernel-devel akmod-nvidia xorg-x11-drv-nvidia xorg-x11-drv-nvidia-libs

7、确保内核模块已编译

sudo akmods --force

8、确保启动镜像也已更新

sudo dracut --force

9、重启设备

sudo reboot

验证是否成功

重启完成后,输入以下命令确认驱动是否加载:

lsmod | grep -i nvidia

如果有类似以下的输出,恭喜你,一切顺利,一切就绪!

$ lsmod | grep -i nvidia
nvidia_drm             94208  2
nvidia_modeset       1560576  2 nvidia_drm
nvidia_uvm           3493888  0
nvidia              62517248  118 nvidia_uvm,nvidia_modeset
video                  73728  3 asus_wmi,i915,nvidia_modeset

现在,你可以愉快的在开启安全启动的情况下使用英伟达显卡了。

希望本文能够帮助到你。

延伸 · 阅读

精彩推荐
  • LinuxLinux下如何调整根目录的空间大小

    Linux下如何调整根目录的空间大小

    本篇文章主要介绍了Linux下如何调整根目录的空间大小,要是针对现在已有的空间进行调整,具有一定的参考价值,有兴趣的可以了解一下。...

    Yanfei908802022-01-10
  • Linux详解Linux系统中的tempfs与/dev/shm

    详解Linux系统中的tempfs与/dev/shm

    /dev/shm是Linux非常有用的一个目录,它就是所谓的tmpfs,也可以称之为临时文件系统(不是块设备),类似oracle中的临时表空间一样,用于加速和优化系统。...

    Huoty4462021-12-28
  • Linux在linux系统下安装两个nginx的简单方法

    在linux系统下安装两个nginx的简单方法

    下面小编就为大家带来一篇在linux系统下安装两个nginx的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    Linux教程网6042021-12-06
  • Linux在Linux系统中为Firefox安装最新版flash插件的方法

    在Linux系统中为Firefox安装最新版flash插件的方法

    这篇文章主要介绍了在Linux系统中为Firefox安装最新版flash插件的方法,一条命令即可搞定这个事情,需要的朋友可以参考下 ...

    zrqx0085992019-11-05
  • LinuxLinux下抓包工具tcpdump使用介绍

    Linux下抓包工具tcpdump使用介绍

    在传统的网络分析和测试技术中,嗅探器(sniffer)是最常见,也是最重要的技术之一,本文将介绍Linux下抓包工具tcpdump使用,需要的朋友可以参考下 ...

    Linux教程网2902019-12-13
  • Linux删除Linux系统下的历史记录

    删除Linux系统下的历史记录

    入侵时目标如果是linux服务器,看切忌清理痕迹的时候别忘记history命令的记录哦 ...

    Linux教程网6552020-04-05
  • Linuxlinux如何修改主机名

    linux如何修改主机名

    如何修改linux主机名才能生效?很多人使用hostname 主机名 来修改,其实这个只是做为暂时的,重启后将恢复到原来的名字....

    Linux教程网4622020-04-18
  • LinuxLinux下查看SELinux状态和关闭SELinux的方法

    Linux下查看SELinux状态和关闭SELinux的方法

    这篇文章主要介绍了Linux下查看SELinux状态和关闭SELinux的方法,需要的朋友可以参考下 ...

    Linux教程网5992019-11-06