lspci -k是查看PCI设备驱动名最直接方法,其输出中“Kernel driver in use:”后即为当前激活驱动名,如i915、igb;若仅显示“Kernel modules:”而无“in use”,表明驱动未加载或绑定失败。

lspci -k 看 PCI 设备驱动名最直接
对显卡、网卡、声卡这类插在主板上的硬件,lspci -k 是最快定位驱动名的方法。它不依赖模块是否已加载,只读内核当前绑定的驱动名称。
-
lspci -k输出中每段设备信息末尾会出现Kernel driver in use: xxx,这个xxx就是正在用的驱动模块名(比如i915、nvme、igb) - 如果某设备显示
Kernel modules: xxx但没写in use,说明驱动没加载或没成功绑定——这时候lsmod | grep xxx很可能查不到 - 别用
lspci -v后手动翻屏找 driver 字段,容易漏行;lspci -vv | grep -A1 "Kernel driver"更稳
lsmod + modinfo 查驱动详情必须配对用
lsmod 只告诉你哪些模块在内存里,modinfo 才能确认它到底管什么硬件、支持哪些参数、兼容哪个内核版本。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 先跑
lsmod | grep -i network或lsmod | grep nvme锁定疑似驱动名 - 再执行
modinfo <code>xxx(比如modinfo iwlwifi),重点看alias:行——它列出了该模块响应的 PCI/USB ID,这才是它实际匹配的硬件范围 -
modinfo输出里的version:和srcversion:要和当前内核uname -r对得上,否则可能是第三方编译的驱动,更新内核后大概率失效
/sys/bus/pci/devices/ 下的 driver 链接最反映真实状态
这个路径是内核 runtime 的“真相源”,比命令输出更底层、更实时,尤其适合排查驱动加载失败或被意外替换的情况。
- 进目录:
ls /sys/bus/pci/devices/,看到一堆类似0000:01:00.0的地址 - 挑一个设备,执行:
basename $(readlink /sys/bus/pci/devices/0000:01:00.0/driver),输出就是当前绑定的驱动名 - 如果
readlink报错或返回空,说明该设备没被任何驱动接管(可能是硬件故障、ID 不匹配、或驱动没 probe 到) - 注意:PCI 地址格式是
domain:bus:slot.func,lspci输出的01:00.0实际对应0000:01:00.0,少写0000:会找不到路径
ethtool -i 看网卡驱动时别漏掉 firmware 版本
网卡驱动常分两层:内核模块(如 ixgbe)+ 固件(firmware)。ethtool -i 能一次性看到两者,而其他命令通常只暴露模块层。
- 先用
ip -br a或ls /sys/class/net/确认接口名(如enp1s0f0) - 运行:
ethtool -i enp1s0f0,重点关注三行:driver:(内核模块名)、version:(模块版本)、firmware-version:(固件版本) - 如果
firmware-version显示N/A或明显老旧,即使驱动模块正常,也可能导致性能下降或功能缺失(比如 RSS、TSO 不生效) - 固件升级要从厂商官网下载
.bin文件,放进/lib/firmware/对应子目录,然后 reload 模块(modprobe -r xxx && modprobe xxx)
lspci -k 和 /sys/bus/pci/devices/*/driver 必须交叉验证,尤其当系统有多个同型号设备或驱动被 force-loaded 时。


















