快轉到主要內容

教你在Arch Linux安裝Nvidia專有驅動、CUDA、NVIDIA Container Toolkit

分類   Linux系統 Linux使用技巧
標籤   Arch Linux Nvidia
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

本文解說如何在Arch Linux安裝Nvidia專有驅動,解決畫面撕裂問題,以及介紹如何安裝相關的CUDA、cuDNN、TensorRT、NVIDIA Container Toolkit套件。

Linux核心內建的Nvidia驅動是為開源的nouveau,由Linux社群逆向工程而來。nouveau讓你至少開機有畫面,但是一跑3D程式就破功了,nouveau的圖形效能只有Nvidia官方專有(閉源)驅動的一半,所以安裝Nvidia專有驅動乃必要之舉。

儘管 Nvidia官方有詳細的驅動安裝說明文件,但壓根沒提到Arch Linux系的發行版。所幸有全球社群的協助,Arch Linux還是可以安裝Nvidia推出的各式技術與產品的。

一般用戶玩遊戲只要裝完Nvidia專有驅動即可。要跑3D渲染、神經網路(Neural Network)、深度學習(Deep Learning)等AI相關程式的用戶才需要裝後面的CUDA、cuDNN、TensorRT套件。

NVIDIA Container Toolkit是為想跑CUDA但又不想裝多重CUDA版本的用戶所設計的容器工具。

1. 安裝Nvidia專有驅動
#

撰文當下的Linux核心版本:6.8.7

Nvidia驅動版本:560

1.1. 桌上型電腦
#

桌上型電腦指的是以Nvidia當主顯示卡的配置。

Arch Linux Wiki建議使用pacman安裝Nvidia驅動,不要執行Nvidia官網提供的.run程式,這樣裝錯了才方便移除。

  1. 執行指令sudo lspci -k | grep -A 2 -i "NVIDIA"查看現在顯卡是使用哪個驅動。沒安裝專有驅動前,Linux應該會載入nouveau驅動。

  2. Maxwell架構以後的Nvidia 顯示卡,用以下指令安裝最新Nvidia驅動。安裝後nouveau應會被禁止載入(黑名單指令寫在/usr/lib/modprobe.d/nvidia-utils.conf)。

sudo pacman -S nvidia nvidia-utils
  1. 建議安裝純文字工具「nvtop」用於查看顯示卡使用率
sudo pacman -S nvtop
  1. 安裝驅動後重開機。

  2. nvidia-smi指令檢查安裝狀況,如果有顯示驅動版本代表驅動安裝成功。Nvidia驅動應是開箱即用的,無需手動調整X伺服器設定。

  3. 再度執行指令sudo lspci -k | grep -A 2 -i "NVIDIA",查看nouveau是否已經變成nvidia驅動。

  4. 試著開瀏覽器看高畫質影片,再於終端機執行nvtop指令,可從圖表的顯卡使用率確認Nvidia顯示卡有無參與圖形算繪。


進階用法:如果你常常換核心開機(例如linux-zenlinux-lts),那裝DKMS版的Nvidia驅動會更妥當,它會在每次更新核心時自動編譯。

sudo pacman -R nvidia
sudo pacman -S nvidia-dkms nvidia-utils linux-headers

若是需要「特定版本」的Nvidia驅動,那麼可以到 AUR找舊版驅動,以DKMS安裝:

yay -S nvidia-535xx-dkms

1.2. 雙顯卡筆電
#

搭載Nvidia顯卡的Linux筆電的安裝驅動方式跟桌上型電腦一樣。

不過,Intel+Nvidia的雙顯卡筆電,即使裝了Nvidia驅動也可能繼續用Intel顯卡渲染3D,導致3D性能低下。

此時請使用 PRIME指令啟用Nvidia顯示卡渲染;或者用 Envy Control完全切換顯卡渲染工作。

如果Nvidia專有驅動導致進入tty黑螢幕的話,於/etc/default/grubGRUB_CMDLINE_LINUX_DEFAULT引數加入nomodeset,再更新GRUB。

3. 安裝CUDA
#

CUDA (Compute Unified Device Architecture),在做深度學習、Blender渲染時常用到的技術。

本文撰寫時點CUDA最新版本為12.4

  1. 安裝CUDA,重開機:
sudo pacman -S cuda
  1. nvcc --version指令確認CUDA版本。

  2. Arch Linux會將CUDA相關檔案安裝至/opt/cuda,有需要的話可以將CUDA的PATH加到~/.bashrc,此路徑永遠指向最新版CUDA。

export PATH=/opt/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/opt/cuda/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

  1. 欲安裝舊版本CUDA,去 AUR找社群打包的就可以了。

  2. 例如現在最新版是CUDA 12,而你需要CUDA 11.1,就從AUR裝。舊版CUDA會安裝到/opt/cuda-版本號

yay -S cuda-11.1
  1. CUDA可以多版本共存,改一下~/.bashrc裡面的路徑,指向舊版就行了。
export PATH=/opt/cuda-11.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/opt/cuda-11.1/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

4. 安裝NVIDIA Container Toolkit套件
#

這是Nvidia設計給Docker/Podman用的工具,讓你只需要在宿主機安裝Nvidia驅動,不需安裝CUDA套件,也能讓容器使用CUDA運算。

  1. 安裝套件
sudo pacman -S nvidia-container-toolkit
  1. 新增設定檔
sudo mkdir /etc/docker
sudo vim /etc/docker/daemon.json
  1. 填入以下內容
{
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}
  1. 重新啟動Docker
sudo systemctl restart docker
  1. 拉取CUDA 12.1版本的映像檔
sudo docker run --rm --gpus all nvidia/cuda:12.1.0-base-ubuntu20.04 nvidia-smi
  1. 測試能否在容器執行nvidia-smi,印出Nvidia驅動的資訊。

參考資料
#

相關文章

比較Arch Linux核心差異:linux, linux-zen, linux-lts, linux-hardened
分類   Linux系統 Linux使用技巧
標籤   Arch Linux Linux Kernel
fontconfig調整Linux中文預設字體的優先順序,修正字體模糊、Emoji亂碼的問題
分類   Linux系統 Linux使用技巧
標籤   Ubuntu Arch Linux Freedesktop Specifications
Arch Linux連接Airpods Pro藍牙耳機和查看電量
分類   Linux系統 Linux使用技巧
標籤   AirPods KDE Plasma Arch Linux

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。