2010-05-26 13 views

Odpowiedz

22

Krótka odpowiedź:

cd /sys/dev/char/major:minor/device/driver/ 
ls -al | grep module 

Każde urządzenie jest na ogół związane z kierowcą, a to wszystko, co „model urządzenia” chodzi. System plików sysfs zawiera reprezentację tego urządzenia i związanego z nimi sterownika. Niestety, wygląda na to, że nie wszystkie sysf mają reprezentację węzłów urządzeń, więc to ma zastosowanie tylko wtedy, gdy katalog/sys zawiera katalog/dev. Weźmy przykład z /dev/video0

na moim pokładzie, ls -al /dev/video0 wyjście jest

crw------- 1 root  root  81, 0 Jan 1 00:00 video0 

Więc główny numer to 81 i minor liczba jest nurkowanie 0. Przejdźmy do sysfs:

# cd /sys 
# ls 
block  class  devices fs  module 
bus  dev  firmware kernel 

Katalog sys/dev zawiera wpis dla znaków i urządzeń blokowych systemu:

# 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 

Co to do cholery łączy z obcymi imionami? Zapamiętaj główny i podrzędny numer 81 i 0? Niech ten link:

#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 

Teraz widzimy, że to ukłon urządzenie, które jest, w jaki sposób urządzenie jest prezentowane w przestrzeni użytkownika, jest związany z urządzeniem jądra. To powiązanie jest tworzone za pomocą linku. Jeśli klikniemy ten link, znajdziemy się w katalogu z linkiem sterownika. Nazwa sterownika jest zazwyczaj nazwa modułu:

# 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 

Więc nazwa modułu jest vpfe_capture

+0

Ów wielki wyjaśnienia, dzięki! –

2

Odpowiedź na to pytanie jest najprawdopodobniej różna w zależności od wielu czynników. Na przykład, jeśli używasz udev, devfs, pre-devfs, itp.

Jeśli używasz Ubuntu (lub innej równie nowoczesnej dystrybucji), polecenie udevadm może być tym, czego potrzebujesz.

% udevadm info -q path -n /dev/cdrom 
/devices/pci0000:00/0000:00:1f.1/host3/target3:0:0/3:0:0:0/block/sr0 

Więc moje/dev/cdrom jest przez kierowcę sr, który rezyduje w module jądra sr_mod. Nie wiem o poleceniu, które przyjmuje argument /dev/cdrom i drukuje jako wynik wyjściowy sr_mod.

Powiązane problemy