lspci可确认显卡硬件存在,但需组合nvidia-smi、glxinfo和lshw才能完整判断“有无卡、型号、驱动是否生效、当前渲染用哪张卡”:lspci -nn | grep -e "(vga|3d|display)"查硬件及pci id;nvidia-smi验证nvidia驱动状态;glxinfo | grep "opengl renderer"确认实际渲染gpu;sudo lshw -c display检查驱动绑定与资源分配。

lspci 能直接看到显卡硬件型号,但只靠它无法确认驱动是否生效、当前渲染用的是哪块卡、或 NVIDIA/AMD/Intel 各自的运行状态。得组合几个命令,才能把“有没有卡”“是什么卡”“驱动装没装”“正在用哪块”这四件事说清楚。
用 lspci 确认物理 GPU 是否被内核识别
这是第一步,不依赖任何驱动,只要设备插在主板上且供电正常,就能列出来:
-
lspci | grep -E "(VGA|3D|Display)"—— 比单纯grep -i vga更可靠,避免漏掉 AMD 的 “3D controller” 或 Intel 的 “Display controller” -
lspci -nn | grep -E "(VGA|3D|Display)"—— 加-nn显示厂商 ID 和设备 ID(如[10de:2206]),遇到模糊型号时可查 PCI ID 数据库 - 输出里带
kernel driver in use: nvidia或kernel driver in use: i915才说明驱动已加载;如果只有kernel modules: i915但没写in use,大概率驱动没起来
用 nvidia-smi 查 NVIDIA 卡的实时状态和驱动版本
这个命令只对 NVIDIA 有效,且必须满足两个条件:NVIDIA 驱动已安装 + 内核模块 nvidia 已加载。一旦失败,错误信息很明确:
-
nvidia-smi—— 成功则顶部显示驱动版本(如Driver Version: 535.104.05)和 GPU 型号;失败时提示NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver -
nvidia-smi -L—— 只列出设备,适合脚本调用,不依赖 X Server 或 GUI - 注意:
nvidia-smi不报错 ≠ 渲染正常。比如 headless 服务器可能驱动加载了,但glxinfo仍报错,说明 OpenGL 栈没配好
用 glxinfo 验证实际参与图形渲染的 GPU
尤其在双显卡(独显+集显)、混合图形(如 NVIDIA Optimus)或虚拟机场景下,lspci 和 nvidia-smi 显示的“有卡”,不等于“当前在用这张卡”:
- 先确保装了
mesa-utils:sudo apt install mesa-utils(Ubuntu/Debian) -
glxinfo | grep "OpenGL renderer"—— 输出类似OpenGL renderer string: Mesa Intel(R) HD Graphics 630 (KBL GT2),这才是真正干活的 GPU - 如果输出是
llvmpipe或softpipe,说明全靠 CPU 软渲染,GPU 根本没接入图形栈 - 该命令依赖 X11 或 Wayland 会话,SSH 连接默认无 DISPLAY,需加
export DISPLAY=:0或用ssh -X
用 lshw 综合判断驱动绑定与资源分配
lshw 是少数能同时看到硬件描述、驱动名、内存映射、中断号的工具,适合排查“卡存在但不工作”的深层问题:
-
sudo lshw -c display—— 关键字段看configuration: driver=nvidia和resources:下的内存地址是否冲突 - 若输出中
driver字段为空,或status: disabled,说明内核没启用该设备,可能是 BIOS 关闭了 PCIe 设备、或blacklist了驱动模块 - 对比
lspci -v -s 01:00.0中的Memory at ... [size=...]和lshw的resources,不一致往往意味着地址被其他设备抢占
lspci 和 nvidia-smi 看起来最直白,但最容易误判——比如 nvidia-smi 正常不代表桌面能用 GPU 渲染,lspci 显示 i915 加载也不代表 Intel 核显真在输出画面。最终得靠 glxinfo 或应用层测试(如跑 glxgears)来闭环验证。











