Rocky Linux 9 AI 系列 002 — 离线安装 NVIDIA 闭源驱动

在前文中提到,大部分 Linux 发行版默认使用开源的 NVIDIA 驱动程序。然而,出于性能或功能需求,有时需要安装闭源(也称专有)驱动。例如,木子需要使用 CUDA 功能,因此需要安装 NVIDIA 的闭源驱动。

安装 NVIDIA 闭源驱动的步骤如下:

  1. 配置 BIOS 安全引导启动设置。
  2. 禁用系统默认的开源驱动。
  3. 确认显卡型号。
  4. 从 NVIDIA 官网下载与显卡型号对应的驱动程序。
  5. 安装驱动程序并验证其可用性。

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,说明安全引导状态启用

启用安全引导

对于启用安全引导的计算机,需要手动导入密钥,具体步骤如下:

  1. 因为 dkms 本身对所有模块进行了签名,因此只需要注册它使用的密钥,就可以使 BIOS SecureBoot 正常启用了。
  2. 运行 mokutil --import /var/lib/dkms/mok.pub,会提醒输入一次性密码。
  3. 重启电脑,您应该会看到 MOK Manager,按任意键进入菜单。
  4. 在 MOK Manager 中,选择“Enroll MOK”,然后选择“Continue”,最后选择“Yes”。您将返回主屏幕,但主屏幕中没有“Enroll MOK”按钮。
  5. 选择“Reboot”,然后按回车键。现在您的系统将重新启动。
  6. 在 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

获取显卡信息

获取对应显卡的规格、型号,可以使用 lshwlspci 命令。

# 默认 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

Avatar photo

关于 木子

Founder of the Rocky Linux Chinese community, MVP、VMware vExpert、TVP, advocate for cloud native technologies, with over ten years of experience in site reliability engineering (SRE) and the DevOps field. Passionate about Cloud Computing、Microservices、CI&CD、DevOps、Kubernetes, currently dedicated to promoting and implementing Rocky Linux in Chinese-speaking regions.
用一杯咖啡支持我们,我们的每一篇[文档]都经过实际操作和精心打磨,而不是简单地从网上复制粘贴。期间投入了大量心血,只为能够真正帮助到您。
暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇