排查 Linux 驱动(driver)故障通常需要分层定位:从“硬件是否识别” → “驱动是否加载” → “设备是否正常工作” → “日志与源码”。下面是一套比较系统的排查思路和方法。
lspci -nn
lsusb
8086:15b8)dmesg | grep -i <设备名或关键字>
例如:
dmesg | grep -i usb
dmesg | grep -i nvme
lsmod
或过滤:
lsmod | grep <驱动名>
lspci -k -nn
示例输出中会显示:
Kernel driver in use: xhci_hcd
Kernel modules: xhci_pci
modprobe <driver_name>
rmmod <driver_name>
若加载失败,看报错:
dmesg | tail
ls /dev | grep <设备>
例如:
/dev/sda
/dev/video0
/dev/ttyUSB0
ls /sys/class/
ls /sys/bus/pci/devices/
可查看驱动绑定状态:
cat /sys/bus/pci/devices/0000:01:00.0/driver
dmesg -w
或:
journalctl -k -f
probe failedno such deviceresource busytimeoutfirmware load failed很多驱动依赖固件:
dmesg | grep firmware
固件通常位于:
/lib/firmware/
缺失时可安装:
apt install linux-firmware
zcat /proc/config.gz | grep <CONFIG_XXX>
或:
grep <CONFIG_XXX> /boot/config-$(uname -r)
ls /proc/device-tree/
检查:
echo 8 > /proc/sys/kernel/printk
echo 'file driver.c +p' > /sys/kernel/debug/dynamic_debug/control
evtest(输入设备)i2c-toolsusbmonperf| 现象 | 可能原因 |
|---|---|
| 设备不显示 | 硬件故障 / 未上电 |
| 驱动未加载 | 模块缺失 / 黑名单 |
| probe 失败 | 资源冲突 / DTS 错误 |
| 工作不稳定 | 固件问题 / 中断冲突 |
| 性能差 | DMA / 缓存配置错误 |
如果你能提供具体设备类型(网卡 / GPU / USB / 摄像头等)和错误日志,我可以给你更针对性的排查步骤。