Краткий ответ:
cd /sys/dev/char/major:minor/device/driver/
ls -al | grep module
Каждое устройство обычно связано с драйвером, и это все, что представляет собой «модель устройства». Файловая система sysfs
содержит представление этих устройств и связанных с ними драйверов. К сожалению, кажется, что не все sysfs имеют представление узлов устройства, поэтому это применимо, только если ваш каталог / sys содержит каталог / dev.
Давайте рассмотрим пример с /dev/video0
На моей плате ls -al /dev/video0
вывод
crw------- 1 root root 81, 0 Jan 1 00:00 video0
Итак, старший номер 81, а младший номер 0.
Давайте углубимся в sysfs:
# cd /sys
# ls
block class devices fs module
bus dev firmware kernel
Каталог sys/dev
содержит запись для char и block устройств системы:
# cd dev
# cd char
# ls
10:61 13:64 1:3 1:8 249:0 252:0 29:0 4:65 81:0 89:1
10:62 1:1 1:5 1:9 250:0 253:0 29:1 5:0 81:2
10:63 1:11 1:7 248:0 251:0 254:0 4:64 5:1 81:3
Какого черта эти ссылки со странными именами?
Помните старший и младший номер, 81 и 0?
Давайте перейдем по этой ссылке:
#cd major:minor (ie 81:0)
#ls -al
drwxr-xr-x 2 root root 0 Jan 1 01:56 .
drwxr-xr-x 3 root root 0 Jan 1 01:56 ..
-r--r--r-- 1 root root 4096 Jan 1 01:56 dev
lrwxrwxrwx 1 root root 0 Jan 1 01:56 device -> ../../../vpfe-capture
-r--r--r-- 1 root root 4096 Jan 1 01:56 index
-r--r--r-- 1 root root 4096 Jan 1 01:56 name
lrwxrwxrwx 1 root root 0 Jan 1 01:56 subsystem -> ../../../../../class/video4linux
-rw-r--r-- 1 root root 4096 Jan 1 01:56 uevent
Теперь мы можем видеть, что этот nod устройства, то есть то, как устройство представляется пользовательскому пространству, связан с устройством ядра. Эта ассоциация сделана через ссылку. Если мы перейдем по этой ссылке, мы окажемся в каталоге со ссылкой на драйвер. В качестве имени драйвера обычно используется название модуля:
# ls -al
drwxr-xr-x 3 root root 0 Jan 1 01:56 .
drwxr-xr-x 25 root root 0 Jan 1 00:00 ..
lrwxrwxrwx 1 root root 0 Jan 1 01:56 driver -> ../../../bus/platform/drivers/vpfe-capture
-r--r--r-- 1 root root 4096 Jan 1 01:56 modalias
lrwxrwxrwx 1 root root 0 Jan 1 01:56 subsystem -> ../../../bus/platform
-rw-r--r-- 1 root root 4096 Jan 1 01:56 uevent
drwxr-xr-x 3 root root 0 Jan 1 01:56 video4linux
Итак, здесь имя модуля vpfe_capture