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.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. 從 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. 其它參考資料