在前文中提到,大部分 Linux 发行版默认使用开源的 NVIDIA 驱动程序。然而,出于性能或功能需求,有时需要安装闭源(也称专有)驱动。例如,木子需要使用 CUDA 功能,因此需要安装 NVIDIA 的闭源驱动。
安装 NVIDIA 闭源驱动的步骤如下:
- 配置 BIOS 安全引导启动设置。
- 禁用系统默认的开源驱动。
- 确认显卡型号。
- 从 NVIDIA 官网下载与显卡型号对应的驱动程序。
- 安装驱动程序并验证其可用性。
BIOS 安全引导配置
禁用安全引导
如果您不想后续操作比较麻烦,可以在 BIOS 中直接将安全引导关闭,关闭后进入系统,通过以下命令确认是否关闭成功。
# 获取 mokutil 包信息
[root@gpu-server-001 ~]# dnf provides "*bin/mokutil"
Last metadata expiration check: 0:01:48 ago on Tue 20 Aug 2024 05:01:19 PM CST.
mokutil-2:0.6.0-4.el9.x86_64 : Tool to manage UEFI Secure Boot MoK Keys
Repo : baseos
Matched from:
Other : *bin/mokutil
# 安装 mokutil
[root@gpu-server-001 ~]# dnf install mokutil
# 获取 BIOS 中安全引导状态信息
[root@gpu-server-001 ~]# mokutil --sb-state
EFI variables are not supported on this system
# 如果显示 SecureBoot enabled,说明安全引导状态启用
启用安全引导
对于启用安全引导的计算机,需要手动导入密钥,具体步骤如下:
- 因为 dkms 本身对所有模块进行了签名,因此只需要注册它使用的密钥,就可以使 BIOS SecureBoot 正常启用了。
- 运行
mokutil --import /var/lib/dkms/mok.pub
,会提醒输入一次性密码。 - 重启电脑,您应该会看到 MOK Manager,按任意键进入菜单。
- 在 MOK Manager 中,选择“Enroll MOK”,然后选择“Continue”,最后选择“Yes”。您将返回主屏幕,但主屏幕中没有“Enroll MOK”按钮。
- 选择“Reboot”,然后按回车键。现在您的系统将重新启动。
- 在 BIOS 中启用 SecureBoot 即可。
现在,您的所有 DKMS 模块都将能够在启用 SecureBoot 的情况下正常运行。
# 输入以下命令,提醒输入一次性密码,在重启计算机时,进入 MOK Manager 管理界面,需要输入对应密码,再重启即可。
[root@gpu-server-001 ~]# mokutil --import /var/lib/dkms/mok.pub
# 列出密钥
[root@gpu-server-001 ~]# mokutil --list-new
# 重启计算机,进入 MOK Manager 管理界面,输入刚刚设置的密码(非 SSH 可操作,需要在显示器或 IPMI 等远程管理工具上进行操作)
[root@gpu-server-001 ~]# reboot
# 重启后,验证证书是否加载成功
[root@gpu-server-001 ~]# dmesg | grep cert
禁用开源驱动
为避免驱动冲突,在安装闭源驱动之前,需要先禁用开源驱动 nouveau
,具体操作步骤如下。
# 默认加载了开源驱动
[root@gpu-server-001 ~]# lsmod | grep nouveau
nouveau 3010560 0
mxm_wmi 16384 1 nouveau
drm_exec 16384 1 nouveau
gpu_sched 57344 1 nouveau
drm_display_helper 212992 1 nouveau
video 73728 2 dell_wmi,nouveau
drm_ttm_helper 16384 1 nouveau
ttm 98304 2 drm_ttm_helper,nouveau
drm_kms_helper 245760 4 drm_display_helper,nouveau
drm 741376 8 gpu_sched,drm_kms_helper,drm_exec,drm_display_helper,drm_ttm_helper,ttm,nouveau
i2c_algo_bit 16384 2 igb,nouveau
wmi 45056 6 video,dell_wmi,dell_smbios,dell_wmi_descriptor,mxm_wmi,nouveau
# 内核层禁用 nouveau 开源驱动
[root@gpu-server-001 ~]# grubby --update-kernel ALL --args rd.driver.blacklist=nouveau
# 验证禁用是否配置成功
[root@gpu-server-001 ~]# grubby --info DEFAULT
index=0
kernel="/boot/vmlinuz-5.14.0-427.31.1.el9_4.x86_64"
args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M rd.lvm.lv=rl/root rd.driver.blacklist=nouveau"
root="/dev/mapper/rl-root"
initrd="/boot/initramfs-5.14.0-427.31.1.el9_4.x86_64.img"
title="Rocky Linux (5.14.0-427.31.1.el9_4.x86_64) 9.4 (Blue Onyx)"
id="599d42b6cdc74c4687b38239a3e9b672-5.14.0-427.31.1.el9_4.x86_64"
# 通过 modprobe 配置禁用 nouveau 驱动
[root@gpu-server-001 ~]# vi /etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
options nouveau modeset=0
# 重新启动计算机生效配置
[root@gpu-server-001 ~]# reboot
# 如果不重启计算机,也可以直接删除已经加载的驱动
[root@gpu-server-001 ~]# rmmod nouveau
# 重启后,验证 nouveau 模块是否已禁用,如果没有任何输出,则说明 nouveau 模块已禁用
[root@gpu-server-001 ~]# lsmod | grep nouveau
获取显卡信息
获取对应显卡的规格、型号,可以使用 lshw
或 lspci
命令。
# 默认 Rocky Linux 未安装 lspci 命令,可以通过 dnf provides 获取对应命令的包提供商,并安装对应包。
[root@gpu-server-001 ~]# dnf provides "*bin/lspci"
Last metadata expiration check: 0:17:17 ago on Tue 20 Aug 2024 02:45:34 PM CST.
pciutils-3.7.0-5.el9.i686 : PCI bus related utilities
Repo : appstream
Matched from:
Provide : /sbin/lspci
pciutils-3.7.0-5.el9.x86_64 : PCI bus related utilities
Repo : baseos
Matched from:
Provide : /sbin/lspci
# 安装 pciutils 包
[root@gpu-server-001 ~]# dnf install -y pciutils
# 获取显卡信息
[root@gpu-server-001 ~]# lspci | grep NVIDIA
03:00.0 VGA compatible controller: NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (rev a1)
03:00.1 Audio device: NVIDIA Corporation GP102 HDMI Audio Controller (rev a1)
[root@gpu-server-001 ~]# lshw -C display
*-display
description: VGA compatible controller
product: GP102 [GeForce GTX 1080 Ti]
vendor: NVIDIA Corporation
physical id: 0
bus info: pci@0000:03:00.0
version: a1
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress vga_controller bus_master cap_list rom
configuration: driver=nvidia latency=0
resources: irq:83 memory:e6000000-e6ffffff memory:d0000000-dfffffff memory:e0000000-e1ffffff ioport:7000(size=128) memory:c0000-dffff
可以看到对应显卡型号为:GeForce GTX 1080 Ti
。
下载驱动
为了保证显卡性能及稳定性,建议下载官方对应显卡型号的最新驱动。驱动下载链接:Download The Official NVIDIA Drivers | NVIDIA,选择对应显卡型号点击【Find】。
最新驱动为 550.107.02
,点击【View】。
点击【Download】下载驱动,获取右击获取下载链接。
# 下载驱动
[root@gpu-server-001 ~]# wget https://us.download.nvidia.com/XFree86/Linux-x86_64/550.107.02/NVIDIA-Linux-x86_64-550.107.02.run
安装驱动
# 安装驱动
[root@gpu-server-001 ~]# ./NVIDIA-Linux-x86_64-550.107.02.run
# 驱动安装过程中,有三项需要进行配置,根据以下 Answer 即可。
Install NVIDIA\'s 32-bit compatibility libraries? (Answer: No)
Would you like to register the kernel module sources with DKMS? This will allow DKMS to automatically build a new module, if your kernel changes later. (Answer: No)
Would you like to run the nvidia-xconfig utility to automatically update your X configuration file so that the NVIDIA X driver will be used when you restart X? Any pre-existing X configuration file will be backed up. (Answer: Yes)
# 安装完成以后,可以通过安装日志查看是否安装成功
[root@gpu-server-001 ~]# tail -n 1 /var/log/nvidia-installer.log
-> Your X configuration file has been successfully updated. Installation of the NVIDIA Accelerated Graphics Driver for Linux-x86_64 (version: 550.107.02) is now complete.
# 确认驱动加载成功
[root@gpu-server-001 ~]# lsmod | grep nvidia
nvidia_drm 131072 0
nvidia_modeset 1355776 1 nvidia_drm
nvidia 54337536 1 nvidia_modeset
video 73728 2 dell_wmi,nvidia_modeset
drm_kms_helper 245760 1 nvidia_drm
drm 741376 4 drm_kms_helper,nvidia,nvidia_drm
# 运行 nvidia-smi 查看显卡运行状态
[root@gpu-server-001 ~]# nvidia-smi
Wed Aug 21 11:31:16 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.107.02 Driver Version: 550.107.02 CUDA Version: 12.4 |
|-----------------------------------------+------------------------+----------------------+
| 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 GTX 1080 Ti Off | 00000000:03:00.0 Off | N/A |
| 34% 42C P5 23W / 250W | 0MiB / 11264MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| No running processes found |
+-----------------------------------------------------------------------------------------+
总结:如果您的使用场景不涉及科学计算、CUDA 应用等需求,那么到此为止,纯粹的 N 卡驱动安装已经完成,您无需再阅读后续系列文章。
参考文献
[1] CUDA Installation Guide for Linux
[2] CUDA GPUs – Compute Capability | NVIDIA Developer
[3] docs.nvidia.com/cuda/pdf/CUDA_Installation_Guide_Linux.pdf