操作環境:
- Fedora 42
- NVIDIA graphics driver 580.82.09
有別於 Intel 或者 AMD 的產品,Linux 對於 NVIDIA 顯示卡的支援算是相對較複雜的情形。Linux 內核本身有提供開放原始碼的 nouveau 模組,為 NVIDIA 顯卡提供一定程度的支援。然而 nouveau 在支援能力上始終有其侷限性,包含效能及穩定性等層面均有不足。所以現實上的多數情形,其實是在 Linux 作業系統完成安裝後,隨即再安裝由 NVIDIA 官方自行維護的 Linux 顯示驅動程式,以確保桌面環境及應用程式能夠妥善運作。
NVIDIA 所提供的 Linux 驅動安裝程式其實相當先進,是採 TUI 介面的可執行程式(*.run),會主動考量到許多情境,包含反安裝及 DKMS 等需求皆有支援。只是一般來說,在 Linux 發行版上使用由第三方套件庫所打包的驅動程式套件,在軟體管理以及後續的版本更新上都會更加便利。因此本文流程係針對 Fedora 發行版,從套件庫進行 NVIDIA 顯示驅動程式的安裝。然而倘若所用的 Linux 發行版並無套件庫可提供合適的 NVIDIA 顯示驅動程式版本,那麼就是另外使用官方安裝程式來進行安裝。
此外主機板 UEFI 若有支援 Secure Boot,請先確認其為關閉狀態,否則 NVIDIA 的 Linux 驅動程式模組可能會需要經過簽署才能作用。而說實在話,DR 認為最直接的解決方案就是停用 Secure Boot,那不是我們一般在使用電腦時會需要的功能。
1. 確認所使用的顯示晶片及適用的驅動程式版本
由於不同的晶片世代所適用的驅動程式版本可能並不相同,因此倘若不是很清楚顯示晶片的型號,應該要先加以釐清,可以使用以下指令來查詢:
- lspci|grep VGA
在確認晶片型號後,接著便對照此頁面的資訊:Current graphics driver releases;以及其中的附錄(Appendix A)連結內,也有詳細的支援清單,會聲明各晶片型號所適用的驅動程式版本。藉此確認是否可適用於最新的驅動程式版本,或者是需要安裝較舊的版本分支(legacy releases)。倘若是使用較舊的晶片,則一定得確認適用的驅動程式版本為何,否則驅動程式安裝後會是無法作用的。
2. 設定 DNF
本文所使用的驅動程式套件,是來自第三方的 RPM Fusion 套件庫,因此請參照 DNF 套件庫的設定來啟用該套件庫。倘若顯示晶片需要使用較舊的版本(例如 470xx),那麼應參照此說明文件,進行特定驅動程式版本的安裝。
除此之外,來自 negativo17.org 的 fedora-multimedia 套件庫,也同樣地有提供 NVIDIA 驅動程式套件,是其中一種可以考慮使用的套件來源。
3. 安裝驅動程式
在啟用了 RPM Fusion 套件庫後,執行以下指令便能夠安裝當前版本的 NVIDIA 驅動程式:
- sudo dnf install akmod-nvidia
前述安裝指令會一併啟用 akmods 服務,自動為系統中的 Linux 內核版本組建出 nvidia 驅動程式模組,並且生產出相應的 kmod-nvidia 套件來進行安裝。這是一個背景執行的服務,形同於手動執行以下指令:
- sudo akmods
當 dnf 指令結束執行後,akmods 的組建過程及結果並不會直接顯示出來。因主機效能等因素而異,有可能會需時數十秒至數分鐘不等。在 /var/cache/akmods/ 目錄下會存在執行過程中所寫入的日誌記錄,例如 /var/cache/akmods/nvidia/.last.log,可以加以檢視。或者,由於組建過程的 CPU 使用率,其實還蠻明顯的,所以也可以考慮使用例如 htop 這類的系統資源檢視工具來做查看。
可以使用不只一種指令,來確認已安裝在系統中的 kmod-nvidia 套件清單,例如:
- sudo dnf list --installed kmod-nvidia*
- rpm -qa|grep ^kmod-nvidia
一旦組建及安裝完畢,就可以將系統重啟,以便載入組建好的驅動模組。倘若在驅動模組還未完成組建前就重啟系統,則系統一開始啟動時,akmods 服務也會先進行組建動作,然後在安裝完畢後才會進入到桌面環境。此外,akmods 的自動化作業,不僅是會在安裝 akmod-nvidia 套件時一併執行,倘若日後新安裝不同版本的 Linux 內核(kernel)套件,則在安裝過程中同樣也會觸發 akmods 的組建動作。
4. 檢驗驅動程式是否有順利啟用
首要的判斷步驟,其實就是看能否進入桌面。倘若有順利進入桌面環境,則接著有不只一種檢驗方式,能夠進一步確認驅動程式的運作狀況。比方說執行 NVIDIA 所提供的設定工具:
- nvidia-settings
在驅動程式正常運作的情況下,該工具視窗應不會輸出任何錯誤訊息,且應能夠順利顯示包含驅動程式版本在內的各項資訊:
其它的檢驗方式則例如執行下列指令:
- glxinfo|grep "direct rendering\|vendor"
倘若執行結果分別顯示「Yes」及「NVIDIA Corporation」,那麼即表示 NVIDIA 官方驅動程式是有正常運作的。此外也可以使用以下指令來檢視 nvidia 模組狀態:
- modinfo nvidia
5. 障礙排除
若是因某些未知因素,使得驅動程式未能順利啟用。那麼一種最直接可嘗試的修正方式,是將驅動程式移除再重新安裝。可能會需要使用例如以下指令,來進行完整的移除:
- sudo dnf remove *nvidia*
6. 其它參考資料