Linux NVIDIA 驱动安装时的密钥签名

起因

在启用 Secure Boot 的 Linux 系统上安装 NVIDIA 显卡驱动时,需要对内核模块进行数字签名。每次更新驱动时都要处理密钥相关的选项,容易遗忘或配置不当,导致驱动加载失败。

安装流程

NVIDIA 提供的 .run 安装程序(如 NVIDIA-Linux-x86_[version].run)在安装过程中会自动处理密钥签名:

  1. 运行安装程序
  2. 安装程序检测 Secure Boot 状态
  3. 如果启用了 Secure Boot,会提示生成或使用现有的密钥对
  4. 密钥对包括:私钥(.key)和证书(.der

密钥对的位置

安装程序默认在以下路径生成密钥对(以 Debian 为例):

/usr/share/nvidia/modsign-key-<ID>.key   # 私钥
/usr/share/nvidia/modsign-crt-<ID>.der   # 证书

其中 <ID> 是安装程序生成的标识符。

关键注意事项

密钥对会被清理

重要:安装完成后,这些密钥文件会被自动清理掉,不会被保留。这是正常现象,不需要手动删除。

重新安装时的做法

如果需要重新安装驱动(例如内核更新后),安装程序会提示是否使用现有密钥或生成新密钥。此时有两种选择:

  1. 使用现有密钥:如果之前生成过密钥且被保留,可以选择复用
  2. 生成新密钥(推荐):由于旧密钥通常已被清理,最直接的方式是生成新密钥对

为什么需要签名

内核模块签名的目的是在启用 Secure Boot 的系统上:

  • 验证模块来源:确保内核模块未被篡改
  • 通过安全检查:Secure Boot 只加载经过签名和验证的模块
  • 保持系统安全性:防止恶意代码以驱动形式加载

建议做法

  1. 首次安装:让安装程序自动生成新的密钥对,无需手动干预
  2. 后续更新:选择"生成新密钥",因为旧密钥不会被保留
  3. 无需备份:不必刻意保存密钥文件,每次安装时重新生成即可

这样可以避免密钥过期或不匹配导致的问题。


最后修改于 2026-06-16