1. 先理清状况:这块卡在Ubuntu 24.04上到底卡在哪
先说结论:RTX 5090D这种Blackwell架构的新卡,和Ubuntu 24.04这套组合本身没有“装不上”这种硬伤,但如果你照着网上那些老教程去操作,大概率会遇到黑屏、循环登录、驱动加载失败等一系列问题。原因不复杂:Ubuntu 24.04默认带的内核是6.8,而RTX 5090D需要的驱动版本比系统仓库里带的驱动要新得多。Blackwell架构的完整支持是NVIDIA在驱动525系列之后逐步推进的,到了565系列才算把功能补得比较齐,等到570系列出来之后覆盖已经比较完整了。换句话说,如果你直接apt install nvidia-driver-535,就算驱动能装上,系统也不一定能正常认卡。
另外一个容易被忽视的点是Secure Boot。Ubuntu 24.04默认开启Secure Boot的情况下,安装第三方内核模块(NVIDIA驱动恰好就是这么个东西)会遇到签名验证的问题。如果你的机器在安装Ubuntu时没有单独给第三方驱动设置MOK(Machine Owner Key),那驱动装完重启大概率直接进不了桌面。这个坑我在其他型号的N卡上也踩过,但在新卡上更容易让人误判成显卡兼容问题,因为报错信息非常让人困惑。
所以整篇文章的核心思路我先说清楚:不要一上来就想着用最“原生”的系统仓库驱动硬怼,也不要盲从网上那种download.runfile手动安装的老套路。正确做法是先把系统状态摸底,然后用Ubuntu 24.04下最稳妥的驱动安装路径去操作,最后验证显存、CUDA、性能相关的功能是否正常。
这篇文章适合谁看?刚入手RTX 5090D、想在Ubuntu 24.04上跑深度学习或者本地大模型的朋友,以及那些在Linux下换新N卡后不想被驱动折腾到心态爆炸的开发者。无论你是NVIDIA驱动安装的老手还是第一次在Ubuntu上装显卡驱动,这篇文章都能让你少走几趟弯路。
2. 动手之前的必要功课:内核、Secure Boot、残留驱动一个都不能漏
2.1 确认系统版本和内核是不是“能跑新卡”的基础
很多人在这一步就直接跳过了,但恰恰是这一步决定了后面的成败。Ubuntu 24.04的LTS版本在2024年4月发布,它默认的6.8内核已经比较新,对Blackwell架构的初步支持是有的。但这里有个细节:Ubuntu会持续发布HWE(Hardware Enablement)内核更新,比如6.8之后还有更新的内核版本会通过系统更新推送到24.04上。如果你装完系统之后一直没更新过内核,驱动安装的兼容性风险会大不少。
先执行这几条命令看状态:
lsb_release -a uname -r我实际测试时的系统是Ubuntu 24.04.2 LTS,内核版本是6.8.0-58-generic。这个版本对RTX 5090D的PCIe设备ID识别已经没问题了,lspci能看到显卡信息。如果看不到显卡,先检查是不是插槽没插好,或者BIOS里PCIe链路设置不正常,这个问题后面单独讲。
2.2 Secure Boot的处理方式,决定你重启后是进桌面还是进BIOS
Secure Boot这个东西的本质是:系统只允许加载有合法签名的内核模块。NVIDIA驱动是第三方闭源模块,没有微软或Ubuntu官方的预签名,所以你必须通过MOK机制给它签一个本地密钥。好消息是Ubuntu已经内置了这套流程,坏消息是流程里面有一步需要你在重启后手动操作,很多人就是卡在这一步。
两种处理方式:
方式一:在BIOS里关掉Secure Boot。这个方法省事,适合台式机自用、不涉及公司安全策略的场景。缺点是每次开机BIOS会提示安全模式变更,而且如果以后要用一些依赖Secure Boot的功能会麻烦。
方式二:保留Secure Boot,配置MOK密钥。这是更规范的做法。驱动安装过程中,dkms会帮你自动生成一个密钥,你会被提示设置一次密码,重启后进入蓝色的MOK管理界面,选择Enroll MOK,输入刚才的密码,然后继续。整个过程不算复杂,但我见过好多人在重启后看到蓝屏就慌了,以为系统出问题了。
我的建议是:如果这台机器是专门的AI训练机、放在机房或者家里固定位置使用,直接关掉Secure Boot是最省心的。如果机器还要兼顾日常办公或者公司有策略要求,那就老老实实走MOK流程。
2.3 卸载残留驱动,别让旧驱动出来打架
如果你之前在这台机器上装过NVIDIA驱动,或者从别的机器搬来了硬盘,强烈建议先把旧的驱动清理干净。不同来源的驱动混在一起会导致nvidia-smi报错、modprobe加载失败、甚至是黑屏。
常见的历史残留包括:
- 通过
apt安装的nvidia-driver-*系列包 - 通过
.run文件安装到/usr/lib/x86_64-linux-gnu/libcuda.so等位置的库文件 - 手动编译安装过的
dkms模块残留
清理命令:
sudo apt purge '*nvidia*' sudo apt autoremove sudo rm -f /usr/lib/x86_64-linux-gnu/libcuda.* sudo rm -rf /usr/src/nvidia-*清理完重启一次,确保系统回到完全没有NVIDIA驱动的干净状态。这里多说一句:不要用apt purge nvidia-*这种删法,通配符在某些版本下会把nvidia-common也删掉,虽然不至于弄坏系统,但会牵扯一堆依赖变动。用单引号包起来的方式更精准。
3. 驱动方案选型:为什么我不推荐“官网下载.Run文件”和“系统自带驱动”
3.1 系统仓库自带的驱动为什么不适合新卡
Ubuntu 24.04的默认软件源里带的NVIDIA驱动版本是535和550系列。这些驱动对RTX 40系是友好的,但对RTX 5090D这种新卡,那就等于让一个成年壮汉穿小学时期的校服——硬件本身能识别,但架构支持层面的优化、新的CUDA版本支持、以及针对Blackwell核心的功耗管理策略都没有。最直接的后果可能是:能显示画面,但风扇转速控制、显卡利用率、功耗调度全都别扭,甚至部分功能直接失效。
3.2 官网手动下载.run文件的问题在哪
我不否认NVIDIA官网的.run安装包是最“正宗”的安装方式,新架构显卡必须下载对应新版本的驱动。官网下载的驱动版本肯定比系统仓库新,能够完整支持RTX 5090D。但.run安装方式在Ubuntu 24.04上有几个麻烦:
- 需要自己处理nouveau(开源驱动)的禁用问题,稍有疏忽就黑屏
- 需要手动配置DKMS,否则以后内核更新后驱动会失效
- 卸载的时候也要手动执行
nvidia-uninstall,处理不干净会影响后续重装
不是说.run文件不能用,而是它把额外的手动操作都抛给了用户。对于想在Ubuntu 24.04上安稳用5090D的人来说,这条路的上手成本太高了。
3.3 我个人推荐的方案:PPA + apt,省心又不容易出错
Ubuntu下有一种更优雅的驱动安装路径:用graphics-driversPPA 仓库,然后通过apt安装最新版本的驱动。这个PPA是Ubuntu社区维护的,专门用来解决官方仓库驱动版本滞后问题,长期维护、稳定可靠。通过它你能装到560、570、575等新版本驱动,完整体验Blackwell架构的性能。
选这个方案的理由:
apt自动处理依赖关系,不用担心缺库缺头文件- DKMS自动集成,内核更新后驱动自动重新编译,不会出现重启后驱动掉失的问题
- 卸载干净,
apt purge一条命令搞定,不留尾巴
在动手之前,还要注意两点:确保系统更新到最新状态,以及确认基础编译环境不缺东西。这两步做完,后面会省很多事。
4. 实操记录:从PPA添加到驱动验证,一步步带你装完
4.1 先把系统基础更新到位
打开终端,执行:
sudo apt update sudo apt upgrade -y sudo apt install build-essential dkms linux-headers-$(uname -r)这三条命令做的事情分别是:刷新软件源索引、升级所有可升级软件包、安装驱动编译所需的基础环境和当前内核对应的头文件。第三行的linux-headers-$(uname -r)会自动匹配你当前运行的内核版本,确保DKMS在编译驱动时能找到对应的内核源码结构。
注意:
apt upgrade升级完如果提示需要重启内核,先重启再继续,不要跳过。在旧内核上编译的驱动,新内核不一定能直接复用。
4.2 添加graphics-drivers PPA并安装驱动
执行以下命令:
sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update添加PPA的过程中,系统会提示你确认公钥信息,直接回车确认即可。然后查看可用驱动版本:
ubuntu-drivers devices这个命令会列出当前系统检测到的显卡和推荐的驱动版本。对于RTX 5090D,正常情况会显示类似driver = nvidia-driver-570或nvidia-driver-575的推荐项。如果这个命令没输出,说明系统还没识别到显卡,检查硬件连接和BIOS设置。
直接安装推荐版本:
sudo apt install nvidia-driver-570或者如果你想装更新一点的版本,比如575系列,也可以:
sudo apt install nvidia-driver-575我的实际建议是装推荐版本,不要一味追求最新。推荐版本是经过Ubuntu和NVIDIA共同验证的稳定匹配,新版驱动虽然功能更新,但在某些环境下可能存在尚未暴露的兼容性问题。RTX 5090D刚出来的时候,NVIDIA在Linux下的驱动迭代非常频繁,稳定版本更值得信赖。
4.3 重启并验证驱动是否被正确加载
安装完成后,重启系统:
sudo reboot重启后打开终端,输入:
nvidia-smi如果驱动安装正确,你会看到类似下方这样的输出:
+---------------------------------------------------------------------------------------+ | NVIDIA-SMI 570.xx.xx Driver Version: 570.xx.xx CUDA Version: 12.8 | |-------------------------------+----------------------+----------------------+----------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================+==========| | 0 NVIDIA GeForce RTX 5090D | 00000000:01:00.0 On | N/A | | 35% 42C P0 45W / 575W | 1686MiB / 32764MiB | 0% Default | +---------------------------------------------------------------------------------------+注意两个关键信息:驱动版本号要在570以上,显存容量显示正常(5090D的32GB显存应该完整显示)。如果这两项都正常,驱动安装就基本成功了。
还可以用lsmod | grep nvidia查看内核模块是否加载成功。如果看到nvidia_drm、nvidia_modeset、nvidia_uvm、nvidia四个模块,说明加载状态正常。其中nvidia_uvm是CUDA和统一虚拟内存功能的关键模块,不加载的话会影响GPU计算任务。
4.4 处理Secure Boot的MOK注册步骤
如果你保留了Secure Boot,在第一次重启后,系统会进入一个蓝色界面的MOK管理工具。这个环节的步骤是:
- 选择“Enroll MOK”
- 选择“Continue”
- 选择“Yes”确认
- 输入你在驱动安装过程中设置的密码
- 选择“Reboot”
完成这五步后,驱动才会在Secure Boot开启的情况下正常工作。很多人装完驱动重启后卡在这个界面,以为死机了直接强制重启,导致每次开机驱动都加载不了,然后反复重装驱动。记住:看到蓝屏不是坏事,是系统在等你完成签名确认。
4.5 性能与功能验证:显存、CUDA、计算能力
驱动装上只是第一步,关键还要验证实际功能。先验证显存和计算能力:
nvidia-smi -q -d MEMORY nvidia-smi -q -d COMPUTE然后验证CUDA运行时环境。如果你之前装过CUDA Toolkit,直接编译运行一个小例子:
nvcc --version cd ~/NVIDIA_CUDA-12.x_Samples/0_Simple/vectorAdd make ./vectorAdd如果没有预装CUDA Toolkit,可以先用Python的PyTorch来验证:
python3 -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))"如果输出True和NVIDIA GeForce RTX 5090D,说明PyTorch能正常调起显卡,驱动和CUDA的底层联动没问题。
这里有一个经验之谈:不要一上来就想着装最新的CUDA Toolkit。先让nvidia-smi显示驱动正常,然后再安装和驱动匹配的CUDA版本。如果驱动是570版本,CUDA版本选择12.6以上即可,因为黑色维尔架构需要CUDA 12.8以上的完整支持。你在安装CUDA之前要确认版本对应关系,避免装完CUDA后torch.cuda.is_available()返回False。
5. 常见问题排查与避坑实录
5.1 问题:重启后黑屏或者卡在登录界面循环
这是NVIDIA驱动安装最常见的“事故”。出现这个问题的原因通常是nouveau(NVIDIA开源驱动)没有禁用干净。nouveau和专有驱动同时存在时会抢设备文件,导致X Window起不来。
排查和解决:
# 重启后按Ctrl+Alt+F2进入tty终端 sudo apt purge nvidia-* sudo apt autoremove sudo bash -c "echo 'blacklist nouveau' >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf" sudo bash -c "echo 'options nouveau modeset=0' >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf" sudo update-initramfs -u sudo reboot重新进入系统后再按第4章的步骤重新安装驱动。注意禁用nouveau之后,除非你装回开源驱动,否则不要再随便删除这个配置文件。
5.2 问题:nvidia-smi显示“No devices were found”
这个情况表明驱动是装上了,但显卡没有被驱动正确识别。原因可能是PCIe链路的问题,也可能是显卡供电不稳。
首先确认硬件层面能看到显卡:
lspci | grep -i nvidia如果输出里有一行包含NVIDIA Corporation,说明硬件识别没问题。然后检查电源管理:
sudo nvidia-smi -pm 1这是开启持久化模式,防止显卡在空闲时进入低功耗状态而导致驱动失联。如果lspci根本看不到显卡,先关机检查显卡是否插紧、供电线是否插牢,然后在BIOS里把PCIe链路速度设为Gen4或Auto,不要强制Gen5。
5.3 问题:重启后驱动消失,nvidia-smi显示Command Not Found
这种情况十有八九是DKMS没有自动帮你在新内核上重编译驱动。排查方法是查看DKMS状态:
dkms status如果显示类似nvidia/570.xx.xx, 6.8.0-58-generic, x86_64: installed这样的输出,说明驱动模块已编译注册。如果显示built但没installed,或者前面有个!符号,说明编译没完成,多半是内核头文件缺失。
sudo apt install linux-headers-$(uname -r) sudo dkms install -m nvidia -v 570.xx.xx这里的570.xx.xx要替换成你实际的驱动版本。跑完再重启,驱动一般就恢复正常了。
5.4 问题:双屏幕输出异常或者HDMI/DP没有信号
RTX 5090D的DisplayPort接口在Linux下正常,但如果你用老的HDMI转DP线材,可能会遇到输出不稳定的问题。建议优先用原生DP线连接显示器,并确保线缆支持DP1.4a或更高版本。
如果显示器不亮,先进入tty终端,查看Xorg日志:
cat /var/log/Xorg.0.log | grep -i nvidia cat /var/log/Xorg.0.log | grep -i error常见的错误模式是NVIDIA(0): Failed to assign any connected display devices to X screen 0,这种问题要么是线缆问题,要么是驱动版本问题。先换线材测试,再考虑换驱动版本。
5.5 问题:风扇狂转、温度异常、功耗异常
新卡在Linux下如果出现风扇转速异常或者温度虚高,很可能是驱动中的GPU电源管理策略没有正确加载。检查当前功耗状态:
nvidia-smi -q -d POWER观察Power Draw和Enforced Power Limit是否正常。如果功耗一直在0W附近徘徊或者功耗上限显示异常,尝试重启一次,或者运行一个GPU负载程序让它“热起来”看看状态是否恢复正常。Blackwell架构在Linux下的电源管理已经成熟很多,但如果用的是太老的驱动(小于525),就会出现这种问题。
5.6 问题:apt安装驱动时提示“Unable to locate package nvidia-driver-570”
这个说明graphics-driversPPA添加失败或者软件源索引不完整。先确认PPA是否添加成功:
grep -r graphics-drivers /etc/apt/sources.list.d/如果输出为空,重新执行sudo add-apt-repository ppa:graphics-drivers/ppa&&sudo apt update。如果还是不行,检查网络连接和Ubuntu软件源设置,必要时更换国内镜像源后再执行。
5.7 问题:CUDA编译报错“nvcc fatal: Unsupported gpu architecture”
这个错误是CUDA版本和显卡架构不匹配导致的。RTX 5090D是Blackwell架构,计算能力为sm_120,需要CUDA 12.8以上版本才支持。如果nvcc --version显示的版本低于12.8,需要升级CUDA Toolkit。
在~/.bashrc里检查CUDA路径:
echo $PATH echo $LD_LIBRARY_PATH确保输出里包含/usr/local/cuda/bin和/usr/local/cuda/lib64。没有的话手动添加:
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc升级CUDA时注意先卸载旧版本,不要多个版本共存,容易把环境变量搞混。
5.8 问题:PyTorch检测不到CUDA,但nvidia-smi正常
这个情况基本可以确定是PyTorch版本太旧,不支持新架构。检查当前版本:
python3 -c "import torch; print(torch.__version__)"如果版本低于2.5,升级到最新版本。RTX 5090D要跑深度学习,理论上PyTorch 2.6版本以上配合CUDA 12.8才能发挥全部性能。
这里推荐用虚拟环境安装,不要直接动系统的Python环境:
python3 -m venv ~/torch-env source ~/torch-env/bin/activate pip install --upgrade pip pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128安装完再验证一下torch.cuda.is_available(),正常会输出True。如果你是做深度学习的,强烈建议用虚拟环境隔离项目,避免系统Python环境被各种包依赖搞崩。
6. 实际验证:一次完整的驱动安装记录
下面是我在一台新配的机器上实操的完整时间线,装的是Ubuntu 24.04.2 LTS + RTX 5090D。整个流程走下来,大约35分钟,中间包括一次重启和MOK注册。
硬件环境:
- 主板:X670E系列,BIOS版本更新到最新
- CPU:AMD Ryzen 9系列
- 显卡:RTX 5090D 32GB
- 内存:64GB DDR5
- 系统:Ubuntu 24.04.2 LTS,内核6.8.0-58-generic
第一步,装完系统后先更新软件源和内核,然后重启了一次确保所有更新生效。这个步骤不能省,我见过有人没重启直接装驱动,结果新内核和旧头文件不匹配,DKMS编译失败。
第二步,添加PPA后执行ubuntu-drivers devices,输出显示推荐nvidia-driver-570,但我当时想试一下更新版本,所以装了nvidia-driver-575。结果用下来没什么问题,不过如果你不想冒险,直接用推荐的570版本就可以。
第三步,重启后进入MOK蓝色界面,填入密码完成注册。这里有个小细节:MOK密码只会在安装过程中要求设置一次,而且是在apt install nvidia-driver-xxx的过程中以蓝白窗口的形式弹出。不要跳过去,否则后面没法走MOK注册。
第四步,重启进系统后nvidia-smi输出正常,显存32GB完整识别。再运行一个PyTorch矩阵乘法测试,torch.cuda.is_available()返回True,跑模型时GPU利用率能稳定在95%以上,功耗调度也正常。
整个过程最有价值的经验就是:版本匹配大于一切。驱动版本、内核版本、CUDA版本、PyTorch版本,四个要素环环相扣,任何一环掉队都会导致莫名其妙的故障。建议你们把版本对应关系记录下来,以后系统更新内核后也好对照排查。
7. 后续还能怎么玩:CUDA环境、性能调优、日常维护
装好驱动只是开始,RTX 5090D这种级别的卡在Ubuntu 24.04上的目标基本都是为了跑大模型、图像渲染或者科学计算。驱动装完稳定跑起来之后,有几个方向值得继续投资时间。
第一是配置CUDA和cuDNN。只用PyTorch的话,PyTorch自带的CUDA runtime已经够用,但如果你要自己写CUDA kernel或者用一些底层库,就需要完整安装CUDA Toolkit。安装时注意在NVIDIA官网选择Ubuntu 24.04对应的deb安装包,它会自动处理好APT源和依赖关系。
第二是性能调优。RTX 5090D在高负载下的性能释放和散热策略可以在驱动层面做微调。用nvidia-smi -pl可以设置功耗上限,比如手动设为500W来降低发热;用nvidia-smi -lgc可以锁定GPU频率,对炼丹场景比较友好,可以避免频率波动导致训练时间不确定。
第三是日常维护。Linux下NVIDIA驱动最需要注意的就是系统内核升级。Ubuntu每个月都会有内核安全更新,升级后DKMS会自动重编译驱动模块。如果发现升级后nvidia-smi废了,先看dkms status,再补装对应的linux-headers-$(uname -r),然后重新编译一次模块。
第四是容器化。如果你打算用Docker跑GPU训练,需要安装NVIDIA Container Toolkit:
sudo apt install nvidia-container-toolkit sudo systemctl restart docker装完后在容器里用--gpus all参数就能直接映射GPU设备到容器内,宿主机的驱动版本决定了容器内驱动行为的基准,但CUDA版本可以从NVIDIA官方的宿主机开发镜像直接拉取,非常方便。对多人共享一台训练机这种场景,容器化是绕不开的选择。
我在实际使用中还有一个很深的体会:装完驱动后,建议立刻创建一个系统还原点(比如用Timeshift快照),或者至少把/etc/modprobe.d/和/etc/apt/sources.list.d/两个目录备份一下。NVIDIA驱动相关的配置改动主要集中在这些地方,万一以后折腾出问题,几分钟就能恢复原状,不用重装系统。
驱动安装这件事情,本质上就是把“操作系统、内核、GPU架构”三者之间的摩擦力降到最低。以前装N卡驱动确实是个让人头皮发麻的活儿,但在Ubuntu 24.04这个版本上,配合RTX 5090D这代新卡,只要选对驱动源、处理好Secure Boot、给DKMS留好编译环境,整个流程已经完全可以做到一次成功。希望这篇文章能帮你少踩几个坑,装完驱动,直接去跑模型去渲染去计算。