在安全启动的情况下启用开源内核英伟达显卡驱动
前提条件:
-
主板启用了安全启动且显卡内核驱动未签名
-
Linux系统(Debian13)
-
熟练命令行操作
-
一颗健康且正常的大脑与一双手和一对眼
步骤1:安装所需工具
sudo apt update
sudo apt install mokutil openssl zstd步骤2:创建签名密钥
# 创建目录存放密钥
sudo mkdir -p /var/lib/shim-signed/mok/
cd /var/lib/shim-signed/mok/
# 创建密钥对
sudo 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
sudo mokutil --import MOK.der这会提示设置一个密码(请记住,重启时需要)
步骤4:在启动时注册密钥
- 重启后会出现蓝色界面(MOK Management)
- 选择 "Enroll MOK" → "Continue" → "Yes"
- 输入之前设置的密码
- 选择 "Reboot"
步骤5:为 NVIDIA 模块签名
重启后,找到模块位置
modinfo nvidia | grep filename
#通常位置:/lib/modules/$(uname -r)/updates/dkms/nvidia.ko情况一
模块后戳为.ko
#为模块签名
sudo /usr/src/linux-headers-\((uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der \)(modinfo -n nvidia)
sudo /usr/src/linux-headers-\((uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der \)(modinfo -n nvidia_modeset)
sudo /usr/src/linux-headers-\((uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der \)(modinfo -n nvidia_drm)
sudo /usr/src/linux-headers-\((uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der \)(modinfo -n nvidia_uvm)
sudo /usr/src/linux-headers-\((uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der \)(modinfo -n nvidia-peermem)情况二
模块后戳为.ko.zst
# 创建临时目录
sudo mkdir -p /tmp/nvidia-modules
cd /tmp/nvidia-modules
# 解压所有 NVIDIA 模块
sudo unzstd /lib/modules/$(uname -r)/updates/dkms/nvidia.ko.zst -o nvidia.ko
sudo unzstd /lib/modules/$(uname -r)/updates/dkms/nvidia-modeset.ko.zst -o nvidia-modeset.ko
sudo unzstd /lib/modules/$(uname -r)/updates/dkms/nvidia-drm.ko.zst -o nvidia-drm.ko
sudo unzstd /lib/modules/$(uname -r)/updates/dkms/nvidia-uvm.ko.zst -o nvidia-uvm.ko
sudo unzstd /lib/modules/$(uname -r)/updates/dkms/nvidia-peermem.ko.zst -o nvidia-peermem.ko
# 为解压后的模块签名
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 /var/lib/shim-signed/mok/MOK.priv /var/lib/shim-signed/mok/MOK.der nvidia.ko
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 /var/lib/shim-signed/mok/MOK.priv /var/lib/shim-signed/mok/MOK.der nvidia-modeset.ko
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 /var/lib/shim-signed/mok/MOK.priv /var/lib/shim-signed/mok/MOK.der nvidia-drm.ko
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 /var/lib/shim-signed/mok/MOK.priv /var/lib/shim-signed/mok/MOK.der nvidia-uvm.ko
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 /var/lib/shim-signed/mok/MOK.priv /var/lib/shim-signed/mok/MOK.der nvidia-peermem.ko
# 重新压缩签名后的模块
sudo zstd -f nvidia.ko -o /lib/modules/$(uname -r)/updates/dkms/nvidia.ko.zst
sudo zstd -f nvidia-modeset.ko -o /lib/modules/$(uname -r)/updates/dkms/nvidia-modeset.ko.zst
sudo zstd -f nvidia-drm.ko -o /lib/modules/$(uname -r)/updates/dkms/nvidia-drm.ko.zst
sudo zstd -f nvidia-uvm.ko -o /lib/modules/$(uname -r)/updates/dkms/nvidia-uvm.ko.zst
sudo zstd -f nvidia-peermem.ko -o /lib/modules/$(uname -r)/updates/dkms/nvidia-peermem.ko.zst
# 清理临时文件
sudo rm -rf /tmp/nvidia-modules步骤6:重启系统
sudo reboot步骤7:验证
# 重启后检查
sudo modprobe nvidia
nvidia-smi
lsmod | grep nvidia
暂无评论
还没有评论,快来抢沙发吧!