0%

ubuntu24 安装 cuda

如果不使用安装 cuda 用 ubuntu 的 Additional Drivers 选择驱动挺好用的。
但是如果使用 nvidia 提供的方式 安装 cuda,还使用 Additional Drivers 的话,apt upgrade 可能会导致 nvidia-deiver 包损坏。
这里系统我使用的是 ubuntu24,显卡 RTX3060LAPTOP 和 RTX950 进行演示。
本次演示我未使用独显直连,因为查询资料的是否看到有人关闭ui功能后安装显卡驱动,因为安装的是否屏幕分辨率会变更。但是我没有遇到类似的问题。
还有就是 ubuntu24的显卡驱动 280 270 以及 Nouveau,并没有开启 wayland 后只能单屏显示的问题,所以我未开启独显直连功能。

你需要关闭主板的安全启动, 用 Additional Drivers 的驱动不用关闭也可以使用,如果使用 nvidia 源安装驱动,会让你创建 Secure Boot 密码,所以我直接关闭安全启动
安装我参考的时下面两个连接
https://docs.nvidia.com/datacenter/tesla/driver-installation-guide/ubuntu.html
https://developer.nvidia.com/cuda-12-8-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=24.04&target_type=deb_network

安装显卡驱动

请打开你的 Additional Drivers 应用查看是否安装了驱动,如果已经安装了请将 选项设置为 Nouveau 选项并应用,然后重启电脑。
安装的时候需要注意,你只能选用 Additional Drivers 内出现的驱动,我在虚拟机里测试的是老显卡。老显卡不支持 开源驱动,错误的安装开源驱动会导致,连接不到显卡。
下面是我的笔记本电脑 Additional Drivers 出现的驱动,可能和你的不一样。

安装 linux 内核头文件包,ubuntu 已经安装了这个包,为了稳妥起见我们还是要运行一次,将该包设置为手动安装。

1
sudo apt install linux-headers-$(uname -r)

添加 cuda 源

1
2
3
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update

官网文档让直接安装 nvidia-open 或者 cuda-drivers,请使用 apt search nvidia-open 或 apt search cuda-drivers 确定你的驱动是否在 Additional Drivers 之内。为了防止出现问题可以在 Additional Drivers 安装后测试是否可以正常使用,测试完后记得切换回 Nouveau 再进行下面的步骤。
为了快速验证,我使用了 RTX950 在pve虚拟机里验证,TRX950 在 Additional Drivers 里是没有提供开源驱动的,如果安装开源驱动的话会像下面这样。

所以RTX950 需要安装闭源

1
sudo apt install cuda-drivers

我的笔记本在 Additional Drivers 出现了开源驱动所以可以安装开源驱动。

1
sudo apt install nvidia-open

当然你也可以选用 apt search 搜索到的版本,比如你想让 nvidia-smi 显示cuda version 也是 12.8

1
sudo apt install nvidia-open-580

安装好后重启电脑,重启后运行 nvidia-smi 查看显卡信息,实测 nvidia-smi 显示的 cuda 是支持的 cuda 最高版本,安装比这个版本底的 cuda 也可以运行,但是我个人建议版本号不要相差过多,实测跑 cuda 12.1 的程序,程序有报错。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
niconiconi@Laptop:~$ nvidia-smi 
Tue Oct 21 22:42:05 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 580.95.05 Driver Version: 580.95.05 CUDA Version: 13.0 |
+-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 3060 ... On | 00000000:01:00.0 On | N/A |
| N/A 46C P8 13W / 115W | 93MiB / 12288MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| 0 N/A N/A 2306 G /usr/bin/gnome-shell 66MiB |
+-----------------------------------------------------------------------------------------+

不出以外的话里应该可以看到显卡信息,这就表达显卡驱动安装成功了

安装 cuda

这里我选用的 是 cuda12.8 当然你也可以安装其他版 请使用 apt search cuda-toolkit 查找可用版本

1
sudo apt install  cuda-toolkit-12-8

cuda 安装的位置在 /usr/local/cuda-<version> 并没有出现在变量环境中,还需要添加变量环境。

下面是 /usr/local 的内容 cuda 和 cuda-12 都指向了 /etc/alternatives/ 目录,但是该目录内的 cuda 和 cuda-12 又指回了 /usr/local/cuda-12.8

1
2
3
4
5
6
niconiconi@Aurorra:/usr/local$ ls -l
total 36
drwxr-xr-x 2 root root 4096 Oct 21 21:54 bin
lrwxrwxrwx 1 root root 22 Oct 21 21:54 cuda -> /etc/alternatives/cuda
lrwxrwxrwx 1 root root 25 Oct 21 21:54 cuda-12 -> /etc/alternatives/cuda-12
drwxr-xr-x 15 root root 4096 Oct 21 21:54 cuda-12.8

添加变量环境

1
2
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc

如果你像我一样有强迫症,可以不使用上面的方式添加变量环境 而是手动向 ~/.bashrc 添加如下内容

1
2
3
4
5
6
if [ -d "/usr/local/cuda/bin" ] ; then
PATH=/usr/local/cuda/bin:$PATH
fi
if [ -d "/usr/local/cuda/lib64" ] ; then
LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
fi

刷新变量环境

1
source ~/.bashrc

现在你就可以使用cuda了,比如运行下面的命令

1
2
3
4
5
6
niconiconi@Aurorra:~$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2025 NVIDIA Corporation
Built on Fri_Feb_21_20:23:50_PST_2025
Cuda compilation tools, release 12.8, V12.8.93
Build cuda_12.8.r12.8/compiler.35583870_0

如果你想进一步验证的话 你可以运行 cuda 教程的代码 https://developer.nvidia.com/zh-cn/blog/even-easier-introduction-cuda-2/ 该代码在太老的cuda上,教程内的 nsys_easy 会报错。

卸载 cuda 以及显卡驱动

如果你想装其他版本的驱动先卸载驱动和 cuda

1
sudo apt remove --autoremove --purge -V  nvidia-open\* cuda-toolkit\*

如果是我的话我会一次性安装 cuda 和显卡驱动cuda,类似于这样

1
sudo apt install nvidia-open-580 cuda-toolkit-13-0

docker 使用 gpu

参考 https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
注意在运行该步骤之前,请确认你已经按照docker官方文档正确安装了docker。
我并未按照nvidia官方的安装过程中我跳过了添加仓库的步骤。因为我发现上面的驱动仓库里也有 nvidia-container-toolkit
下面的操作安装显卡驱动就行了,安不安装 cuda无所谓。

安装 nvidia-container-toolkit

1
sudo apt install nvidia-container-toolkit

向 docker 添加显卡支持,此操作编辑 /etc/docker/daemon.json 文件添加 NVIDIA 容器运行时。

1
sudo nvidia-ctk runtime configure --runtime=docker

重启 docker

1
sudo systemctl restart docker

测试显卡添加是否正常,如无以外会输出你的显卡信息。

1
docker run --rm --gpus all ubuntu nvidia-smi