---
# System prepended metadata

title: Fedora install Nvidia Driver Guide

---

# Fedora install Nvidia Driver Guida

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:` <br> `NVIDIA GeForce RTX 3070 - (pci\_id 0x2484)` <br><br> `Detected system:` <br> `Ubuntu 24.04` <br><br> `Please copy and paste the following command to install the open kernel module flavour:` <br><br> `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 或更新：

```bash
lspci | grep VGA
```

#### 開源 GPU 核心模組安裝

為了簡化，我們將套件管理器的建議濃縮成表格格式。570 版之後的所有發行版都將使用這些封裝慣例。
以下指令將安裝一個**完整**的驅動程式，它將包含所有桌面元件以及用於運算工作負載的 CUDA 函式庫和工具。

**表 6 套件管理器安裝建議**
| 發行版 | 安裝最新版 | 安裝特定版本 |
| :--- | :--- | :--- |
| Red Hat Enterprise Linux 8/9, Rocky Linux 8/9 <br><br> Oracle Linux 8/9, KylinOS 10, Amazon Linux 2023 | `sudo dnf module enable nvidia-driver:open-dkms` <br><br> `sudo dnf install nvidia-open` | `sudo dnf module enable nvidia-driver:580-open` <br><br> `sudo dnf install nvidia-open-580` |
| Red Hat Enterprise Linux 10, Rocky Linux 10, <br><br>  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 <br><br> Oracle Linux 8/9, KylinOS 10, Amazon Linux 2023 | `sudo dnf module enable nvidia-driver:latest-dkms` <br><br> `sudo dnf install cuda-drivers` | `sudo dnf module enable nvidia-driver:580-dkms` <br><br> `sudo dnf install cuda-drivers-580` |
| Red Hat Enterprise Linux 10, Rocky Linux 10, <br><br> 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 套件：

```bash
sudo dnf install kernel-devel-matched kernel-headers
```

本教學使用，網路倉庫安裝（Network Repository Installation）。
因此執行以下指令
請注意，以 Fedora 42 為例，請將參數 `$distro` 更換成 `fedora42`，`$arch` 更換成 `x86_64`
若為其他發行版請參考一開始的表格去替換

```bash
sudo dnf config-manager addrepo --from-repofile=https://developer.download.nvidia.com/compute/cuda/repos/$distro/$arch/cuda-$distro.repo
```

上述執行完後
清理 DNF 倉庫快取

```bash
sudo dnf clean expire-cache
```


### 驅動程式安裝（Driver Installation）
安裝驅動程式

<font color="red">若使用的是 RTX 20 系列或 GTX 16 系列的顯示卡（Turing 或更新架構），請安裝 Open Kernel Modules；
較舊的（如Maxwell, Pascal, 或是 Volta architectures 架構），請安裝 Proprietary Kernel Modules</font>

<font color="red">若使用的是 RTX 20 系列或 GTX 16 系列的顯示卡（Turing 或更新架構），請安裝 Open Kernel Modules；
較舊的（如Maxwell, Pascal, 或是 Volta architectures 架構），請安裝 Proprietary Kernel Modules</font>

<font color="red">若使用的是 RTX 20 系列或 GTX 16 系列的顯示卡（Turing 或更新架構），請安裝 Open Kernel Modules；
較舊的（如Maxwell, Pascal, 或是 Volta architectures 架構），請安裝 Proprietary Kernel Modules</font>

裝錯很麻煩



#### 開源核心模組（Open Kernel Modules）：

```bash
sudo dnf install nvidia-open
```

#### 專有核心模組（Proprietary Kernel Modules）：

```bash
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 (預設配置)，如果它是作為其他驅動程式元件的依賴項被安裝的，該服務會被自動啟用。它也可以透過執行以下指令來手動重啟：

```bash
sudo systemctl restart nvidia-persistenced
```

### 驗證驅動程式版本

如果您安裝了驅動程式，請驗證載入的是否為正確的版本。當驅動程式被載入時，可以透過執行以下指令來找到驅動程式的版本：

```bash
cat /proc/driver/nvidia/version
```

### 移除本地軟體庫

在驅動程式安裝完成後，建議移除本地軟體庫的安裝程式。
Fedora 42 使用以下指令

```bash
sudo dnf remove nvidia-driver-local-repo\*
```

整體驅動至此安裝完成
