麒麟OS识别PCI设备及驱动状态有五种方法:lspci列设备基础信息;lspci -k查“Kernel driver in use”确认激活驱动;lspci -vv分析寄存器与驱动详情;sysfs中读取driver符号链接验证绑定;lspci -t展示PCI物理拓扑结构。

如果您在麒麟OS系统中需要识别已连接的PCI设备、确认硬件是否被内核正确识别,或排查驱动绑定异常问题,则需通过标准Linux PCI子系统接口获取设备列表、厂商ID、设备ID及关联驱动模块。以下是多种可靠方法:
一、使用lspci命令列出所有PCI设备
该命令直接读取内核PCI子系统注册的硬件信息,无需额外安装软件包,可快速输出全部PCI/PCIe设备的基础标识,包括总线地址、厂商名称、设备型号及十六进制ID编码。
1、打开终端,输入以下命令并回车:lspci
2、观察每行开头的格式如00:1f.2,该为PCI总线地址;后续字符串中包含厂商名(如Intel Corporation)与设备描述(如HD Audio Controller)。
3、如需仅显示设备类别关键词,可执行:lspci | grep -i "vga\|network\|audio\|storage"
二、使用lspci -k查看设备绑定的驱动模块
此方式聚焦于每个PCI设备当前实际加载并启用的内核驱动模块,通过“Kernel driver in use”字段确认驱动是否处于活动状态,是判断硬件功能是否可用的核心依据。
1、在终端中执行:lspci -k
2、查找含Kernel driver in use:的段落,其后内容即为已激活驱动名,例如i915或igb
3、若某设备条目下缺失该字段,或仅显示Kernel modules:而无“in use”,表明驱动未绑定或加载失败。
4、针对网卡快速筛选:执行lspci -knn | grep -A 3 -B 1 "Network\|Ethernet"
三、使用lspci -vv结合上下文定位驱动详情
该命令输出完整PCI配置空间寄存器与驱动初始化信息,适合深入分析驱动兼容性、中断分配或资源冲突问题,尤其适用于驱动开发调试阶段。
1、运行:lspci -vv | grep -A 10 -B 5 "Kernel driver in use"
2、在匹配结果中检查Driver status与Capabilities区块,确认MSI/X中断、DMA掩码等关键能力是否启用。
3、如需查看特定设备完整寄存器状态,先用lspci获取地址(如02:00.0),再执行:lspci -vv -s 02:00.0
四、通过sysfs接口直接验证驱动绑定路径
Linux内核在/sys/bus/pci/devices/下为每个PCI设备建立运行时属性目录,其中driver符号链接真实指向所用驱动模块,该方式不依赖命令解析,反映内核最底层状态。
1、列出所有PCI设备slot:ls /sys/bus/pci/devices/
2、选取目标设备(如0000:01:00.0),执行:ls -l /sys/bus/pci/devices/0000:01:00.0/driver
3、若输出为driver → ../../../bus/pci/drivers/nvidia,则表明该设备正由nvidia驱动管理。
4、提取驱动模块名:执行basename $(readlink /sys/bus/pci/devices/0000:01:00.0/driver)
五、使用lspci -t以树状结构展示PCI拓扑关系
该方式呈现PCI设备间的物理连接层级,包括Root Complex、PCI桥、Endpoint等节点,有助于理解带宽分配、NUMA域归属及热插拔能力限制,对驱动开发中的资源规划具有参考价值。
1、执行:lspci -t
2、输出中“-”表示主桥,“+”表示分支,“[]”内为设备地址,例如:-[0000:00]-+-00.0代表Root Port下的集成显卡。
3、结合lspci -tv可附加设备描述,增强可读性。


















