1. 项目概述:为什么在Ubuntu下查看显卡信息是必备技能
刚接触Ubuntu或者从Windows转过来的朋友,经常会遇到一个看似简单却至关重要的问题:我的电脑里装的是什么显卡?驱动装好了吗?性能跑满了吗?尤其是在深度学习、视频剪辑、3D渲染或者只是想流畅玩个游戏的时候,显卡的状态直接决定了你的体验上限和效率下限。在Windows下,我们习惯了右键“此电脑”->“管理”->“设备管理器”那一套,或者用鲁大师、GPU-Z这类工具一键搞定。但到了Ubuntu这个以命令行见长的世界里,一切变得“原始”而又强大。
“ubuntu下如何查看显卡及显卡驱动”这个标题,背后解决的绝不仅仅是一个信息查询问题。它关乎系统兼容性、性能调优、故障排查和开发环境搭建。比如,你新装了一块NVIDIA RTX 4090,系统识别了吗?驱动是开源nouveau还是闭源nvidia-driver?CUDA能不能用?又或者,你的集成显卡和独立显卡切换正常吗?屏幕撕裂、外接显示器不亮、游戏帧数过低,这些问题的第一步诊断,都始于准确地查看显卡和驱动信息。
我自己在运维工作站和深度学习服务器时,无数次通过命令行快速定位了显卡型号、驱动版本、GPU利用率,从而解决了驱动冲突、CUDA版本不匹配、多卡负载不均等一系列棘手问题。掌握这套方法,就像拥有了透视电脑硬件状态的“X光眼”,无论是新手排查基础问题,还是老手进行深度优化,都是不可或缺的第一课。接下来,我就把自己常用的、最有效的几种方法,连同背后的原理和踩过的坑,系统地分享给你。
2. 核心思路与工具选型:命令行才是终极利器
在Ubuntu世界里,图形化工具(如“设置”->“关于”或“附加驱动”)虽然能提供最基础的信息,但往往不够全面,尤其在诊断复杂问题时显得乏力。我们的核心思路是:通过不同层级、不同侧重点的命令行工具,构建一个从硬件识别、驱动状态到实时监控的完整信息视图。
为什么首选命令行?第一,它不受桌面环境(GNOME, KDE等)的限制,在任何Ubuntu变体甚至服务器版上都能用。第二,它提供的信息最原始、最详细,很多图形工具其实就是对这些命令结果的封装和展示。第三,它可以轻松地嵌入脚本,实现自动化监控和报告。
主要的“武器库”可以分为以下几类:
- 基础硬件信息探测工具:如
lspci,用于从系统总线层面识别所有硬件设备,是查看显卡型号的基石。 - 内核与驱动信息工具:如
lsmod,modinfo,用于查看当前加载的显卡内核模块(驱动)及其详细信息。 - 厂商专用管理工具:如NVIDIA的
nvidia-smi,AMD的rocm-smi,这是获取对应品牌显卡详细信息和控制能力的“官方神器”。 - 系统信息汇总工具:如
neofetch,inxi,它们以更友好、更美观的方式呈现包括显卡在内的整体系统概况。 - 实时监控与高级诊断工具:如
nvtop(用于NVIDIA),radeontop(用于AMD),用于动态监控GPU的各项指标。
对于绝大多数用户,掌握lspci、nvidia-smi(如果是N卡)和neofetch这三样,就足以应对90%的场景。下面,我们就从最底层、最通用的方法开始拆解。
2.1 方法一:使用lspci命令——透视硬件总线的“火眼金睛”
lspci是List Peripheral Component Interconnect的缩写,它直接查询系统的PCI/PCIe总线,列出所有连接到这些总线上的设备。你的显卡(无论是集成还是独立)几乎都是通过PCIe总线连接的,因此这个方法最底层、最通用,不依赖于任何特定的显卡驱动。
基本使用与信息解读打开终端,直接输入:
lspci你会看到一长串设备列表。为了快速找到显卡,我们需要用grep进行过滤。显卡在PCI设备分类中通常属于“VGA compatible controller”或“3D controller”。
lspci | grep -E \"VGA|3D\"执行后,输出可能类似这样:
00:02.0 VGA compatible controller: Intel Corporation TigerLake-LP GT2 [Iris Xe Graphics] (rev 01) 01:00.0 VGA compatible controller: NVIDIA Corporation GA106 [GeForce RTX 3060 Lite Hash Rate] (rev a1)这里解读一下:
00:02.0和01:00.0是设备在PCI总线上的地址(域:总线:设备.功能)。VGA compatible controller指明了这是显示控制器。- 紧随其后的是供应商和型号信息。例如,第一行是Intel的Iris Xe集成显卡,第二行是NVIDIA的GeForce RTX 3060独立显卡。
获取更详细信息如果觉得型号信息还不够具体,可以使用-v(verbose,详细)、-vv(更详细)或-vvv(最详细)参数。
lspci -v -s 01:00.0其中-s 01:00.0指定了只看上面那个NVIDIA显卡的地址。输出会包含设备的子系统、内存地址、驱动内核模块(Kernel driver in use)等关键信息。这里显示的“Kernel driver in use”就是当前正在使用的驱动内核模块名,例如nvidia、nouveau或amdgpu。
注意:
lspci显示的是硬件标识,有时型号名称可能比较“内部化”(如“GA106”),不如商品名(如“RTX 3060”)直观,但这对识别硬件真身和寻找对应驱动至关重要。
2.2 方法二:使用lsmod与modinfo——探查驱动内核的“内功”
知道了硬件,下一步就是看驱动。Linux中,硬件驱动以内核模块(Kernel Module)的形式加载。lsmod可以列出所有已加载的模块,而modinfo可以查看某个模块的详细信息。
查看已加载的显卡驱动模块
lsmod | grep -E \"nvidia|nouveau|amdgpu|radeon\"这条命令会过滤出与NVIDIA(nvidia,nouveau)或AMD(amdgpu,radeon)相关的已加载模块。如果输出中有nvidia,说明官方闭源驱动正在使用;如果是nouveau,则是开源驱动;amdgpu是现代AMD显卡的驱动,radeon是较老AMD显卡的驱动。
深入查看驱动模块详情假设我们查到了nvidia模块,想看看它的具体版本和路径:
modinfo nvidia在输出中,重点关注version(驱动版本)和filename(模块文件路径)字段。版本号(如535.154.05)是判断驱动新旧、是否与CUDA兼容的核心依据。
实操心得:有时候系统里安装了多个版本的NVIDIA驱动,
lsmod显示的是当前正在运行的内核加载的模块。要查看系统已安装的所有驱动包,可以用dpkg -l | grep nvidia-driver。驱动版本管理是Linux下使用NVIDIA显卡的一大挑战,后面我们会详细讨论。
2.3 方法三:使用厂商专用工具(以NVIDIA为例)——召唤“官方管家”
如果你是NVIDIA显卡用户,那么nvidia-smi(NVIDIA System Management Interface)是你必须掌握的终极工具。它由NVIDIA官方驱动提供,不仅能查看信息,还能监控状态、管理GPU进程,功能极其强大。
基础信息查询直接在终端输入:
nvidia-smi你会看到一个格式清晰的表格输出,包含以下核心信息:
- GPU 名称:如“GeForce RTX 3060”。
- 驱动版本与CUDA 版本:这是关键!它告诉你当前安装的NVIDIA驱动版本,以及此驱动支持的最高CUDA运行时版本。注意:这显示的是驱动支持的最高CUDA版本,不是你实际安装的CUDA Toolkit版本。
- GPU 利用率、显存使用情况、温度、功耗、**当前性能状态(P-state)**等实时数据。
- 下方还会列出当前正在使用GPU的进程。
获取更详细的静态信息
nvidia-smi -q这个命令会以详细的文本形式输出所有可查询信息,内容非常多,包括GPU的完整产品名、持久模式状态、PCI总线信息、显存ECC错误计数、时钟频率、电源上限等,用于深度诊断。
常用监控模式
nvidia-smi -l 5-l 5表示每5秒刷新一次信息,类似于一个简单的实时监控器。对于观察训练或渲染时的GPU负载波动非常有用。
踩坑记录:
nvidia-smi命令本身依赖于NVIDIA驱动。如果这个命令报错(如“NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver”),通常意味着驱动未正确安装、未加载,或者内核版本与驱动不兼容。这是排查NVIDIA驱动问题的第一个信号。
2.4 方法四:使用图形化与信息汇总工具——快速概览的“仪表盘”
对于喜欢直观展示,或者想快速向他人分享系统配置的场景,图形化或信息汇总工具非常方便。
1. 系统设置在Ubuntu GNOME桌面,你可以打开“设置”->“关于”,这里通常会显示一个简单的图形适配器型号。更详细的信息可以在“设置”->“系统”->“显示”的“图形”部分找到,部分版本会在这里让你选择驱动。
2. Neofetch这是一个在终端中显示系统信息和ASCII艺术Logo的流行工具。它美观、信息全面。 首先安装:
sudo apt update sudo apt install neofetch然后运行:
neofetch输出会包含操作系统、内核版本、桌面环境、主机名、以及显卡型号(通常能正确识别出品牌和商品名)。它适合用于截图分享系统配置。
3. Inxi这是一个功能更强大的系统信息脚本,能提供极其详细的硬件和软件信息。 安装:
sudo apt install inxi查看完整的显卡和驱动信息:
inxi -G-G参数代表Graphics(图形)。输出会明确列出Device(显卡型号)、Driver(驱动名称,如nvidia)和Display Server(显示服务器,如X11或Wayland)等信息,非常清晰。
3. 实战流程:从零开始诊断你的显卡与驱动状态
现在,我们把这些命令组合起来,形成一个标准的诊断流程。假设你刚装好Ubuntu,或者怀疑显卡驱动有问题,可以按照以下步骤操作。
3.1 第一步:确认显卡硬件型号
这是所有工作的基础。打开终端,执行:
lspci | grep -E \"VGA|3D\"记下输出中的供应商(如NVIDIA、AMD、Intel)和具体的芯片型号(如GA106、Renoir等)。如果只有一行输出,说明你可能只有集成显卡;如果有两行,通常是集显+独显的组合。
3.2 第二步:检查当前加载的驱动
接着,查看系统当前为你的显卡加载了什么驱动模块。
lsmod | grep -E \"nvidia|nouveau|amdgpu|radeon|i915\"- 对于NVIDIA,你希望看到
nvidia(官方驱动)而不是nouveau(开源驱动,通常性能较差且功能不全)。 - 对于AMD,现代显卡应看到
amdgpu,老显卡可能是radeon。 - 对于Intel集成显卡,应看到
i915。
如果这里没有任何输出,那可能意味着没有任何显卡驱动模块被加载,你的桌面可能运行在非常基础的vesa或fbdev帧缓冲驱动上,性能极差。
3.3 第三步:获取驱动的详细信息
根据上一步的结果,使用modinfo或厂商工具深入查看。如果是NVIDIA且lsmod有输出:
modinfo nvidia | grep version nvidia-smi重点关注nvidia-smi输出的驱动版本和CUDA版本。
如果是AMD且lsmod有输出:
modinfo amdgpu | grep version也可以尝试查找AMD官方工具,但对于普通用户,驱动版本信息通常已足够。
如果未加载预期驱动:例如,你是NVIDIA显卡却加载了nouveau,或者根本没加载驱动。这时就需要进入第四步。
3.4 第四步:检查系统已安装的驱动包
在Ubuntu上,驱动通常通过apt包管理系统安装。我们可以查看系统里到底装了哪些驱动包。
# 查看NVIDIA相关包 dpkg -l | grep -i nvidia # 查看AMD相关包(名称可能多样) dpkg -l | grep -E \"amdgpu|radeon\" # 查看所有已安装的linux-modules-extra包(可能包含开源驱动) dpkg -l | grep linux-modules-extra对于NVIDIA,常见的驱动包名格式是nvidia-driver-XXX(如nvidia-driver-535)。这个命令能告诉你系统里有没有装驱动、装的是什么版本。
3.5 第五步:使用图形化工具交叉验证
运行neofetch或inxi -G,看看它们报告的显卡和驱动信息是否与命令行结果一致。这可以作为最终验证,也能得到一个更友好的信息展示。
4. 常见问题与深度排坑指南
在实际操作中,你几乎一定会遇到各种问题。下面是我总结的一些典型场景和解决方案。
4.1 问题一:lspci能看到显卡,但nvidia-smi报错“无法与驱动通信”
现象:lspci正常列出NVIDIA显卡,但运行nvidia-smi时提示“NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver”。
原因分析:
- 驱动未安装:这是最常见的原因。系统只有识别硬件的
nouveau开源驱动,没有安装官方的nvidia-driver。 - 驱动已安装但未加载:可能安装了错误的驱动版本(与当前内核不兼容),或者驱动在安装过程中出错。
- Secure Boot启用:当Secure Boot启用时,未签名的内核模块(如某些第三方驱动)无法被加载。NVIDIA驱动安装时会提示你为其创建密钥并签名。
排查与解决步骤:
- 检查驱动是否安装:运行
dpkg -l | grep nvidia-driver。如果没有输出,说明没安装。去“软件和更新”->“附加驱动”中选择一个推荐的专有驱动安装,或在终端运行ubuntu-drivers devices查看推荐驱动,然后用sudo apt install nvidia-driver-XXX安装。 - 检查驱动是否加载:运行
lsmod | grep nvidia。如果没输出,尝试手动加载sudo modprobe nvidia。如果失败,查看内核日志dmesg | tail -20,通常会有具体的错误信息。 - 处理Secure Boot:如果
dmesg日志提示与签名相关,你需要为驱动创建密钥。一个相对简单的方法是在安装驱动时,按照提示设置一个密码,然后在重启进入系统时,会进入MOK(Machine Owner Key)管理界面,选择“Enroll MOK”并输入密码完成签名。或者,如果你在受控环境,可以考虑在BIOS/UEFI设置中临时禁用Secure Boot(安装完驱动并签名后可重新开启)。 - 内核版本不匹配:如果你最近升级了内核,可能需要为新的内核重新安装驱动。使用
uname -r查看当前内核版本,确保已安装的nvidia-driver包包含了对应内核的模块。可以尝试运行sudo apt install --reinstall nvidia-driver-XXX来重装。
4.2 问题二:双显卡(集显+独显)笔记本,如何判断程序用了哪张卡?
现象:在拥有NVIDIA Optimus技术(集显+独显混合)的笔记本上,系统默认使用集成显卡以节省电量。但运行游戏或CUDA程序时,希望使用独立显卡。
诊断方法:
- 查看当前渲染器:运行
glxinfo | grep \"OpenGL renderer\"。如果输出是Intel或AMD(集显),则当前桌面渲染由集显负责。 - 使用
nvidia-smi监控:在一个终端运行nvidia-smi -l 1实时监控。然后在另一个终端启动你的3D程序或游戏。观察nvidia-smi的监控界面,看GPU利用率和进程列表是否出现变化。如果独显利用率上升并出现了你的程序进程,说明它正在使用独显。
切换方法:
- 使用Prime Select(适用于较老方案):
# 查看当前模式 prime-select query # 切换到NVIDIA独显模式(需要注销或重启) sudo prime-select nvidia # 切换到Intel集显模式 sudo prime-select intel - 使用NVIDIA On-Demand模式(现代Ubuntu默认):在“NVIDIA X Server Settings”->“PRIME Profiles”中,选择“NVIDIA On-Demand”。这样桌面由集显渲染,但当你运行指定程序时,可以通过
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia环境变量来让该程序使用独显。例如:
此时输出应该变为你的NVIDIA显卡型号。__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxinfo | grep \"OpenGL renderer\"
4.3 问题三:驱动版本与CUDA Toolkit版本不兼容
现象:成功安装了NVIDIA驱动和CUDA Toolkit,但运行nvcc --version显示的CUDA版本与nvidia-smi中显示的版本不一致,或者运行CUDA程序时报错。
核心原则:CUDA Toolkit版本必须 ≤ NVIDIA驱动版本所支持的最高CUDA版本。nvidia-smi顶部显示的“CUDA Version”是此驱动支持的最高CUDA运行时版本,不是你安装的CUDA Toolkit版本。
查看与匹配:
- 运行
nvidia-smi,记下“CUDA Version”,例如12.4。 - 运行
nvcc --version(如果你安装了CUDA Toolkit),查看其版本,例如11.8。 - 只要
11.8 ≤ 12.4,就是兼容的。反之,如果你安装了CUDA 12.5,但驱动只支持到12.4,就会出问题。
解决方案:
- 方案A(推荐):根据你需要的CUDA Toolkit版本,去NVIDIA官网查看对应的最低驱动版本要求,然后安装满足要求的驱动。例如,CUDA 12.4要求驱动版本≥
545.23.08。 - 方案B:升级你的NVIDIA驱动到更新的版本,以支持更高版本的CUDA。
# 添加官方显卡驱动PPA(可选,获取最新驱动) sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update # 查看可用的最新驱动版本 apt search nvidia-driver # 安装指定版本,例如545 sudo apt install nvidia-driver-545
4.4 问题四:如何彻底卸载旧版NVIDIA驱动,安装新版?
驱动冲突是万恶之源。在安装新驱动前,彻底清理旧驱动是个好习惯。
安全卸载流程:
# 1. 禁用图形界面,进入纯命令行模式(TTY) # 按下 Ctrl+Alt+F3 (F3-F6通常可用) 切换到另一个TTY,登录。 # 2. 停止显示管理器(如gdm3, sddm, lightdm) sudo systemctl stop gdm3 # 3. 彻底卸载所有NVIDIA相关包 sudo apt purge \"*nvidia*\" \"*cuda*\" \"*cudnn*\" # 谨慎操作,这会删除CUDA和cuDNN # 或者更精确地卸载驱动 sudo apt purge nvidia-driver-* libnvidia-* # 4. 删除可能残留的配置和模块 sudo rm -rf /etc/modprobe.d/blacklist-nouveau.conf sudo rm -rf /etc/modprobe.d/nvidia*.conf sudo rm -rf /usr/lib/modules/*/kernel/drivers/video/nvidia/ sudo rm -rf ~/.nv/ # 5. 更新initramfs并重启 sudo update-initramfs -u sudo reboot重启后,系统应该会使用nouveau或vesa驱动进入桌面。此时再按照正常流程安装新驱动即可。
重要警告:
sudo apt purge \"*nvidia*\"这条命令威力巨大,会删除所有名字里带“nvidia”的包,包括一些你可能不想删除的库。在生产环境或重要机器上,建议使用sudo apt autoremove --purge nvidia-driver-XXX来卸载特定版本。上述“核弹”方法适用于快速清理个人测试环境。
5. 进阶监控与管理:让显卡状态一目了然
掌握了查看静态信息的方法后,动态监控GPU状态对于开发、运维和性能调优同样重要。
5.1 使用nvtop——终端里的GPU“任务管理器”
nvtop类似于htop,但是为NVIDIA GPU设计的。它提供了一个实时、交互式的监控界面。 安装:
sudo apt install nvtop运行:
nvtop在界面中,你可以看到所有GPU的利用率、显存、温度、功耗、风扇转速,以及每个使用GPU的进程的详细信息,并且可以像htop一样排序、查找进程。这对于调试GPU内存泄漏、查看哪个进程占用了GPU资源非常直观。
5.2 使用gpustat——轻量级状态查询
gpustat是nvidia-smi的一个更简洁、更易读的封装,特别适合在脚本中调用或快速查看。 安装(通过pip):
pip install gpustat运行:
gpustat -cp-c表示彩色输出,-p显示进程信息。输出比nvidia-smi更紧凑,信息密度高。
5.3 自定义监控脚本
你可以结合nvidia-smi和其他命令行工具,编写简单的监控脚本。例如,一个每5秒记录一次GPU利用率和温度的脚本:
#!/bin/bash while true; do echo \"$(date)\" nvidia-smi --query-gpu=timestamp,name,utilization.gpu,utilization.memory,temperature.gpu --format=csv,noheader sleep 5 done将这个脚本保存为gpu_monitor.sh,赋予执行权限chmod +x gpu_monitor.sh,然后运行即可。
6. 不同显卡厂商(AMD/Intel)的特别关注点
6.1 AMD显卡用户
对于AMD显卡,现代驱动是amdgpu。你可以使用以下命令查看详细信息:
# 查看内核驱动信息 modinfo amdgpu # 使用DRI(Direct Rendering Infrastructure)工具查询 sudo apt install mesa-utils glxinfo | grep \"OpenGL renderer string\" # 查看Vulkan驱动信息(如果安装了) vulkaninfo | grep \"GPU id\"AMD在开源驱动方面做得很好,amdgpu驱动通常已经集成在Linux内核中,并通过mesa库提供OpenGL和Vulkan支持。对于较新的显卡,你可能需要启用非免费的固件仓库来获取完整功能。
6.2 Intel集成显卡用户
Intel显卡驱动i915同样集成在内核中。查看信息主要依赖以下命令:
# 查看驱动模块信息 modinfo i915 # 查看详细的显卡信息(需要安装intel-gpu-tools) sudo apt install intel-gpu-tools sudo intel_gpu_top # 实时监控GPU利用率(类似nvtop)Intel显卡在Linux下的兼容性通常是最好的,问题也最少。关注点主要在于是否启用了硬件视频编解码(VA-API)等高级功能。
折腾Linux下的显卡驱动,尤其是NVIDIA的,确实是入门路上的一道坎。但一旦你掌握了这套从硬件识别、驱动状态检查到实时监控的命令行方法论,就会发现它比图形界面更强大、更直接。记住核心的排查链条:lspci看硬件 ->lsmod/modinfo看驱动 ->nvidia-smi/厂商工具看详情 ->dpkg/apt看安装包。遇到问题,多查内核日志dmesg,多关注驱动版本与CUDA版本的兼容性。最后,善用nvtop这类监控工具,能让你的开发和运维工作事半功倍。