適用系統版本:Debian 12 Bookworm
本文解說如何在Debian GNU/Linux系統安裝Nvidia驅動程式與CUDA套件。
安裝方法參考自Debian Wiki與Nvidia官方文件,以APT套件管理員線上安裝(Network Installation)為主,方便升級與解除安裝。
以lspci -nn | egrep -i "3d|display|vga"
確認電腦顯示卡型號,應會看到如下輸出。
01:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] (rev a1)
在安裝Debian的時候,如果有Nvidia顯示卡,預設會載入開源的nouveau驅動。但是要使用CUDA技術,就得安裝Nvidia的專有驅動。
nouveau是含在mesa套件裡面的,一般不需要刪除套件,在安裝Nvidia專有驅動後nouveau就會自動被停用。
另外,需要多版本Python共存的請安裝 Anaconda。
1. 安裝Nvidia專有驅動#
1.1. 桌電與伺服器#
Debian官方非自由(non-free)的套件庫有收錄Nvidia驅動的套件。
- 查看現在Nvidia GPU是使用哪個驅動。
sudo lspci -k | grep -A 2 -i "NVIDIA"
- 沒安裝Nvidia專有驅動前,Linux應該會載入nouveau核心模組。
# 範例輸出
07:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] (rev a1)
Subsystem: ASUSTeK Computer Inc. Device 85d6
Kernel modules: nouveau
- 啟用非自由的套件庫
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository contrib
sudo add-apt-repository non-free
sudo apt update
- 接著以DKMS安裝Nvidia驅動
sudo apt install linux-headers-amd64
sudo apt install nvidia-driver firmware-misc-nonfree
安裝後重開機,執行
nvidia-smi
指令查看目前驅動版本。再度執行lspci指令
sudo lspci -k | grep -A 2 -i "NVIDIA"
- 查看nouveau是否已經變成nvidia。
# 範例輸出
07:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] (rev a1)
Subsystem: ASUSTeK Computer Inc. Device 85d6
Kernel modules: nvidia_drm, nvidia
- Debian Stable提供的
nvidia-driver
套件版本可能有點舊,這沒有關係,下面安裝CUDA的時候會自動裝上新版驅動。
1.2. 雙GPU筆電#
搭載Nvidia獨立顯示卡的筆電安裝顯示卡驅動的方式跟桌上型電腦一樣。
不過,像Intel+Nvidia這種的雙GPU筆電,即使裝了Nvidia驅動也可能繼續用Intel的GPU渲染3D,導致3D性能低下。
此時可以使用prime-select
指令,指定用Nvidia顯示卡負責渲染作業。
sudo prime-select nvidia
重開機後再使用指令:vulkaninfo --summary
查看主顯示卡為何。
相關文章: Nvidia PRIME指令使用方式
2. 安裝CUDA#
Debian套件庫有收錄CUDA的套件,但是要取得最新版本得用Nvidia官方的套件庫。
必須先裝Nvidia專有驅動才能裝CUDA。
- 取得Nvidia提供的套件庫金鑰。
$distro
是Debian版本號碼,$arch
是作業系統架構。
distro=debian12
arch=x86_64
wget https://developer.download.nvidia.com/compute/cuda/repos/<distro>/<arch>/cuda-keyring_1.1-1_all.deb
sudo apt install ./cuda-keyring_1.1-1_all.deb
- 安裝CUDA套件,目前最新版CUDA為12.6。
sudo apt update
sudo apt install cuda-toolkit
- CUDA會安裝至
/usr/local/
,以VIM編輯~/.bashrc
vim ~/.bashrc
- 將以下二行加到檔案末尾,這樣系統才找得到CUDA 12.6的檔案
export PATH=/usr/local/cuda-12.6/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.6/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
- 重開機,執行
nvcc --version
指令查看CUDA版本
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Tue_Feb__7_19:32:13_PST_2023
Cuda compilation tools, release 12.1, V12.1.66
Build cuda_12.1.r12.1/compiler.32415258_0
3. 安裝CUDA Container Toolkit#
這是設計給Docker和Podman容器用的Nvidia工具,使容器可以使用CUDA計算。
即使宿主機沒有安裝CUDA套件,容器內照樣可以使用CUDA計算。
必須先安裝Nvidia專有驅動才可以安裝NVIDIA Container Toolkit。
在Debian 安裝Docker
加入Nvidia的套件庫
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
- 安裝NVIDIA Container Toolkit
sudo apt update
sudo apt install nvidia-container-toolkit
- 向Docker註冊Nvidia裝置
sudo nvidia-ctk runtime configure --runtime=docker
- 重新啟動Docker
sudo systemctl restart docker
- 執行Ubuntu容器,測試能否印出Nvidia顯示卡的資訊。
sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi
參考資料#
- NvidiaGraphicsDrivers - Debian Wiki
- Nouveau: Accelerated Open Source driver for nVidia cards - freedesktop.org
- NVIDIA Driver Installation Quickstart Guide
- NVIDIA CUDA Installation Guide for Linux
- NVIDIA Deep Learning cuDNN Documentation
- NVIDIA Deep Learning TensorRT Documentation
- NVIDIA Container Toolkit Installation Guide