How-To:Linux 安裝 NVIDIA 顯示驅動程式

操作環境:

  • Fedora 40
  • NVIDIA graphics driver 550.76

 

有別於 Intel 或者 AMD 的產品,Linux 對於 NVIDIA 顯示卡的支援算是相對較複雜的情形。Linux 內核本身有提供開放原始碼的 nouveau 模組,為 NVIDIA 顯卡提供一定程度的支援。然而 nouveau 在支援能力上始終有其侷限性,包含效能及穩定性等層面均有不足。所以現實上的多數情形,其實是在 Linux 作業系統完成安裝後,隨即再安裝由 NVIDIA 官方自行維護的 Linux 顯示驅動程式,以確保桌面環境及應用程式能夠妥善運作。

 

本文流程係針對 Fedora 發行版,並且是利用由第三方套件庫所打包的安裝套件,而非使用 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.orgfedora-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. 從 Wayland 切換至 X11

許多 Linux 發行版已開始使用更加先進的 Wayland 協定來取代陳舊的 X11 視窗系統,包含 Fedora 在內,預設也都是啟用 Wayland 而非 X11。有不只一種途徑可以檢視桌面環境當下是使用 Wayland 還是 X11,比方說在 GNOME 桌面環境的系統設定中,在其【關於】頁面內能夠獲取相關資訊。或者在命令行下執行以下指令:

  • echo $XDG_SESSION_TYPE

 

然而至少以 DR 自己的體驗來說,NVIDIA 顯卡時至目前為止,在 Wayland 上仍是容易遇到各種稀奇古怪的問題,特別是在遊戲執行方面更是如此。所以整體來說還是切換至 X11 會有比較可靠的體驗,編輯 /etc/gdm/custom.conf,將以下設定值取消註解:

WaylandEnable=false

 

然後重啟系統,桌面環境便會改以 X11 來運作。

 

7. 解決畫面變換時的撕裂問題

如果螢幕在畫面變換時,容易出現上下不太連貫以致好像「撕裂」般的狀況,那麼可以在 nvidia-settings 的【X Server Display Configuration】→【Advanced...】裡,勾選【Force Full Composition Pipeline】選項,然後點選【Apply】進行套用後便會生效。

 

然而需要留意,前述設定也有可能會使得某些遊戲執行出問題(Proton #6869)。至於若是想要進行永久性的變更,則必須編輯 X11 的設定檔,最直接的方式是改用 root 權限來執行 nvidia-settings:

  • sudo nvidia-settings

 

接著在啟用該選項後,點選【Save to X Configuration File】,並將儲存路徑指向到「/etc/X11/xorg.conf」,儲存後該選項便會成為固定啟用的選項。

 

8. 其它參考資料