Wie kann ich feststellen, welches Kernelmodul ein / dev-Gerät wartet?

8

Wie finde ich heraus, welches Kernelmodul (wie durch Eingabe von lsmod gesehen) ein bestimmtes Gerät in / dev wartet?

Mit anderen Worten, sagen wir, ich habe ein Gerät, / dev / mouse0, und ich möchte herausfinden, welches Kernelmodul installiert ist, um dieses Gerät zu warten. Wie mache ich das?

Eine andere Möglichkeit, dies zu betrachten, besteht darin, dass sich einige geladene Kernelmodule einem Gerät in / dev zuordnen. Wie findet man heraus, an welche Geräte ein Modul "angeschlossen" ist?

regulatre
quelle
Es ist besser , zu reden über Kernel - Treiber statt Kernel - Modul , wie ein Kernel - Treiber kann sowohl integrierte und als Modul eingebaut werden, aber das hat keinen Einfluss auf die Fahrer fahren ein Gerät.
Diego

Antworten:

10

Normalerweise finden Sie diese Informationen, /syswenn Sie sich in einem 2.6-Kernel befinden.

z.B

$ 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

Der Fahrer ist also in diesem Fall usbhid. Es gibt vielleicht eine bessere / sauberere Möglichkeit, dies zu tun, aber ich finde, dass das Graben in sysfs normalerweise die Arbeit erledigt.

James
quelle
0

Ich bin mir nicht sicher, ob dies beim Auffinden des Moduls hilfreich ist (obwohl dies der Fall sein sollte), aber Sie können lsofdamit sehen, was auf die jeweilige Gerätedatei zugreift. lsof /dev/mouse0Zum Beispiel können Sie mit den Befehlszeilenoptionen für lsof mehr tun

Weitere Beispiele für die Verwendung von lsof http://wikis.sun.com/pages/viewpage.action?pageId=49906332

cpbills
quelle
2
lsof zeigt Ihnen nicht den Namen des Moduls an. lsof zeigt nur an, in welchen Userspace-Programmen der Geräteknoten geöffnet ist.
James