可通过lspci -k查看PCI设备绑定的内核驱动,结合-s参数精确定位、/sys/bus/pci/devices下driver链接验证模块路径、lsmod交叉确认模块加载状态,并用ethtool等工具补充验证驱动与固件信息。

如果您在Linux系统中需要确认某块PCI设备当前由哪个内核驱动模块管理,或验证驱动是否已正确加载并绑定,可通过多种命令组合实现精准查询。以下是解决此问题的步骤:
一、使用lspci -k查看设备与驱动绑定关系
该方法直接显示每个PCI设备所使用的内核驱动及可加载模块列表,是定位驱动绑定状态最直观的方式。
1、在终端中执行命令:lspci -k
2、在输出中查找目标设备行(如包含“Ethernet controller”、“VGA compatible controller”等关键词)
3、在其下方查找Kernel driver in use:字段,其后内容即为当前正在使用的驱动名称
4、同时检查Kernel modules:字段,列出该设备支持的所有可用内核模块
二、结合设备地址精确查询特定PCI设备驱动
当系统存在多个同类设备(如多块网卡或显卡)时,通过总线地址可避免信息混淆,确保结果唯一对应目标硬件。
1、先执行lspci获取目标设备地址(格式如00:1f.2)
2、执行命令:lspci -k -s 00:1f.2(将“00:1f.2”替换为实际地址)
3、确认输出中Kernel driver in use:字段非空且值有效
4、若该字段为空,表明设备未被任何驱动绑定,可能处于未启用或驱动缺失状态
三、通过/sys/bus/pci/devices目录验证驱动模块路径
Linux内核为每个已识别的PCI设备在/sys文件系统中创建对应条目,其中driver符号链接可直接反映当前绑定驱动的实际模块路径。
1、执行lspci -D获取设备完整域名(含域号,如0000:00:1f.2)
2、进入对应设备目录:cd /sys/bus/pci/devices/0000:00:1f.2
3、执行ls -l driver,观察软链接指向的模块路径(如/sys/module/ahci)
4、若提示“No such file or directory”,说明该设备尚未绑定驱动
四、使用lsmod配合lspci筛选已加载驱动模块
该方法用于交叉验证:确认lspci报告的驱动是否确已在内核中作为模块加载运行。
1、执行lspci -k | grep -A 2 "Kernel driver in use:"提取所有已绑定驱动名
2、对任一驱动名(如e1000e),执行:lsmod | grep ^e1000e
3、若输出包含该模块名及内存占用信息,表明模块已成功加载
4、若无输出,需检查模块是否被禁用、blacklist或未安装对应firmware
五、利用ethtool或inxi辅助验证网卡类PCI设备驱动
针对以太网控制器等特定类型PCI设备,专用工具可提供驱动版本、固件版本等补充信息,增强诊断可信度。
1、确认网卡接口名(如enp0s31f6):执行ip -br link show | grep UP
2、执行:sudo ethtool -i enp0s31f6(需root权限)
3、检查输出中driver:字段是否与lspci -k结果一致
4、同时查看version:和firmware-version:字段,确认驱动与固件兼容性











