Fedora 38/39 上搞定 NVIDIA 驱动签名:告别安全启动报错,保姆级图文指南
2026/6/12 1:44:18 网站建设 项目流程

Fedora 38/39 上解决NVIDIA驱动签名问题的终极指南

当你在Fedora 38或39上安装NVIDIA驱动时,最令人头疼的问题莫过于安全启动(Secure Boot)导致的驱动签名验证失败。本文将带你深入理解这一问题的根源,并提供一套完整的解决方案,让你彻底告别"NVIDIA kernel module missing"的困扰。

1. 理解安全启动与驱动签名的关系

现代计算机系统采用UEFI安全启动机制来防止恶意软件在操作系统加载前运行。这一安全特性要求所有加载的内核模块都必须经过数字签名验证。对于NVIDIA这样的第三方驱动,系统默认不会信任其签名,这就是为什么我们需要手动处理签名问题。

安全启动的核心流程如下:

  1. 系统启动时,UEFI固件验证引导加载程序(如GRUB)的签名
  2. 引导加载程序验证内核的签名
  3. 内核验证所有内核模块(包括显卡驱动)的签名

当这一链条中的任何一环验证失败,系统就会拒绝加载相应组件。这就是为什么我们需要为NVIDIA驱动创建自己的签名密钥,并将其添加到系统的可信密钥数据库中。

2. 准备工作:环境配置与工具安装

在开始之前,请确保你的系统已更新到最新状态:

sudo dnf update -y

接下来安装必要的开发工具和内核头文件:

sudo dnf install -y kernel-devel kernel-headers gcc make dkms

还需要安装处理安全启动相关的工具:

sudo dnf install -y mokutil openssl

提示:如果你的系统是新安装的,可能需要先启用RPM Fusion仓库来获取某些软件包。

3. 禁用开源Nouveau驱动

Fedora默认使用开源的Nouveau驱动来支持NVIDIA显卡。在安装官方驱动前,必须先禁用这一驱动:

  1. 创建黑名单配置文件:
echo "blacklist nouveau" | sudo tee /etc/modprobe.d/blacklist-nvidia-nouveau.conf echo "options nouveau modeset=0" | sudo tee -a /etc/modprobe.d/blacklist-nvidia-nouveau.conf
  1. 更新initramfs:
sudo dracut --force
  1. 重启系统并验证Nouveau是否已禁用:
lsmod | grep nouveau

如果命令没有输出,说明Nouveau驱动已成功禁用。

4. 安装NVIDIA官方驱动

4.1 下载正确的驱动版本

访问NVIDIA官方网站下载适合你显卡的Linux驱动。选择与你的Fedora版本和显卡型号匹配的驱动包,通常是一个.run文件。

4.2 切换到文本模式

为了避免图形界面干扰安装过程,我们需要切换到文本模式:

sudo systemctl isolate multi-user.target

4.3 运行安装程序

给下载的.run文件添加执行权限并运行:

chmod +x NVIDIA-Linux-x86_64-*.run sudo ./NVIDIA-Linux-x86_64-*.run

安装过程中会遇到几个关键选项:

  1. 构建内核模块:选择"是"
  2. 签名内核模块:选择"是"
  3. 生成新密钥对:首次安装选择"生成新密钥对"
  4. 删除私有签名密钥:建议选择"是"(除非你频繁更新内核)

安装完成后,不要立即重启系统,还需要完成以下关键步骤。

5. 处理驱动签名与安全启动

5.1 导入公钥到MOK列表

NVIDIA安装程序会在/usr/share/nvidia/目录下生成一个.der格式的公钥文件。我们需要将其导入到机器的MOK(机器所有者密钥)列表中:

sudo mokutil --import /usr/share/nvidia/nvidia-*.der

系统会提示你设置一个密码,这个密码将在下次启动时使用,请务必记住。

5.2 更新initramfs和GRUB配置

sudo dracut --force sudo grub2-mkconfig -o /boot/grub2/grub.cfg

6. 完成安全启动密钥注册

现在可以重启系统了:

sudo reboot

重启过程中,系统会进入蓝色MOK管理界面(通常在GRUB菜单之后)。按照以下步骤操作:

  1. 选择"Enroll MOK"
  2. 选择"Continue"
  3. 选择"Yes"确认注册
  4. 输入之前设置的密码
  5. 选择"Reboot"完成注册

7. 验证驱动安装

系统重启后,可以通过以下命令验证NVIDIA驱动是否正常工作:

nvidia-smi

如果看到类似下面的输出,说明驱动已正确安装:

+-----------------------------------------------------------------------------+ | NVIDIA-SMI 525.85.05 Driver Version: 525.85.05 CUDA Version: 12.0 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 NVIDIA GeForce ... Off | 00000000:01:00.0 On | N/A | | N/A 45C P8 N/A / N/A | 200MiB / 6144MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+

8. 常见问题解决方案

8.1 驱动安装后无法进入图形界面

如果重启后卡在命令行界面,可以尝试:

sudo systemctl start graphical.target

如果问题依旧,可能需要重新配置显示管理器:

sudo systemctl enable gdm sudo systemctl start gdm

8.2 内核更新后驱动失效

每次更新内核后,都需要重新构建NVIDIA内核模块:

sudo akmods --force sudo dracut --force

8.3 签名密钥丢失或无效

如果遇到签名问题,可以重新生成并注册密钥:

sudo mokutil --reset sudo mokutil --import /usr/share/nvidia/nvidia-*.der sudo reboot

9. 高级配置与优化

9.1 启用Wayland支持

从NVIDIA 550驱动版本开始,官方提供了对Wayland的更好支持。如果你的系统使用Wayland作为显示服务器,可以尝试以下配置:

sudo cp /etc/gdm/custom.conf /etc/gdm/custom.conf.bak sudo sed -i 's/#WaylandEnable=false/WaylandEnable=true/' /etc/gdm/custom.conf

9.2 性能调优

/etc/modprobe.d/nvidia.conf中添加以下内容可以优化性能:

options nvidia NVreg_PreserveVideoMemoryAllocations=1 options nvidia NVreg_UsePageAttributeTable=1

9.3 多显示器配置

使用nvidia-settings工具可以方便地配置多显示器布局:

nvidia-settings

10. 安全注意事项

虽然本文指导你如何绕过安全启动的限制来安装NVIDIA驱动,但安全启动本身是一项重要的安全功能。在完成驱动安装后,建议保持安全启动启用状态,以保护系统免受低级恶意软件的侵害。

定期检查并更新你的NVIDIA驱动也是一个好习惯,可以确保你获得最新的性能改进和安全补丁。NVIDIA通常会定期发布新的驱动版本,你可以通过官方网站或RPM Fusion仓库获取更新。

通过以上步骤,你应该已经成功在Fedora 38/39上安装了NVIDIA驱动并解决了安全启动导致的签名问题。这套方案不仅适用于当前的Fedora版本,其原理和方法也可以应用于其他Linux发行版。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询