Si tienes un nodo del dispositivo/dev y sus números mayor/menor, ¿cómo sé el nombre del módulo del kernel que exportó este nodo?Linux: ¿cómo sé el módulo que exporta un nodo de dispositivo?
Respuesta
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
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.
- 1. ¿Cómo crear un nodo de dispositivo a partir del código init_module de un módulo kernel de Linux?
- 2. ¿Cómo se crea un dispositivo virtual io en Linux que transmite datos a un dispositivo real?
- 3. ¿Cómo sé que mi aplicación está desinstalada del dispositivo ...?
- 4. Linux de programación: el dispositivo que un archivo está en
- 5. Encuentra el paquete OSGI que exporta un paquete?
- 6. Cómo codificar un módulo kernel de Linux?
- 7. ¿Cómo sé qué puerto serie usar en Linux?
- 8. Eclipse que exporta JAR en WAR
- 9. ¿Cómo debo pasar opciones a un módulo de nodo?
- 10. ¿Cómo crear un dispositivo en/dev automáticamente al cargar el módulo kernel para un controlador de dispositivo?
- 11. Linux: Cómo asignar controlador USB al dispositivo
- 12. Tarea periódica en un módulo de kernel de Linux
- 13. ¿Cómo puedo ejecutar comandos de Linux en un dispositivo Android?
- 14. módulo de Drupal, comprobar si el tipo de nodo
- 15. Makefile para el módulo kernel de Linux?
- 16. Qt: ¿Cómo crear DLL de Windows (que exporta funciones)?
- 17. ¿Forma estándar de desarrollar un módulo de nodo usando Coffeescript?
- 18. cómo sé qué versión del módulo de reescritura de URL de IIS7 está instalado
- 19. Cómo determinar si un módulo específico está cargado en el núcleo de Linux
- 20. No sé cómo hacer que __slots__ funcione
- 21. En Django, ¿cómo sé el usuario que está conectado actualmente?
- 22. ¿Cómo leer/escribir archivos dentro de un módulo kernel de Linux?
- 23. ¿Cómo cargar automáticamente un módulo kernel en Gentoo Linux?
- 24. Nodo v0.8.5 REPL: No se puede encontrar el módulo al requerir el módulo npm instalado
- 25. Escribiendo un archivo que tiene el nombre de un dispositivo
- 26. ¿Cómo se puede identificar el chipset de un dispositivo usb en Linux?
- 27. ¿Cómo sé cuál es el storeName de un certificado?
- 28. Haciendo que un módulo herede de otro módulo en Ruby
- 29. ¿Cómo puedo escribir un módulo iOS que crea tickets JIRA?
- 30. Módulo Python OCR en Linux?
eso es una gran explicación, gracias! –