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. 蓝屏操作流程
- 选择 Enroll MOK (注册密钥)。
- 选择 Continue。
- 选择 Yes (确认导入)。
- 输入密码:输入你在第二阶段设置的临时密码(输入时无回显,输完回车)。
- 选择 Reboot。
四、 第四阶段:给驱动“盖章” (重建并签名)
此时主板已经信任了你的公钥,但 NVIDIA 驱动可能还是旧的(未签名或签的是旧密钥)。我们需要强制重做。
1. 强制重构驱动模块
回到系统(此时 Secure Boot 可以先关着,也可以开着,不影响编译):
sudo akmods --force --rebuild
原理:akmods 会重新编译
nvidia.ko,并在编译结束时自动调用刚才生成的私钥进行数字签名。
2. 验证签名 (可选)
modinfo -F signer nvidia
- 预期结果:输出你的密钥 ID(如
fedora_...),证明驱动已有合法身份。
五、 第五阶段:开启安全启动 (Secure Boot)
- 重启进入 BIOS (F2 / F12)。
- 将 Secure Boot 设置为 Enabled。
- 保存并退出。
✅ 最终验证
进入系统后,执行以下两条命令,必须同时满足:
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 |
+-----------------------------------------------------------------------------------------+