如何找出哪个内核模块(如inputlsmod所示)正在为/ dev中的特定设备提供服务?
换句话说,假设我有一个设备,/ dev / mouse0,我想知道哪个内核模块被安装来为该设备提供服务。 我怎么做?
另一种看待这个问题的方法是,一些加载的内核模块将自己与/ dev中的一个设备相关联。 如何找出模块“连接”到哪个设备?
如果您使用的是2.6内核,通常可以通过/sys来查找这些信息。
例如
$ 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
所以在这种情况下,司机是usbhid 。 可能有一个更好/更干净的方法,但是我发现在sysfs中进行挖掘通常可以完成这项工作。
不知道这是否有助于find该模块(虽然它应该),但您可以使用lsof来查看访问特定设备文件的内容。 例如lsof /dev/mouse0 ,尽pipe你可以使用lsof的命令行选项做更多的事情
更多关于如何使用lsof例子http://wikis.sun.com/pages/viewpage.action?pageId=49906332