< BACK_TO_INDEX

Fedora NVIDIA 驱动签名与安全启动配置指南

PUBLISHED:

Fedora NVIDIA 驱动签名与安全启动配置指南

摘要:利用 akmods 自动化机制,构建“本机信任根 (Root of Trust)”。

操作环境:Fedora 43 Workstation

一、 第一阶段:创建“公章” (生成密钥对)

我们需要生成一对属于你个人的 RSA 密钥。私钥留在系统深处用来给驱动盖章,公钥交给主板 BIOS 验证。

1. 生成密钥

# -a: 自动模式 (Automatic)
# --force: 如果之前有残留的旧密钥,强制覆盖(全新配置时推荐)
sudo /usr/sbin/kmodgenca -a --force

产物

  • 私钥(盖章用):/etc/pki/akmods/private/private_key.priv
  • 公钥(验证用):/etc/pki/akmods/certs/public_key.der

二、 第二阶段:提交“申请” (导入公钥到 MOK)

我们需要通知 UEFI 固件:“请在下次重启时,把这个公钥加到你的信任白名单里。”

1. 发起导入请求

sudo mokutil --import /etc/pki/akmods/certs/public_key.der
  • 设置密码:输入一个临时密码(如 12345678)。
  • 注意这个密码只用于下一步的蓝屏界面验证,重启后失效。

三、 第三阶段:BIOS 授权 (MOK Management)

这是最关键的物理确认环节,防止远程恶意软件悄悄修改你的 BIOS 信任链。

1. 重启并进入管理界面

  • 执行 reboot
  • 关键动作:在启动出现黑底白字/蓝底白字的 Shim UEFI Key Management 界面时,按任意键进入(通常只有 10 秒倒计时)。

2. 蓝屏操作流程

  1. 选择 Enroll MOK (注册密钥)。
  2. 选择 Continue
  3. 选择 Yes (确认导入)。
  4. 输入密码:输入你在第二阶段设置的临时密码(输入时无回显,输完回车)。
  5. 选择 Reboot

四、 第四阶段:给驱动“盖章” (重建并签名)

此时主板已经信任了你的公钥,但 NVIDIA 驱动可能还是旧的(未签名或签的是旧密钥)。我们需要强制重做。

1. 强制重构驱动模块

回到系统(此时 Secure Boot 可以先关着,也可以开着,不影响编译):

sudo akmods --force --rebuild

原理:akmods 会重新编译 nvidia.ko,并在编译结束时自动调用刚才生成的私钥进行数字签名。

2. 验证签名 (可选)

modinfo -F signer nvidia
  • 预期结果:输出你的密钥 ID(如 fedora_...),证明驱动已有合法身份。

五、 第五阶段:开启安全启动 (Secure Boot)

  1. 重启进入 BIOS (F2 / F12)。
  2. Secure Boot 设置为 Enabled
  3. 保存并退出。

✅ 最终验证

进入系统后,执行以下两条命令,必须同时满足:

1. 检查门锁

mokutil --sb-state
# 输出: SecureBoot enabled

2. 检查通行证

nvidia-smi
# 输出: 正常的显卡列表和显存占用

3. 预期输出示意

~ 
 mokutil --sb-state
SecureBoot enabled

~
 nvidia-smi
Sat Jan 24 19:19:36 2026       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 580.119.02             Driver Version: 580.119.02     CUDA Version: 13.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 RTX 3060 ...    On  |   00000000:01:00.0 Off |                  N/A |
| N/A   34C    P0             20W /   95W |      13MiB /   6144MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A            3894      G   /usr/bin/gnome-shell                      2MiB |
+-----------------------------------------------------------------------------------------+