尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Ubuntu下查看显卡信息与驱动状态:从硬件识别到实时监控的完整指南

Ubuntu下查看显卡信息与驱动状态:从硬件识别到实时监控的完整指南 1. 项目概述为什么在Ubuntu下查看显卡信息是必备技能刚接触Ubuntu或者从Windows转过来的朋友经常会遇到一个看似简单却至关重要的问题我的电脑里装的是什么显卡驱动装好了吗性能跑满了吗尤其是在深度学习、视频剪辑、3D渲染或者只是想流畅玩个游戏的时候显卡的状态直接决定了你的体验上限和效率下限。在Windows下我们习惯了右键“此电脑”-“管理”-“设备管理器”那一套或者用鲁大师、GPU-Z这类工具一键搞定。但到了Ubuntu这个以命令行见长的世界里一切变得“原始”而又强大。“ubuntu下如何查看显卡及显卡驱动”这个标题背后解决的绝不仅仅是一个信息查询问题。它关乎系统兼容性、性能调优、故障排查和开发环境搭建。比如你新装了一块NVIDIA RTX 4090系统识别了吗驱动是开源nouveau还是闭源nvidia-driverCUDA能不能用又或者你的集成显卡和独立显卡切换正常吗屏幕撕裂、外接显示器不亮、游戏帧数过低这些问题的第一步诊断都始于准确地查看显卡和驱动信息。我自己在运维工作站和深度学习服务器时无数次通过命令行快速定位了显卡型号、驱动版本、GPU利用率从而解决了驱动冲突、CUDA版本不匹配、多卡负载不均等一系列棘手问题。掌握这套方法就像拥有了透视电脑硬件状态的“X光眼”无论是新手排查基础问题还是老手进行深度优化都是不可或缺的第一课。接下来我就把自己常用的、最有效的几种方法连同背后的原理和踩过的坑系统地分享给你。2. 核心思路与工具选型命令行才是终极利器在Ubuntu世界里图形化工具如“设置”-“关于”或“附加驱动”虽然能提供最基础的信息但往往不够全面尤其在诊断复杂问题时显得乏力。我们的核心思路是通过不同层级、不同侧重点的命令行工具构建一个从硬件识别、驱动状态到实时监控的完整信息视图。为什么首选命令行第一它不受桌面环境GNOME, KDE等的限制在任何Ubuntu变体甚至服务器版上都能用。第二它提供的信息最原始、最详细很多图形工具其实就是对这些命令结果的封装和展示。第三它可以轻松地嵌入脚本实现自动化监控和报告。主要的“武器库”可以分为以下几类基础硬件信息探测工具如lspci用于从系统总线层面识别所有硬件设备是查看显卡型号的基石。内核与驱动信息工具如lsmod,modinfo用于查看当前加载的显卡内核模块驱动及其详细信息。厂商专用管理工具如NVIDIA的nvidia-smiAMD的rocm-smi这是获取对应品牌显卡详细信息和控制能力的“官方神器”。系统信息汇总工具如neofetch,inxi它们以更友好、更美观的方式呈现包括显卡在内的整体系统概况。实时监控与高级诊断工具如nvtop用于NVIDIAradeontop用于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独立显卡。获取更详细信息如果觉得型号信息还不够具体可以使用-vverbose详细、-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\这条命令会过滤出与NVIDIAnvidia,nouveau或AMDamdgpu,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-smiNVIDIA 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日志提示与签名相关你需要为驱动创建密钥。一个相对简单的方法是在安装驱动时按照提示设置一个密码然后在重启进入系统时会进入MOKMachine 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_OFFLOAD1 __GLX_VENDOR_LIBRARY_NAMEnvidia环境变量来让该程序使用独显。例如__NV_PRIME_RENDER_OFFLOAD1 __GLX_VENDOR_LIBRARY_NAMEnvidia glxinfo | grep \OpenGL renderer\此时输出应该变为你的NVIDIA显卡型号。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-5454.4 问题四如何彻底卸载旧版NVIDIA驱动安装新版驱动冲突是万恶之源。在安装新驱动前彻底清理旧驱动是个好习惯。安全卸载流程# 1. 禁用图形界面进入纯命令行模式TTY # 按下 CtrlAltF3 (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的一个更简洁、更易读的封装特别适合在脚本中调用或快速查看。 安装通过pippip install gpustat运行gpustat -cp-c表示彩色输出-p显示进程信息。输出比nvidia-smi更紧凑信息密度高。5.3 自定义监控脚本你可以结合nvidia-smi和其他命令行工具编写简单的监控脚本。例如一个每5秒记录一次GPU利用率和温度的脚本#!/bin/bash while true; do echo \$(date)\ nvidia-smi --query-gputimestamp,name,utilization.gpu,utilization.memory,temperature.gpu --formatcsv,noheader sleep 5 done将这个脚本保存为gpu_monitor.sh赋予执行权限chmod x gpu_monitor.sh然后运行即可。6. 不同显卡厂商AMD/Intel的特别关注点6.1 AMD显卡用户对于AMD显卡现代驱动是amdgpu。你可以使用以下命令查看详细信息# 查看内核驱动信息 modinfo amdgpu # 使用DRIDirect 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利用率类似nvtopIntel显卡在Linux下的兼容性通常是最好的问题也最少。关注点主要在于是否启用了硬件视频编解码VA-API等高级功能。折腾Linux下的显卡驱动尤其是NVIDIA的确实是入门路上的一道坎。但一旦你掌握了这套从硬件识别、驱动状态检查到实时监控的命令行方法论就会发现它比图形界面更强大、更直接。记住核心的排查链条lspci看硬件 -lsmod/modinfo看驱动 -nvidia-smi/厂商工具看详情 -dpkg/apt看安装包。遇到问题多查内核日志dmesg多关注驱动版本与CUDA版本的兼容性。最后善用nvtop这类监控工具能让你的开发和运维工作事半功倍。
返回列表