¿Cómo funcionan los controladores de Linux y dónde los encuentro? (especialmente controlador NIC)

11

Me pregunto cómo funciona un controlador en Linux. ¿Los controladores son un solo archivo que se puede editar? ¿Existe una lista de controladores actuales en uso o hay un lugar diferente para encontrarlos para cada dispositivo?

Estoy especialmente interesado en aprender sobre el controlador de mi adaptador de red.

Si sabes dónde está una buena documentación, me encantaría leerla también.

Usagi
fuente

Respuestas:

6

Los controladores son muy similares a cualquier otro programa, pueden estar compuestos por múltiples archivos fuente. Los controladores de dispositivos Linux se pueden compilar directamente en el núcleo o en un módulo del núcleo. Los módulos del núcleo tienen la ventaja de poder cargarse dinámicamente (es decir, no necesita compilar un nuevo núcleo para usarlos).

Obviamente, siempre puede mirar el código fuente de Linux, pero al principio puede ser una tarea desalentadora. Sin embargo, como con cualquier cosa en los controladores de Linux, hay archivos. Eso significa que otros programas acceden a ellos a través de la interfaz VFS. Por ejemplo, puede controlar el CDROM a través de ioctl()llamadas utilizando su archivo de dispositivo.

Recomiendo encarecidamente revisar los controladores de dispositivo Linux . Está disponible gratuitamente y responderá a sus preguntas. En particular, puede leer el capítulo 2 que le muestra cómo crear un módulo simple "Hello, Kernel". Puede ser mucho más de lo que está pidiendo, pero puede leer los fragmentos que le interesan. Y es gratis. ;PAG

Sr. Shickadance
fuente
3

Los controladores de Linux están construidos con el núcleo, compilados en o como un módulo. Alternativamente, los controladores pueden construirse contra los encabezados del núcleo en un árbol fuente. Puede ver una lista de los módulos del kernel actualmente instalados escribiendo lsmody, si está instalado, eche un vistazo a la mayoría de los dispositivos conectados a través del bus lspci.

Si la versión actual del kernel no tiene soporte para controladores para su NIC, necesitará encontrar controladores en el proveedor y deberá compilar un módulo de kernel desde la fuente (contra los encabezados de su kernel).

Sean C.
fuente
1

La mayoría de las veces, si algo como su NIC no se muestra automáticamente, debe ir al sitio del fabricante del hardware y ver si tienen una versión de Linux.

En términos más generales, los controladores de Linux tienden a tomar la forma de bibliotecas o módulos.

rfelsburg
fuente