在前文中提到,大部分 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
