web-dev-qa-db-ja.com

どのカーネルモジュールが/ devデバイスにサービスを提供しているかを知るにはどうすればよいですか?

/ dev内の特定のデバイスにサービスを提供しているカーネルモジュール(lsmodと入力して表示)を確認するにはどうすればよいですか?

つまり、デバイス/ dev/mouse0があり、そのデバイスにサービスを提供するためにインストールされているカーネルモジュールを確認したいとします。それ、どうやったら出来るの?

これを確認する別の方法は、ロードされたカーネルモジュールの一部が/ dev内のデバイスに関連付けられていることです。モジュールが「接続」されているデバイスをどのように見つけるのですか?

8
regulatre

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を掘り下げると通常は仕事が終わります。

10
James

これがモジュールの検索に役立つかどうかはわかりませんが(必要ですが)、lsofを使用して、特定のデバイスファイルにアクセスしているものを確認できます。 lsof /dev/mouse0たとえば、lsofのコマンドラインオプションでさらに多くのことができます

lsofのその他の使用例 http://wikis.Sun.com/pages/viewpage.action?pageId=49906332

0
cpbills