[20387.715072] Loading of module with unavailable key is rejected [20387.747423] Loading of module with unavailable key is rejected [20387.779724] Loading of module with unavailable key is rejected [76803.233568] Loading of module with unavailable key is rejected [76803.266758] Loading of module with unavailable key is rejected [76803.299465] Loading of module with unavailable key is rejected [77998.432066] VFIO - User Level meta-driver version: 0.3 [77998.468307] Loading of unsigned module is rejected ERROR: Installation has failed. Please see the file '/var/log/nvidia-installer.log' for details. You may find suggestions on fixing installation problems in the README available on the Linux driver download page at www.nvidia.com.

这个错误表明在安装 NVIDIA RTX 5090 驱动时遇到了内核模块签名问题,这通常是由于 Ubuntu 的安全启动(Secure Boot)功能导致的。当 Secure Boot 启用时,系统只允许加载经过正确签名的内核模块,而 NVIDIA 驱动模块没有使用被系统信任的密钥进行签名。

以下是解决这个问题的完整步骤:

解决方案

方法一:禁用 Secure Boot(最简单直接)

这是最直接的解决方法,但会降低系统的安全级别。

  1. 检查 Secure Boot 状态

    mokutil --sb-state

    如果显示 SecureBoot enabled,则说明 Secure Boot 已启用。

  2. 禁用 Secure Boot

    • 重启计算机

    • 进入 BIOS/UEFI 设置界面(通常在启动时按 Del、F2、F10 或 Esc 键)

    • 找到 "Secure Boot" 选项并将其设置为 "Disabled"

    • 保存设置并退出 BIOS/UEFI

  3. 重新安装 NVIDIA 驱动

    sudo apt update sudo apt install nvidia-driver-xxx # 替换为适合 5090 的最新驱动版本号

    或者使用官方.run安装包:

    sudo ./NVIDIA-Linux-x86_64-xxx.xx.xx.run # 替换为你的驱动文件名

方法二:为 NVIDIA 驱动创建并注册自定义密钥(推荐,保持安全启动启用)

这种方法更安全,但步骤稍多。

  1. 安装必要的工具

    sudo apt update sudo apt install mokutil openssl

  2. 创建密钥对

    openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=NVidia Driver Signing Key/" sudo chmod 600 MOK.priv MOK.der

  3. 将密钥注册到 MOK(Machine Owner Key)

    sudo mokutil --import MOK.der

    系统会提示你设置一个密码,请记住这个密码,重启时需要用到。

  4. 重启系统

    sudo reboot

    重启过程中,系统会进入一个蓝色界面(MOK management),选择 "Enroll MOK" → "Continue" → "Yes",输入之前设置的密码,完成后选择 "Reboot"。

  5. 为 NVIDIA 内核模块签名

    # 找到 NVIDIA 内核模块路径(通常在 /usr/src/nvidia-xxx/ 或 /lib/modules/$(uname -r)/kernel/drivers/video/) # 使用之前创建的密钥签名 sudo /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n nvidia) # 可能需要为多个模块签名,如 nvidia, nvidia-drm, nvidia-modeset, nvidia-uvm 等 sudo /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n nvidia_drm) # 以此类推

  6. 更新 initramfs

    sudo update-initramfs -u

  7. 重新安装或配置 NVIDIA 驱动
    现在应该可以正常安装驱动了。

方法三:使用 Ubuntu 官方仓库中的驱动

Ubuntu 官方仓库中的 NVIDIA 驱动通常已经处理了签名问题。

  1. 添加 Ubuntu 官方显卡驱动 PPA

    sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update

  2. 查找适合 5090 的最新驱动

    ubuntu-drivers devices

  3. 安装推荐的驱动

    sudo ubuntu-drivers autoinstall

    或者手动安装特定版本:

    sudo apt install nvidia-driver-xxx # 替换为推荐的版本号

  4. 重启系统

    sudo reboot

额外建议

  1. 查看安装日志
    按照错误提示查看详细日志,可能包含更多有用信息:

    cat /var/log/nvidia-installer.log

  2. 确保系统完全更新

    sudo apt update && sudo apt upgrade sudo apt install linux-headers-$(uname -r) build-essential

  3. 使用 DKMS(动态内核模块支持)
    确保安装了 DKMS,它会在内核更新时自动重新编译和签名 NVIDIA 模块:

    sudo apt install dkms

  4. 如果使用官方 .run 安装程序
    尝试使用这些参数运行安装程序,它会尝试处理签名问题:

    sudo ./NVIDIA-Linux-x86_64-xxx.xx.xx.run --module-signing-secret-key=/path/to/MOK.priv --module-signing-public-key=/path/to/MOK.der

总结

对于大多数用户,方法一(禁用 Secure Boot) 是最简单直接的解决方案。如果你需要保持 Secure Boot 启用,则应该使用方法二(创建并注册自定义密钥)。如果这些方法都不起作用,可以尝试方法三(使用 Ubuntu 官方仓库的驱动)

完成驱动安装后,可以使用以下命令验证安装是否成功:

nvidia-smi

这将显示 GPU 信息和驱动程序版本,确认安装是否成功。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐