¿Qué es el "firmware" en la terminología de Linux?

15

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?

wopwop
fuente
1
En términos generales: el software es un programa. El hardware es un dispositivo físico. El firmware es un programa integrado en el hardware; típicamente con el propósito de configurar cómo funciona el hardware (por lo que es algo así como entre software y hardware, al igual que 'firme' está entre 'suave' y 'duro' en una escala de contundente). En general, el firmware no depende del sistema operativo (por ejemplo, la configuración RAID en un controlador RAID SCSI).
DopeGhoti
Solo para agregar al comentario de DopeGhoti, muchos dispositivos ahora permiten la carga de firmware en vivo, lo que los hace más flexibles / evolutivos que las implementaciones fijas.
Julie Pelletier el
1
@DopeGhoti no solo configura el hardware, sino que se ejecuta en el hardware. Algunos firmware son muy complejos y básicamente ejecutan un mini-OS.
Stephen Kitt el
Estoy de acuerdo, aunque afirmaría que "software integrado en el hardware" implica que el hardware es aquel sobre el que se ejecuta dicho software. (:
DopeGhoti

Respuestas:

22

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.

Stephen Kitt
fuente
1
Estás siendo muy benevolente con tu uso de "vagamente aceptable".
Rui F Ribeiro
2
No todos pueden ser RMS.
DopeGhoti
Eso no es solo en el contexto del kernel de Linux, es una definición bastante general de "firmware" en el contexto de un sistema multiprocesador.
Gilles 'SO- deja de ser malvado'
Entonces, ¿ / etc / lib / firmwares realmente contiene firmwares y no controladores cargados por el núcleo en el arranque? Pero el controlador inalámbrico y las tarjetas gráficas tienen su propia ROM con un firmware grabado por el fabricante.
Desactivar el
3
@defalt yes, /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.
Stephen Kitt