Estoy confundido por el uso de firmware en el contexto de Linux.
Entiendo que el firmware y el controlador es que el firmware es el código que se ejecuta en el metal desnudo de un dispositivo, como un IC de Bluetooth, un controlador de teclado, una tarjeta de video o un microcontrolador de un solo propósito. El firmware expone una interfaz para que el sistema operativo use sus servicios.
El controlador, en comparación, es el software que el núcleo utiliza para comunicarse con las interfaces mencionadas anteriormente proporcionadas por el firmware. Por lo tanto, un controlador de video, un controlador de teclado, un controlador de radio bluetooth.
Entonces, ¿por qué sigo leyendo sobre la necesidad de instalar archivos de firmware de Linux (por ejemplo, aquí ). ¿Estos se cargan en el hardware? ¿Son estos archivos utilizados por el núcleo? ¿Cuál es el significado del firmware en este contexto?
Respuestas:
En el contexto del kernel de Linux, el firmware es un software que se ejecuta en otro procesador del sistema, por ejemplo , un controlador inalámbrico, una GPU, un controlador SCSI ... Este software solía almacenarse en una ROM (de varios tipos) conectada al controlador correspondiente , pero para reducir los costos y simplificar las actualizaciones, los controladores ahora tienden a depender del sistema operativo host para cargar su firmware.
De modo que el núcleo no utiliza los archivos de firmware, sino que los carga el núcleo en otras piezas de hardware. Esto también es lo que hace que sea vagamente aceptable tener software sin código fuente en los sistemas FLOSS: el argumento dice que no se está ejecutando en la CPU principal sino en otro dispositivo.
fuente
/lib/firmware
(singular, no/etc
) contiene firmware utilizado por otros dispositivos. Muchos dispositivos (incluidos los controladores inalámbricos y las GPU) necesitan el firmware proporcionado por el sistema host, a pesar de que pueden tener su propia ROM (o flash) que contiene el firmware.