快轉到主要內容

Rocky Linux如何安裝Nvidia專有驅動、CUDA、NVIDIA Container Toolkit

· 民國113年甲辰年
· ·
分類   Linux系統 Linux使用技巧
標籤   Nvidia Rocky Linux
目錄

適用版本:Rocky Linux 9以上

以Nvidia顯示卡來說,Linux預設載入的是nouveau開源驅動,需要手動安裝Nvidia專有驅動,之後才能夠安裝CUDA套件。

雖然Rocky Linux安裝指令跟RHEL很像,但是有些服務不太一樣,所以特別寫一篇介紹。

1. 安裝Nvidia專有驅動
#

Rocky Linux的「RPM Fusion」和「EPEL」套件庫都有收Nvidia專有驅動套件,但是我選擇從Nvidia官方的套件庫安裝,以取得最新版的套件。

本文安裝的時候並未啟用Secure Boot。

1.1. 桌電與伺服器
#

  1. 查看現在Nvidia GPU是使用哪個驅動。
sudo lspci -k | grep -A 2 -i "NVIDIA"
  1. 沒安裝Nvidia專有驅動前,Linux應該會載入nouveau核心模組。
# 範例輸出
07:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] (rev a1)
        Subsystem: ASUSTeK Computer Inc. Device 85d6
        Kernel modules: nouveau
  1. 啟用EPEL和CRB套件庫
sudo dnf install epel-release

sudo crb enable
  1. 加入Nvidia官方套件庫,選取RHEL 9版本
curver="rhel$(rpm -E %rhel)"

sudo wget -O /etc/yum.repos.d/cuda-$curver.repo \
http://developer.download.nvidia.com/compute/cuda/repos/$curver/$(uname -i)/cuda-$curver.repo
  1. 更新系統,重開機
sudo dnf update

sudo systemctl shutdown now -r
  1. 安裝編譯依賴套件
sudo dnf groupinstall "Development Tools"

sudo dnf install kernel-devel

sudo dnf install dkms
  1. 以DKMS方式安裝Nvidia驅動
# 安裝最新版本驅動
sudo dnf module install nvidia-driver:latest-dkms

# 或者解除安裝現有驅動,改裝指定版本的驅動
sudo dnf module list nvidia-driver
sudo dnf erase *nvidia*
sudo dnf module reset nvidia-driver
sudo dnf module install nvidia-driver:560-dkms
  1. 你可能要編輯GRUB,手動將nouveau驅動加入黑名單
sudo vim /etc/default/grub

# 在GRUB_CMDLINE_LINUX後面加入:rd.driver.blacklist=nouveau

sudo grub2-mkconfig -o /boot/grub2/grubenv
  1. 重開機
sudo reboot
  1. 確認Nvidia驅動版本:
nvidia-smi
  1. 順利的話應該會看到驅動版本
# 範例輸出
Sat Oct 26 15:01:38 2024       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 560.35.03              Driver Version: 560.35.03      CUDA Version: 12.6     |
|-----------------------------------------+------------------------+----------------------+
| 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 1050 Ti     Off |   00000000:07:00.0 Off |                  N/A |
| 29%   43C    P8             N/A /   75W |      11MiB /   4096MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
                                                                                         
+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+
  1. 再度執行lspci指令
sudo lspci -k | grep -A 2 -i "NVIDIA"
  1. 查看nouveau是否已經變成nvidia。
# 範例輸出
07:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] (rev a1)
        Subsystem: ASUSTeK Computer Inc. Device 85d6
        Kernel modules: nvidia_drm, nvidia

1.2. 雙GPU筆電
#

搭載Nvidia獨立顯示卡的筆電安裝顯示卡驅動的方式跟桌上型電腦一樣。

不過,像Intel+Nvidia這種的雙GPU筆電,即使裝了Nvidia驅動也可能繼續用Intel的GPU渲染3D,導致3D性能低下。

此時可以使用prime-select指令,指定用Nvidia顯示卡負責渲染作業。

sudo prime-select nvidia

重開機後再使用指令:vulkaninfo --summary查看主顯示卡為何。

相關文章:Nvidia PRIME指令使用方式

2. 安裝CUDA
#

必須先安裝Nvidia專有驅動才能安裝CUDA。

  1. 加入Nvidia官方套件庫,選取RHEL 9版本
curver="rhel$(rpm -E %rhel)"

sudo wget -O /etc/yum.repos.d/cuda-$curver.repo \
http://developer.download.nvidia.com/compute/cuda/repos/$curver/$(uname -i)/cuda-$curver.repo
  1. 安裝最新版CUDA套件
sudo dnf install cuda-toolkit
  1. 目前CUDA最新版本為12.6,將路徑加入到PATH
echo "export PATH=/usr/local/cuda-12.6/bin${PATH:+:${PATH}}" >> ~/.bashrc

source ~/.bashrc
  1. 確認CUDA版本
nvcc --version
  1. 應該會看到以下字串
# 範例輸出
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Thu_Sep_12_02:18:05_PDT_2024
Cuda compilation tools, release 12.6, V12.6.77
Build cuda_12.6.r12.6/compiler.34841621_0

3. 安裝NVIDIA Container Toolkit
#

在Docker或Podman容器內跑CUDA的技術。宿主機必須安裝Nvidia專有驅動,但不需要安裝CUDA。

  1. 在Rocky Linux安裝Podman
sudo dnf install podman
  1. 新增Nvidia官方套件庫
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
  sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
  1. 安裝Nvidia Container Toolkit
sudo dnf install nvidia-container-toolkit
  1. 建立Nvidia的CDI環境定義
sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml

sudo nvidia-ctk cdi list
  1. 測試跑容器,看能否偵測到Nvidia驅動版本
podman run --rm --device nvidia.com/gpu=all --security-opt=label=disable ubuntu nvidia-smi
  1. 應該能顯示Nvidia驅動版本
# 範例輸出
Sat Oct 26 12:13:55 2024       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 560.35.03              Driver Version: 560.35.03      CUDA Version: 12.6     |
|-----------------------------------------+------------------------+----------------------+
| 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 1050 Ti     Off |   00000000:07:00.0 Off |                  N/A |
| 29%   38C    P8             N/A /   75W |      70MiB /   4096MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
                                                                                         
+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
+-----------------------------------------------------------------------------------------+

參考資料
#

相關文章

Ubuntu LTS如何安裝Nvidia顯示卡驅動、CUDA、NVIDIA Container Toolkit套件
分類   Linux系統 Linux使用技巧
標籤   Ubuntu Nvidia
教你在Arch Linux安裝Nvidia專有驅動、CUDA、NVIDIA Container Toolkit
分類   Linux系統 Linux使用技巧
標籤   Arch Linux Nvidia
Nvidia PRIME用法,Linux雙顯卡電腦切換獨顯跑3D渲染
分類   Linux系統 Linux使用技巧
標籤   Nvidia Linux Flatpak

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。