En Linux, dado:
- un dispositivo, por ejemplo
/dev/sda, - y sus números mayores y menores, por ejemplo
8, 0,
¿Cómo puedo saber qué módulo / controlador lo está "manejando"?
¿Puedo profundizar /syso /procdescubrir eso?
linux
drivers
kernel-modules
Totor
fuente
fuente

lsmod,/proc/modulesymodinfo?Respuestas:
Para obtener esta información de
sysfsun archivo de dispositivo, primero determine el número mayor / menor mirando la salida dels -l, p. Ej.El
8, 0nos dice que el número mayor es8y el menor es0. Albprincipio de la lista también nos dice que es un dispositivo de bloque. Otros dispositivos pueden tener uncdispositivo para caracteres al comienzo.Si luego mira debajo
/sys/dev, verá que hay dos directorios. Uno llamóblocky otro llamóchar. La obviedad aquí es que estos son para dispositivos de bloque y de caracteres, respectivamente. Cada dispositivo es accesible por su número mayor / menor es este directorio. Si hay un controlador disponible para el dispositivo, puede encontrarlo leyendo el objetivo deldriverenlace en este o en eldevicesubdirectorio. Por ejemplo, para mi/dev/sdasimplemente puedo hacer:Esto muestra que el
sdcontrolador se utiliza para el dispositivo. Si no está seguro de si el dispositivo es un dispositivo de bloque o de caracteres, en el shell simplemente puede reemplazar esta parte con a*. Esto funciona igual de bien:También se puede acceder a los dispositivos de bloque directamente a través de su nombre a través de
/sys/blocko/sys/class/block. P.ej:Tenga en cuenta que la existencia de varios directorios
/syspuede cambiar según la configuración del kernel. Además, no todos los dispositivos tienen unadevicesubcarpeta. Por ejemplo, este es el caso de los archivos de dispositivos de partición como/dev/sda1. Aquí debe acceder al dispositivo para todo el disco (desafortunadamente no haysysenlaces para esto).Una última cosa que puede ser útil es enumerar los controladores para todos los dispositivos para los que están disponibles. Para esto, puede usar globos para seleccionar todos los directorios en los que están presentes los enlaces del controlador. P.ej:
Finalmente, para divergir un poco de la pregunta,
/sysagregaré otro truco global para obtener una perspectiva mucho más amplia sobre qué controladores están siendo utilizados por qué dispositivos (aunque no necesariamente aquellos con un archivo de dispositivo):Actualizar
Mirando más de cerca el resultado de
udevadm, parece funcionar al encontrar el/sysdirectorio canónico (como lo haría si desreferenciara los directorios principales / secundarios anteriores), luego avanza hacia arriba en el árbol de directorios, imprimiendo cualquier información que encuentre. De esta forma, obtiene información sobre los dispositivos principales y los controladores que utilizan también.Para experimentar con esto, escribí el script a continuación para recorrer el árbol de directorios y mostrar información en cada nivel relevante.
udevparece buscar archivos legibles en cada nivel, con sus nombres y contenidos incorporadosATTRS. En lugar de hacer esto, muestro el contenido de losueventarchivos en cada nivel (aparentemente la presencia de esto define un nivel distinto en lugar de solo un subdirectorio). También muestro el nombre base de cualquier enlace de subsistema que encuentre y esto muestra cómo encaja el dispositivo en esta jerarquía.udevadmno muestra la misma información, por lo que esta es una buena herramienta complementaria. La información del dispositivo principal (por ejemplo,PCIinformación) también es útil si desea hacer coincidir la salida de otras herramientas, comolshwdispositivos de nivel superior.fuente
udevadmrespuesta te darásdyahci. ¿Hay alguna manera de determinar si tambiénahcise está utilizando?device/device/, por lo que mireadlinkcomando se parecíareadlink /sys/dev/char/XX\:Y/device/device/driver.Puedes usar la
udevadmherramienta para descubrir esto.El comando sería
udevadm info -a -n /dev/sda, y luego mira losDRIVER==parámetros.Esto muestra que en realidad hay 2 controladores involucrados en la provisión de este dispositivo,
sdyahci. El primero,sdes directamente responsable del/dev/sdadispositivo, pero utiliza elahcicontrolador subyacente.El resultado del
udevadmcomando tiene este aspecto e incluye una descripción de cómo funciona.fuente
udevadmse elimina (o incluso se recomienda)? No puedo encontrar nada ni siquiera dando una pista sobre eso.Utilice el comando hwinfo y el modelo de salida y el controlador. Si no hay controlador, no se mostrará. Por ejemplo para discos:
Para tarjetas de red:
Para dispositivos USB:
Use hwinfo --help para averiguar qué otros tipos de dispositivos puede consultar. hwinfo se instala de manera predeterminada, por ejemplo, en SUSE Linux.
fuente
--onlyopción. Por ejhwinfo --block --only /dev/sda | grep ....lshwes una herramienta increíble para enumerar el hardware que se encuentra en su máquina. Deberá instalarlo primero antes de ejecutarlo.Use
yumoapt-getdependiendo del sistema que esté usando. Luego, para enumerar específicamente el hardware de almacenamiento:Es posible que desee ejecutarlo
rootpara recuperar toda la información.De lo contrario,
lspcitambién puede dar información sobre su hardware:Para averiguar el número mayor y menor de un dispositivo, simplemente ejecútelo
ls.En este producto, el
benbrw-rw----.significa que este es un dispositivo de bloque. Los dígitos8y0son, respectivamente, el número mayor y menor del dispositivo.fuente
lshwylspcipuede ver el módulo utilizado por un dispositivo: configuración: driver = ahci latencia = 0 y controlador Kernel en uso: ahci .