在Linux系统中,驱动程序相关的文件通常分布在以下几个关键目录中:
1. 已加载的驱动模块(动态加载)
路径: /lib/modules/$(uname -r)/kernel/
例如:/lib/modules/5.15.0-76-generic/kernel/drivers/
说明:
这里存放当前内核版本(通过uname -r查看)的可加载内核模块(.ko文件)。
子目录按功能分类,如net/、usb/、gpu/等。
2. 设备树(Device Tree)
路径: /proc/device-tree/ 或 /sys/firmware/devicetree/base/
说明:
嵌入式系统(如ARM)使用设备树描述硬件,驱动可能依赖这些.dtb文件。
3. 内核源码中的驱动代码
路径: /usr/src/linux-$(uname -r)/drivers/
说明:
如果安装了内核源码,驱动源代码会在此目录下。
需要安装linux-headers包(如apt install linux-headers-$(uname -r))。
4. 运行时驱动信息
路径: /sys/class/ 和 /sys/bus/
说明:
/sys/class/: 按设备类型(如net/、block/)显示已注册设备。
/sys/bus/: 按总线类型(如pci/、usb/)显示驱动和设备绑定状态。
5. 用户空间驱动(如UIO或FUSE)
路径: /usr/lib/driver/ 或 /usr/local/lib/driver/
说明:
部分用户态驱动可能存放在此类目录。
常用命令工具
查看已加载模块:
bash
lsmod # 列出已加载模块
modinfo <模块名> # 查看模块详细信息
搜索驱动文件:
bash
find /lib/modules/$(uname -r) -name "*.ko" | grep <关键词>
注意事项
权限问题: 访问某些目录(如/sys/)可能需要root权限。
驱动类型: 内置驱动(编译进内核)没有单独的.ko文件,需通过内核配置查看。
如果需要进一步定位特定驱动,请提供硬件名称或驱动功能描述。