在linux中查看pci设备信息需使用lspci等工具:一、lspci列基础信息;二、sudo lspci -v查驱动与资源;三、lspci | grep筛选并-lspci -nn提取id;四、lspci -t看拓扑;五、依发行版安装pciutils;六、sysfs验证驱动绑定;七、modinfo检查驱动兼容性。

如果您需要在Linux系统中获取主板扩展槽上所连接的硬件设备详情,例如显卡、网卡、声卡或存储控制器等,则需依赖内核暴露的PCI子系统信息。以下是查看PCI设备信息的多种方法:
一、列出所有PCI设备基础信息
该方法通过lspci命令直接读取内核PCI数据库,输出每台设备的总线地址、类型、厂商与型号名称,无需管理员权限,适合快速确认设备是否存在。
1、打开终端,输入命令:lspci。
2、按回车执行,观察输出是否包含类似00:02.0 VGA compatible controller: Intel Corporation...的行。
3、若命令提示command not found,说明pciutils未安装,请跳转至“五、安装pciutils工具包”部分处理。
二、显示设备详细属性与驱动绑定状态
此方法可揭示设备使用的内核驱动名称、中断号(IRQ)、内存/IO端口映射、支持的模块列表及电源管理能力,需sudo权限以访问完整字段。
1、执行命令:sudo lspci -v。
2、在输出中查找目标设备(如含Network controller或VGA compatible controller的行),定位Kernel driver in use:后的内容,即当前激活驱动。
3、继续查找Kernel modules:字段,其后所列模块为系统识别但尚未加载的候选驱动。
三、按功能类别筛选并提取硬件标识符
当系统存在数十个PCI设备时,该方法可避免人工扫描冗余条目,精准聚焦网络、显示、存储等关键控制器,并导出可用于驱动匹配的标准化ID组合。
1、执行过滤命令:lspci | grep -E "(VGA|3D controller|Network|Ethernet|USB|SATA|SCSI)"。
2、对筛选出的设备进一步获取数字ID:lspci -nn | grep -i "network"。
3、输出中形如[10ec:8168]的部分即为厂商ID与设备ID,可直接用于搜索官方驱动文档或内核源码中的pci_device_id表项。
四、查看PCI物理拓扑结构与桥接关系
该方法以缩进树状图呈现设备在PCIe层级中的挂载位置,有助于判断显卡是否直连CPU根复合体、网卡是否经由PCIe桥转发,对多GPU配置或扩展卡兼容性分析至关重要。
1、运行树形命令:lspci -t。
2、解读缩进:每级“-+-”或“+-”代表一个PCI/PCIe桥,例如-+-[0000:00]-+-00.0表示总线00上的Host bridge,其下挂载后续设备。
3、结合设备名增强可读性:lspci -t -v | less,使用less分页浏览并搜索关键词。
五、安装pciutils工具包以启用lspci功能
当执行lspci提示命令不存在时,表明基础工具集缺失,必须根据发行版包管理器安装pciutils软件包,否则所有依赖命令均无法运行。
1、Debian或Ubuntu系统执行:sudo apt update && sudo apt install pciutils。
2、CentOS/RHEL 8及以上版本执行:sudo dnf install pciutils。
3、CentOS/RHEL 7执行:sudo yum install pciutils。
六、通过sysfs接口直接验证驱动绑定路径
该方法绕过lspci,直接读取内核/sys/bus/pci/devices目录下的实时符号链接,反映设备当前真实绑定的驱动模块,结果不可被用户空间缓存干扰。
1、列出全部PCI设备slot地址:ls /sys/bus/pci/devices/。
2、任选一个地址(如0000:01:00.0),检查其driver链接:ls -l /sys/bus/pci/devices/0000:01:00.0/driver。
3、从输出的driver → ../../../bus/pci/drivers/r8169中提取模块名:basename $(readlink /sys/bus/pci/devices/0000:01:00.0/driver)。
七、联合modinfo验证驱动兼容性参数
在已知驱动名称前提下,该方法可确认该模块是否声明支持目标设备的PCI ID,是排查“设备识别但无驱动响应”类问题的关键步骤。
1、获取驱动名后执行:modinfo r8169(将r8169替换为实际驱动名)。
2、检查输出中alias字段是否包含对应PCI ID,格式为pci:v000010ECd00008168sv*sd*bc*sc*i*。
3、若未找到匹配alias,说明该驱动不支持该硬件,需更换驱动或更新内核版本。










