tagger tag puddletag mp3tag mac kid3 editar easytag comandos cluster linux linux-device-driver

linux - mp3tag - puddletag



Linux: ¿cómo puedo saber el módulo que exporta un nodo de dispositivo? (2)

La respuesta a esta pregunta es muy probablemente 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 usted 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

Entonces, mi / dev / cdrom es proporcionado por el controlador sr , que reside en el módulo del kernel sr_mod . No conozco un comando que tome /dev/cdrom como argumento e imprima sr_mod como salida.

Si tengo un nodo de dispositivo / dev y sus números mayor / menor, ¿cómo sé el nombre del módulo del núcleo que exportó este nodo?


Respuesta corta :

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

En general, cada dispositivo está asociado con un controlador, y de eso se trata el "modelo de dispositivo". El sistema de archivos sysfs contiene una representación de estos dispositivos y su controlador asociado. Desafortunadamente, parece que no todos los sistemas tienen una representación de los nodos del dispositivo, por lo que esto se aplica solo si su directorio / sys contiene un directorio / dev. Tomemos un ejemplo, con /dev/video0

En mi tablero, la salida de ls -al /dev/video0 es

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

Entonces, el número mayor es 81 y el número menor es 0. Vayamos a sysfs:

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

El directorio sys/dev contiene una entrada para los dispositivos char y block 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? Sigamos 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 dispositivo asiente, que es la forma en que se presenta el dispositivo al espacio de usuario, está asociado con un dispositivo de kernel. 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 suele ser 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