必须加sudo和-k参数才能查到显卡驱动,因普通用户无权读取Kernel driver in use字段;用lspci | grep -E -i "(vga|3d|display|multimedia)"或lspci -nn | grep -E "0300|0380|0400|0480"可全面定位显卡,ID比设备名更可靠,lspci -t能准确反映PCIe物理拓扑。

直接用 lspci 能列出所有 PCI 设备,但想准确识别显卡、确认驱动是否加载、避免被模糊设备名误导,必须组合参数并加 sudo——不加权限时,Kernel driver in use 为空、BAR 地址缺失、甚至设备名显示为 [device],查不到真信息。
怎么快速定位显卡(VGA/3D controller)并避免漏掉核显或老型号
很多设备不叫 “VGA”,比如 Intel 核显常标为 Display controller,AMD APU 可能归类为 Multimedia controller,NVIDIA 某些计算卡则显示为 3D controller。单纯 grep -i vga 会漏掉一半。
- 用正则覆盖常见关键词:
lspci | grep -E -i "(vga|3d|display|multimedia)" - 如果输出为空,立刻补查 ID:
lspci -nn | grep -E "0300|0380|0400|0480"(PCI Class Code:03xx 是显示类,04xx 是多媒体类) - 注意部分 ARM 或 Chromebook 平台的 GPU 可能走 DRM 子系统而非传统 VGA 类别,此时需配合
lshw -c display或glxinfo | grep "OpenGL renderer"
查显卡用了哪个驱动:为什么必须加 sudo 和 -k 参数
Kernel driver in use 字段只在 root 权限下才可读取;普通用户执行 lspci -k 会看到该字段为空或显示 blank,根本无法判断是没驱动、驱动冲突,还是被 vfio-pci 隔离了。
- 正确命令:
sudo lspci -k -s 01:00.0(把01:00.0换成你从上一步查到的实际地址) - 重点看两行:
Kernel driver in use:(当前生效驱动,如nvidia、i915、amdgpu)和Kernel modules:(候选模块,如nouveau,nvidia,说明 nouveau 被 blacklist 了才选 nvidia) - 若
Kernel driver in use:后为空,且Kernel modules:有值,大概率是驱动未加载或被modprobe.blacklist=xxx屏蔽
显卡型号不准?优先信 ID(-nn)而不是设备描述文字
设备名容易变:Intel Iris Xe 在旧内核叫 HD Graphics,新内核可能叫 Arc Graphics;NVIDIA GT 1030 在某些发行版里显示为 [10de:1d01] 而非具体型号。ID 才是硬件身份证。
- 获取标准 ID:
sudo lspci -nn | grep -E "(VGA|3D|Display)",输出形如01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] [10de:1c03] (rev a1) - ID
[10de:1c03]可直接去内核源码搜:git grep "1c03 10de" drivers/gpu/drm/nouveau/,或查 devicehunt.com - 不要依赖
lspci单独输出的“GeForce GTX 1060”——它可能是 firmware 提供的字符串,实际芯片是 GP104,驱动行为以 ID 为准
查 PCIe 拓扑和直连关系:为什么 lspci -t 比 -v 更可靠
多 GPU 场景下,显卡是否直连 CPU(而非经过 PCH 桥片)直接影响带宽和 NVLink 支持。但 lspci -v 不体现层级,而 lspci -t 的缩进结构是唯一能快速看出物理挂载路径的方式。
- 运行:
lspci -t,输出类似:-+-[0000:00]-+-00.0 # Host bridge+-01.0 # PCIe Root Port → 直连 CPU\-1f.2 # PCH SATA controller → 经桥片 - 再结合设备名增强可读性:
lspci -t -v | grep -A 5 "01:00.0",确认该地址是否挂在 Root Port 下 -
lspci -t不需要sudo,输出稳定,即使在容器或最小化系统中也能用
真正卡住人的往往不是命令记不住,而是查到一行 00:02.0 Display controller: Intel Corporation Device 46a7 就停了——既没加 -nn 看 ID,也没加 sudo -k 确认驱动,更没用 -t 判断是不是核显被 PCH 桥转发。这些动作缺一不可。


















