如何判断哪个内核模块正在为 /dev 设备提供服务?

reg*_*tre 8 linux drivers kernel-modules device

如何找出哪个内核模块(通过键入 lsmod 可以看到)正在为 /dev 中的特定设备提供服务?

换句话说,假设我有一个设备 /dev/mouse0 并且我想找出安装了哪个内核模块来为该设备提供服务。我怎么做?

另一种看待这个问题的方法是,一些加载的内核模块将它们自己与 /dev 中的设备相关联。如何找出模块“连接”到哪个设备?

Jam*_*mes 10

/sys如果您使用的是 2.6 内核,通常可以通过挖掘来找到此信息。

例如

$ ls -la /dev/input/mouse1   
crw-r----- 1 root root 13, 33 2010-03-08 15:56 /dev/input/mouse1
$ ls -la /sys/class/input/mouse1/device/driver 
lrwxrwxrwx 1 root root 0 2010-05-12 23:33 /sys/class/input/mouse1/device/driver -> ../../../../../../bus/usb/drivers/usbhid
Run Code Online (Sandbox Code Playgroud)

所以在这种情况下的驱动程序是usbhid. 可能有更好/更整洁的方法来做到这一点,但我发现在 sysfs 中挖掘通常可以完成工作。