返回上一頁

Fedora NVIDIA 驅動程式安裝指南

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.ko
  • nvidia-modeset.ko
  • nvidia-uvm.ko
  • nvidia-drm.ko
  • nvidia-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)

安裝驅動程式

ⓘ Important

若使用的是 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\*

整體驅動至此安裝完成