Nvidia Driver說明
https://docs.nvidia.com/datacenter/tesla/driver-installation-guide/index.html
本教學以 Fedora 為主,其他的可能請至官方文件說明
本篇以 Fedora 42 為主體
首先
在 Linux 上安裝 NVIDIA 驅動程式有一些要求。
介紹
Linux 系統需求
要在系統上使用 NVIDIA 驅動程式,你需要已安裝:
- NVIDIA GPU
- 受支援的 Linux 版本與編譯器及工具鏈(如 gcc)
另外在本節提到的注意 <distro> 與 <arch> 需以表格中「Codename」與「Architecture」欄位的值替換。
並且,對各作業系統的支援截至該作業系統官方所定義的標準 EOSS/EOL(支援終止/生命週期終止)日期。
| Distribution | Codename | Architecture |
|---|---|---|
| amd64 systems (x86_66) | ||
| Red Hat Enterprise Linux 10 | rhel10 | x86_64 |
| Red Hat Enterprise Linux 9 | rhel9 | x86_64 |
| Red Hat Enterprise Linux 8 | rhel8 | x86_64 |
| OpenSUSE Leap 15 SP6 | opensuse15 | x86_64 |
| Rocky Linux 10 | rhel10 | x86_64 |
| Rocky Linux 9 | rhel9 | x86_64 |
| Rocky Linux 8 | rhel8 | x86_64 |
| SUSE Linux Enterprise Server 15 SP6+ | sles15 | x86_64 |
| Ubuntu 24.04 LTS | ubuntu2404 | amd64 |
| Ubuntu 22.04 LTS | ubuntu2204 | amd64 |
| Debian 12 | debian12 | amd64 |
| Fedora 42 | fedora42 | x86_64 |
| KylinOS V10 SP3 2403 | kylin10 | x86_64 |
| Azure Linux 2.0 (CBL Mariner 2.0) | cm2 | x86_64 |
| Azure Linux 3.0 | azl3 | x86_64 |
| Amazon Linux 2023 | amzn2023 | x86_64 |
| Oracle Linux 9 | rhel9 | x86_64 |
| Oracle Linux 8 | rhel8 | x86_64 |
| arm64 systems (sbsa) | ||
| Red Hat Enterprise Linux 10 | rhel10 | aarch64 |
| Red Hat Enterprise Linux 9 | rhel9 | aarch64 |
| Red Hat Enterprise Linux 8 | rhel8 | aarch64 |
| SUSE Linux Enterprise Server 15 SP6+ | sles15 | aarch64 |
| Kylin V10 SP3 2403 | kylin10 | aarch64 |
| Ubuntu 24.04 LTS | ubuntu2404 | arm64 |
| Ubuntu 22.04 LTS | ubuntu2204 | arm64 |
| Azure Linux 3.0 | azl3 | aarch64 |
| Amazon Linux 2023 | amzn2023 | aarch64 |
可由一般使用者執行的指令,行首以 $ 標示。
需要系統管理權限(root)的指令,行首以 # 標示。
上述兩句話為原手冊寫法,本文中若是為一般使用者可操作指令將不會加任何前綴,對於需以 root 執行的,會直接替代,方便操作
本文中的許多指令可能需要超級使用者權限。
在大多數 Linux 發行版上,這需要以 root 登入。
對已啟用 sudo 套件的系統,請在必要指令前加上 sudo,或使用 sudo -i 進入 root shell。
安裝前動作
在 Linux 上安裝 NVIDIA 驅動程式之前,必須先完成下列動作:
確認系統執行受支援的 Linux 版本。
確認系統已安裝對應的核心標頭(kernel headers)與開發套件(development packages)。
處理可能衝突的安裝方式。
確認你使用的是受支援的 Linux 發行版
NVIDIA 驅動程式套件僅支援特定的 Linux 發行版。這些發行版列於 NVIDIA 驅動程式的發行註記中。
欲確認目前系統的發行版與版本號,請輸入:
hostnamectl
確認系統已安裝正確的核心套件
NVIDIA 驅動程式要求:在安裝驅動程式當下,以及日後重建驅動程式時,系統必須安裝與正在執行的核心版本相同的 kernel headers 與 development packages。
例如:若系統執行的核心版本為 3.17.4-301,則必須安裝 3.17.4-301 的核心標頭與開發套件。
以 rpm 或 deb 安裝的驅動程式若偵測到未安裝任何版本的相關套件,會嘗試安裝 kernel headers 與 development packages 的最新版本;但該最新版本不一定與系統正在使用的核心版本相符。
因此,最佳做法是在安裝驅動程式之前(以及每次更換核心版本時),手動確保正確版本的核心標頭與開發套件已就緒。
查詢系統正在執行的核心版本:
sudo uname -r
選擇安裝方法
NVIDIA 驅動程式可使用發行版專屬套件(rpm 或 Debian 套件)安裝。
亦可使用與發行版無關的獨立封裝(runfile)。
與發行版無關的封裝可跨更多 Linux 發行版使用,但不會與發行版原生套件管理系統整合更新;
發行版專屬套件可與該發行版的套件管理系統整合。建議在可行時優先使用發行版專屬套件。
使用 rpm 或 Debian 的本機倉庫安裝包時,下載的套件會在本機檔案系統(如 /var/)中包含一個倉庫快照;此類套件只告訴套件管理器到哪裡取得實際安裝套件,不會直接安裝。
若啟用了線上網路倉庫,安裝時 rpm 或 Debian 套件會透過系統套件管理器(apt、dnf、tdnf、yum、zypper)自動下載所需套件。
額外說明
若沒有需要可以跳過(額外說明)的部分
驅動程式輔助腳本
目前 NVIDIA 有提供一個腳本,用以偵測並安裝最適合使用者系統的 NVIDIA 驅動程式套件。
此軟體旨在根據偵測到的系統硬體,幫助使用者決定要安裝哪一款 NVIDIA 顯示卡驅動程式。
若要安裝此驅動程式輔助腳本,請使用 apt/dnf/tdnf/zypper 安裝 nvidia-driver-assistant 套件。
下表說明了此驅動程式輔助腳本的不同旗標:
驅動程式輔助腳本旗標
| 旗標 (Flags Used) | 說明 (Description) |
|---|---|
--install |
安裝建議的驅動程式。 |
--branch [BRANCH] |
指定一個 NVIDIA 驅動程式分支。 |
--list-supported-distros |
印出支援的 Linux 發行版列表。 |
--supported-gpus [SUPPORTED_GPUS] |
使用一個不同的 supported-gpus.json 檔案。 |
--sys-path [SYS_PATH] |
使用一個不同的 /sys 路徑。常用於測試。 |
--os-release-path [OS_RELEASE_PATH] |
使用一個不同的 os-release 檔案路徑。常用於測試。 |
--distro [DISTRO] |
使用 DISTRO:VERSION 或 DISTRO 格式來指定 Linux 發行版。常用於測試。 |
--module-flavor [MODULE_FLAVOR] |
指定核心模組類型;可接受的值為 open (開源) 和 closed (封閉)。常用於測試。 |
--verbose |
[可選] 詳細輸出。 |
以下是指令輸出的範例:
指令輸出
| 指令 (Command) | 輸出範例 (Example Output) |
|---|---|
nvidia-driver-assistant |
Detected GPUs: NVIDIA GeForce RTX 3070 - (pci\_id 0x2484) Detected system: Ubuntu 24.04 Please copy and paste the following command to install the open kernel module flavour: sudo apt install -y nvidia-open |
自動硬體選擇
從 560 版本開始,獨立的 NVIDIA 驅動程式 runfile 將會使用硬體偵測功能,根據偵測到的 SKU (產品型號),自動選擇安裝開源 GPU 核心模組或專有核心模組。
CUDA runfile 捆綁了一個完整的 NVIDIA 驅動程式 runfile,並且如果使用者透過 ncurses 介面或指令列選擇了安裝驅動程式(預設選項),它會傳遞 --silent 旗標。
因此,在預設情況下,使用者透過 CUDA runfile 將會安裝自動偵測的核心模組類型。此外,我們也在 ncurses UI 進階選項中,或透過 --kernel-module-type=open 和 --kernel-module-type=proprietary 旗標,提供了覆蓋(override)選項,讓使用者可以手動選擇開源 GPU 或專有核心模組。
核心模組 (Kernel Modules)
NVIDIA Linux GPU 驅動程式包含多個核心模組:
nvidia.konvidia-modeset.konvidia-uvm.konvidia-drm.konvidia-peermem.ko
從 515 驅動程式系列開始,提供了兩種版本的核心模組:
- 專有 (Proprietary) - 這是 NVIDIA 歷來提供的版本。適用於 Maxwell、Pascal 或 Volta 等較舊架構的 GPU。開源 GPU 核心模組與您的平台不相容,因此您必須使用專有模組。
- 開源 (Open-source) - 以 MIT/GPLv2 雙重授權發布的核心模組。這些僅適用於 Turing 及更新的架構,如果您擁有這些架構之一,這就是您應該使用的。
從 560 驅動程式系列開始,開源核心模組是預設的安裝選項。
開源 GPU 核心模組僅支援 Turing 及更新的世代。要驗證您的 NVIDIA GPU 至少為 Turing 或更新:
lspci | grep VGA
開源 GPU 核心模組安裝
為了簡化,我們將套件管理器的建議濃縮成表格格式。570 版之後的所有發行版都將使用這些封裝慣例。
以下指令將安裝一個完整的驅動程式,它將包含所有桌面元件以及用於運算工作負載的 CUDA 函式庫和工具。
表 6 套件管理器安裝建議
| 發行版 | 安裝最新版 | 安裝特定版本 |
|---|---|---|
| Red Hat Enterprise Linux 8/9, Rocky Linux 8/9 Oracle Linux 8/9, KylinOS 10, Amazon Linux 2023 |
sudo dnf module enable nvidia-driver:open-dkms sudo dnf install nvidia-open |
sudo dnf module enable nvidia-driver:580-open sudo dnf install nvidia-open-580 |
| Red Hat Enterprise Linux 10, Rocky Linux 10, Fedora 42 |
sudo dnf install nvidia-open |
sudo dnf install nvidia-open-580 |
| Azure Linux 2 / Azure Linux 3 | sudo tdnf install nvidia-open |
sudo tdnf install nvidia-open-580 |
| openSUSE Leap 15 | sudo zypper install nvidia-open |
sudo zypper install nvidia-open-580 |
| SUSE Linux Enterprise Server 15 (x86_64) | sudo zypper install nvidia-open |
sudo zypper install nvidia-open-580 |
| SUSE Linux Enterprise Server 15 (aarch64) | sudo zypper install nvidia-open |
sudo zypper install nvidia-open-580 |
| Debian 12 | sudo apt install nvidia-open |
#sudo apt install nvidia-open-580 |
| Ubuntu 22.04/24.04 | sudo apt install nvidia-open |
sudo apt install nvidia-open-580 |
專有 GPU 核心模組安裝
為了簡化,我們將套件管理器的建議濃縮成表格格式。570 版之後的所有發行版都將使用這些封裝慣例。
以下指令將安裝一個完整的驅動程式,它將包含所有桌面元件以及用於運算工作負載的 CUDA 函式庫和工具。
表 7 專有 GPU 核心模組安裝
| 發行版 | 安裝最新版 | 安裝特定版本 |
|---|---|---|
| Red Hat Enterprise Linux 8/9, Rocky Linux 8/9 Oracle Linux 8/9, KylinOS 10, Amazon Linux 2023 |
sudo dnf module enable nvidia-driver:latest-dkms sudo dnf install cuda-drivers |
sudo dnf module enable nvidia-driver:580-dkms sudo dnf install cuda-drivers-580 |
| Red Hat Enterprise Linux 10, Rocky Linux 10, Fedora 42 |
sudo dnf install cuda-drivers |
sudo dnf install cuda-drivers-580 |
| Azure Linux 2 / Azure Linux 3 | Only the open kernel modules are supported. | Only the open kernel modules are supported. |
| openSUSE Leap 15 | sudo zypper install cuda-drivers |
sudo zypper install cuda-drivers-580 |
| SUSE Linux Enterprise Server 15 | sudo zypper install cuda-drivers |
sudo zypper install cuda-drivers-580 |
| Debian 12 | sudo apt install cuda-drivers |
sudo apt install cuda-drivers-580 |
| Ubuntu 22.04/24.04 | sudo apt install cuda-drivers |
sudo apt install cuda-drivers-580 |
Fedora
請先執行「安裝前動作」。
為目前正在執行的核心安裝對應的 kernel headers 與 development 套件:
sudo dnf install kernel-devel-matched kernel-headers
本教學使用,網路倉庫安裝(Network Repository Installation)。
因此執行以下指令
請注意,以 Fedora 42 為例,請將參數 $distro 更換成 fedora42,$arch 更換成 x86_64
若為其他發行版請參考一開始的表格去替換
sudo dnf config-manager addrepo --from-repofile=https://developer.download.nvidia.com/compute/cuda/repos/$distro/$arch/cuda-$distro.repo
上述執行完後
清理 DNF 倉庫快取
sudo dnf clean expire-cache
驅動程式安裝(Driver Installation)
安裝驅動程式
若使用的是 RTX 20 系列或 GTX 16 系列的顯示卡(Turing 或更新架構),請安裝 Open Kernel Modules;
較舊的(如Maxwell, Pascal, 或是 Volta architectures 架構),請安裝 Proprietary Kernel Modules
裝錯很麻煩
開源核心模組(Open Kernel Modules):
sudo dnf install nvidia-open
專有核心模組(Proprietary Kernel Modules):
sudo dnf install cuda-drivers
安裝完成後請執行 Post-installation Actions
安裝後續作業 (Post-installation Actions)
安裝後續作業必須手動執行。
建議重新開機後再執行
若是未重開機就執行可能會報錯
Persistence Daemon
NVIDIA 在 Linux 上提供了一個使用者空間 (user-space) 的 daemon 服務,以支援在多次 CUDA 任務運行之間保持驅動程式的狀態。相較於持久性模式 (persistence mode),daemon 服務為這個問題提供了一個更優雅且更穩健的解決方案。
關於 NVIDIA Persistence Daemon 的更多詳細資訊,
請參閱
http://docs.nvidia.com/deploy/driver-persistence/index.html#persistence-daemon
所有的發行版套件都包含一個 systemd preset (預設配置),如果它是作為其他驅動程式元件的依賴項被安裝的,該服務會被自動啟用。它也可以透過執行以下指令來手動重啟:
sudo systemctl restart nvidia-persistenced
驗證驅動程式版本
如果您安裝了驅動程式,請驗證載入的是否為正確的版本。當驅動程式被載入時,可以透過執行以下指令來找到驅動程式的版本:
cat /proc/driver/nvidia/version
移除本地軟體庫
在驅動程式安裝完成後,建議移除本地軟體庫的安裝程式。
Fedora 42 使用以下指令
sudo dnf remove nvidia-driver-local-repo\*
整體驅動至此安裝完成