排查 Linux 驱动故障是一个系统性的过程,通常涉及内核日志、硬件状态、模块加载、源码/配置等多个层面。下面按通用排查流程 + 常用工具 + 典型场景来说明。
在深入驱动前,先排除非驱动因素:
lspci -nn
lsusb
lshw
dmesg | tail
ip link
ls /dev
驱动问题 90% 能从日志看到线索。
dmesg -T
journalctl -k
常见关键字:
errorfailedtimeoutprobe failedno such deviceresource busydmesg -w
# 或
journalctl -f -k
lsmod | grep xxx
modinfo xxx
关注:
authorversiondependsparm(模块参数)sudo modprobe -v xxx
sudo modprobe -rv xxx
报错通常会直接显示原因。
lspci -k -nn
示例:
Kernel driver in use: iwlwifi
Kernel modules: iwlwifi
lsusb -t
echo "0000:03:00.0" > /sys/bus/pci/drivers/xxx/unbind
echo "0000:03:00.0" > /sys/bus/pci/drivers/yyy/bind
ls /sys/class/
cat /sys/class/net/eth0/operstate
mount | grep debugfs
cat /sys/kernel/debug/xxx/status
cat /proc/interrupts
cat /proc/iomem
可能原因:
排查:
modprobe xxx
dmesg | tail
检查固件:
dmesg | grep firmware
ls /lib/firmware
journalctl -b -1 -k
crashkernel + kdumpcat /proc/interrupts
echo -n 'file xxx.c +p' > /sys/kernel/debug/dynamic_debug/control
dump_stack()WARN_ON()trace-cmd record -p function -l xxx_*
先看设备 → 再看日志 → 再看模块 → 再看绑定 → 最后看代码
如果你愿意,可以告诉我:
我可以给你更针对性的排查步骤。