大家好,我是冯哥的缓存。从今天开始我们聊一下在Linux中怎么安装显卡驱动。NVIDIA在Linux上的兼容性历来是个老大难问题,让新手望而生畏。
其实搞清楚三个问题,NVIDIA驱动安装并不难:
1、开源驱动(Nouveau)vs 闭源驱动(官方),到底选哪个?
2、闭源驱动版本号那么多,应该装哪个?
3、Ubuntu自动安装的驱动,靠谱吗?
这一篇先解决这三个问题,下一篇再处理双显卡和常见报错。
先搞清楚:你的显卡支不支持?
NVIDIA显卡对Linux的支持分几个层次,不同时代的显卡能装的驱动版本不同。
显卡系列 | 发售年代 | 支持的最新闭源驱动 | 备注 |
RTX 50系 | 2025年+ | 570.x+ | 建议装latest |
RTX 40系 | 2022年+ | 550.x+ | 建议装latest |
RTX 30系 | 2020年+ | 550.x+ | 建议装latest |
RTX 20系 | 2018年+ | 550.x+ | 建议装latest |
GTX 16系 | 2019年+ | 550.x+ | 建议装latest |
GTX 10系 | 2016年+ | 550.x+ | 建议装latest |
GTX 9系(Maxwell) | 2014年+ | 550.x+ | 建议装latest |
GTX 700/600系(Kepler) | 2012年+ | 470.x(legacy) | 不再支持最新驱动 |
GTX 500/400系(Fermi) | 2010年+ | 390.x(legacy) | 很老了,基本淘汰 |
💡提示: 不确定显卡型号?在终端运行 lspci | grep -i nvidia查看显卡型号,再对照上表确认。
开源驱动(Nouveau)vs 闭源驱动(nvidia)
装完Ubuntu,如果没有额外操作,系统默认用的是Nouveau——NVIDIA的开源驱动。它能用,但有明显局限性。
对比项 | Nouveau(开源) | nvidia(闭源官方) |
安装方式 | 系统自带,无需安装 | 需要手动安装 |
3D游戏性能 | 大部分3D游戏无法流畅运行 | 完整性能 |
Vulkan支持 | 尚在早期开发阶段 | 完整支持 |
CUDA支持 | ❌ 不支持 | ✅ 完整支持 |
视频编解码硬件加速 | ❌ 不支持 | ✅ 支持(NVENC/NVDEC) |
多显示器支持 | 基本可用 | 完整可用 |
功耗管理 | 较差(待机功耗高) | 完整支持 |
稳定性 | 一般(部分显卡有花屏问题) | 好 |
黑屏风险 | 低 | 存在(驱动版本不匹配时) |
适合场景 | 不需要3D/CUDA的旧显卡服务器 | 日常使用、游戏、AI开发 |
结论:日常使用的桌面电脑,装闭源驱动。如果你只是用Linux跑服务、做开发且不需要CUDA,Nouveau凑合也够用。
闭源驱动版本那么多,装哪个?
打开Ubuntu的"附加驱动"界面,你会看到一堆版本号:535、550、560……新手完全不知道该选哪个。
NVIDIA驱动版本分支说明
版本分支 | 类型 | 说明 | 推荐程度 |
latest(最新版) | production | 支持最新显卡,最新功能 | ⭐⭐⭐⭐⭐ GTX 10系及以上首选 |
latest-open(开源内核模块) | 开源内核 | 驱动用开源内核模块,用户空间仍是闭源 | ⭐⭐⭐⭐ RTX 20系及以上可选 |
535/550/560 | 具体版本 | 某个稳定版本 | ⭐⭐⭐追求稳定或系统老旧时 |
legacy 470.x | 旧版legacy | 仅Kepler架构(GTX 600/700系)用 | ★仅限老卡 |
legacy 390.x | 旧版legacy | 仅Fermi架构(GTX 400/500系)用 | ★仅限极老卡 |
💡简单选法: RTX 20系及以上选 latest-open,GTX 10系/16系/20系早期选 latest,GTX 700系以下选 legacy 470.x。
什么是"open"内核模块?
NVIDIA在2022年开源了驱动的内核模块部分(即与Linux内核交互的那一层),称为"open kernel modules"。用户空间部分(libGL、CUDA等)仍然是闭源的。
项目 | 传统闭源驱动 | open内核模块驱动 |
内核模块 | 闭源 | ✅ 开源(MIT+GPL) |
用户空间库 | 闭源 | 闭源(不变) |
稳定性 | 成熟 | RTX 20系以上良好 |
CUDA/Vulkan | 支持 | 支持 |
适用显卡 | 所有NVIDIA | 仅支持Turing架构(GTX 16系、 RTX 20系)及以上 |
结论:有RTX 20系及以上的显卡,优先选open内核模块版本;GTX 10系等旧卡继续用传统闭源驱动。
方法一:Ubuntu图形界面安装(最推荐,新手首选)
这是最简单最安全的方式,Ubuntu会自动检测显卡并推荐合适的驱动。
操作步骤
1.打开"软件和更新"
# 方法A:图形界面
#在应用列表里找"软件和更新"(Software & Updates)
#或者直接搜索"additional drivers"
# 方法B:通过命令快速打开
software-properties-gtk
2.切换到"附加驱动"标签
会看到类似这样的列表:
○ 使用 NVIDIA driver metapackage from nvidia-driver-550 (proprietary, tested)
○ 使用 NVIDIA driver metapackage from nvidia-driver-535 (proprietary, tested)
○ 使用 NVIDIA driver metapackage from nvidia-driver-550-open (proprietary, tested)
● 使用 X.Org X server - Nouveau display driver from xserver-xorg-video-nouveau (open-source)
3.选择合适版本
RTX 20系及以上:选带 open字样的最新版
GTX 10系/16系:选不带 open的最新版(如 nvidia-driver-550)
GTX 600/700系(Kepler):选 nvidia-driver-470
4.点击"应用更改",等待安装完成
5.重启系统
sudo reboot
6.验证驱动安装成功
nvidia-smi
正常输出如下(格式可能略有不同):
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.15Driver Version: 550.54.15CUDA Version: 12.4|
|-------------------------------+----------------------+----------------------+
| GPUNamePersistence-M| Bus-IdDisp.A | Volatile Uncorr. ECC |
| FanTempPerfPwr:Usage/Cap|Memory-Usage | GPU-UtilCompute M. |
|===============================+======================+======================|
|0NVIDIA GeForce ...Off| 00000000:01:00.0On |N/A |
| ...|||
+-----------------------------------------------------------------------------+
能看到GPU型号和驱动版本就说明成功了。
方法二:命令行安装(推荐,可控性强)
步骤1:查看系统推荐的驱动版本
ubuntu-drivers devices
输出示例:
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00002489sv...
vendor: NVIDIA Corporation
model: GA104 [GeForce RTX 3070]
driver: nvidia-driver-550-open - distro non-free recommended
driver: nvidia-driver-550 - distro non-free
driver: nvidia-driver-535 - distro non-free
driver: xserver-xorg-video-nouveau - distro free builtin
recommended标注的就是系统推荐版本,一般直接用它。
步骤2:安装推荐版本(一键安装)
# 方法A:安装所有推荐驱动(自动判断)
sudo ubuntu-drivers autoinstall
# 方法B:指定版本安装(推荐,更可控)
sudo apt install nvidia-driver-550
#或open内核模块版本
sudo apt install nvidia-driver-550-open
步骤3:重启系统
sudo reboot
步骤4:验证
nvidia-smi
#或者更详细的信息
nvidia-smi
方法三:从NVIDIA官网下载安装包(不推荐,但有时迫不得已)
官网提供.run格式的安装包,能装上但后患很多:
不受apt管理,内核更新后驱动可能失效
容易与系统的DKMS机制冲突
卸载麻烦
⚠️警告:除非apt方式实在装不上,否则不要用 .run文件安装。用了之后维护成本很高。
如果因为某些原因必须用.run文件,流程是:
# 1. 关闭图形界面(切换到纯命令行模式)
sudo systemctl set-default multi-user.target
sudo reboot
# 2. 禁用Nouveau(必须)
echo"blacklist nouveau" | sudotee /etc/modprobe.d/blacklist-nouveau.conf
echo"options nouveau modeset=0" | sudotee -a /etc/modprobe.d/blacklist-nouveau.conf
sudo update-initramfs -u
sudo reboot
# 3. 运行安装包(替换为你的文件名)
sudo sh NVIDIA-Linux-x86_64-550.54.15.run
# 4. 重启后恢复图形界面
sudo systemctl set-default graphical.target
sudo reboot
三种安装方式对比
方式 | 难度 | 稳定性 | 可维护性 | 推荐程度 |
图形界面(附加驱动) | ⭐简单 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ apt管理 | ⭐⭐⭐⭐⭐首选 |
命令apt install | ⭐⭐中等 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ apt管理 | ⭐⭐⭐⭐⭐等同首选 |
.run 官网安装包 | ⭐⭐⭐⭐复杂 | ⭐⭐⭐ | ⭐⭐不受apt管理 | ⭐迫不得已 |
安装前的重要准备
禁用安全启动(Secure Boot)
部分主板开启了安全启动(Secure Boot),会阻止未签名的内核模块加载,导致驱动装了也无法使用。
检查是否开启了Secure Boot:
mokutil --sb-state
输出SecureBoot enabled →需要处理
输出SecureBoot disabled →无需处理,跳过
处理方式(推荐A方式):
方式A:BIOS里直接关闭(最简单)
重启进入BIOS(开机按Del/F2/F12,具体看主板)
找到 "Security" → "Secure Boot" → 改为 Disabled
保存退出
方式B:为驱动签名(保留Secure Boot)
Ubuntu安装驱动时会自动提示生成MOK密钥,按提示设置密码,重启后在蓝色界面(MOK Manager)里选"Enroll MOK"输入密码确认即可。
确认当前用的是Nouveau还是已有NVIDIA驱动
lspci -k | grep -A3 "VGA\|3D"
输出里Kernel driver in use那行:
显示nouveau → 用的开源驱动
显示nvidia → 已装闭源驱动
版本选择快速决策表
显卡 | 推荐驱动 | 安装命令 |
RTX 40/50系 | nvidia-driver-xxx-open | sudo apt install nvidia-driver-560-open |
RTX 30系 | nvidia-driver-xxx-open | sudo apt install nvidia-driver-550-open |
RTX 20系 | nvidia-driver-xxx-open | sudo apt install nvidia-driver-550-open |
GTX 16系 | nvidia-driver-xxx | sudo apt install nvidia-driver-550 |
GTX 10系 | nvidia-driver-xxx | sudo apt install nvidia-driver-550 |
GTX 700/600系 | nvidia-driver-470(legacy) | sudo apt install nvidia-driver-470 |
GTX 500/400系 | nvidia-driver-390(legacy) | sudo apt install nvidia-driver-390 |
⚠️注意:上表中的版本号(如550、560)随时间变化。安装前先运行 ubuntu-drivers devices确认当前最新推荐版本,以实际输出为准。
常见报错速查
报错现象 | 原因 | 解决办法 |
安装后黑屏,无法进入桌面 | 驱动与桌面环境冲突 | 进入恢复模式(recovery mode)卸载驱动重装 |
nvidia-smi报"No devices found" | 驱动没加载成功 | lsmod | grep nvidia检查;可能需要禁用Secure Boot |
装了驱动但lspci显示仍是nouveau | 内核模块没刷新 | sudo update-initramfs -u && sudo reboot |
提示"The following packages have unmet dependencies" | 版本冲突或旧版本残留 | sudo apt remove --purge nvidia-* && sudo apt autoremove后重装 |
开机卡在"Loading initial ramdisk" | 内核与驱动不兼容 | 进恢复模式,换装其他版本驱动 |
ubuntu-drivers autoinstall无输出或报错 | ubuntu-drivers-common未安装 | sudo apt install ubuntu-drivers-common |
小结
要点 | 说明 |
日常使用装闭源驱动 | Nouveau性能太差,只适合临时体验 |
优先用apt安装 | 图形界面或命令行都行,不要用.run |
RTX 20系以上选open版 | open内核模块更透明,兼容性更好 |
老卡查legacy版本 | GTX 700系用470.x,GTX 500系用390.x |
装前检查Secure Boot | 开启了Secure Boot会导致驱动加载失败 |
装后必须重启 | 驱动加载需要重启,不重启不生效 |
⚠️注意:对于 Ubuntu 22.04 用户,软件源中的默认驱动可能很旧( 535 或 550 早期版本)。如果用户安装了最新显卡(如RTX 40系以上),直接 apt install 可能会提示找不到驱动或无法驱动。这种情况需要添加 graphics-drivers PPA 来获取新驱动。
下篇预告:《Linux NVIDIA驱动安装(下)》,我们聊一下两个进阶问题:
双显卡笔记本(Optimus):如何切换独显/核显,PRIME Offload怎么配
常见报错修复:黑屏救砖、驱动版本冲突、内核更新后驱动失效的完整修复流程