2010-05-26 15 views

Respuesta

22

Respuesta corta:

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

Cada dispositivo se asocia generalmente con un conductor, y esto es todo lo que el "modelo de dispositivo" se trata. El sistema de archivos sysfs contiene una representación de estos dispositivos y su controlador asociado. Desafortunadamente, parece que no todos los sysfs tienen una representación de los nodos del dispositivo, por lo que esto solo se aplica si su directorio/sys contiene un directorio/dev. Tomemos un ejemplo, con /dev/video0

en mi tablero, ls -al /dev/video0 salida es

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

número tan principal es 81 y el número menor es buceo 0. Vamos a sysfs:

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

El directorio sys/dev contiene la entrada para los dispositivos de char y bloque del sistema:

# 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 

¿Qué demonios son estos enlaces con nombres extraños? ¿Recuerdas el número mayor y menor, 81 y 0? Vamos a seguir este enlace:

#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 

Ahora podemos ver que este movimiento de cabeza dispositivo, que es como se presenta el dispositivo de espacio de usuario, se asocia con un dispositivo de núcleo. Esta asociación se realiza a través de un enlace. Si seguimos este enlace, terminamos en un directorio, con un enlace de controlador. El nombre del controlador es por lo general el nombre del módulo:

# 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 

Así que aquí el nombre del módulo es vpfe_capture

+0

eso es una gran explicación, gracias! –

2

La respuesta a esta pregunta probablemente sea diferente en función de una serie de factores. Por ejemplo, si está ejecutando udev, devfs, pre-devfs, etc.

Si está utilizando Ubuntu (u otra distribución igualmente moderna) el comando udevadm podría ser lo que desea.

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

lo tanto, mi/dev/cdrom es proporcionada por el controlador sr, que reside en el módulo sr_mod núcleo. No sé de un comando que tome /dev/cdrom como argumento e imprima sr_mod como salida.

Cuestiones relacionadas