Che cos'è il "firmware" nella terminologia Linux?


15

Sono confuso dall'uso del firmware nel contesto di Linux.

La mia comprensione di firmware e driver è che il firmware è il codice che gira sul metallo nudo di un dispositivo come un CI Bluetooth, un controller tastiera, una scheda video o un microcontrollore monouso. Il firmware espone un'interfaccia per il sistema operativo per utilizzare i suoi servizi.

Il driver, in confronto, è il software che il kernel usa per comunicare con le interfacce precedentemente menzionate fornite dal firmware. Pertanto, un driver video, un driver tastiera, un driver radio bluetooth.

Allora perché continuo a leggere sui file del firmware Linux che devono essere installati (ad es. Qui ). Questi vengono caricati nell'hardware? Questi file sono usati dal kernel? Qual è il significato del firmware in questo contesto?


1
In generale: il software è un programma. L'hardware è un dispositivo fisico. Il firmware è un programma integrato in hardware; tipicamente allo scopo di configurare come funziona l'hardware (quindi è una specie di tra software e hardware, proprio come 'fermo' è tra 'morbido' e 'duro' su una scala senza contrappesi). Generalmente, il firmware è indipendente dal sistema operativo (ad esempio, la configurazione RAID su un controller RAID SCSI).
DopeGhoti,

Solo per aggiungere al commento di DopeGhoti, molti dispositivi ora consentono il caricamento del firmware live rendendoli più flessibili / evolutivi delle implementazioni fisse.
Julie Pelletier,

1
@DopeGhoti non solo configura l'hardware, ma gira sull'hardware. Alcuni firmware sono davvero molto complessi e fondamentalmente eseguono un mini-OS.
Stephen Kitt,

Sono d'accordo, anche se affermerei che il "software integrato nell'hardware" implica che l'hardware è quello su cui viene eseguito il software. (:
DopeGhoti

Risposte:


22

Nel contesto del kernel Linux, il firmware è un software che gira su un altro processore nel sistema, ad esempio un controller wireless, una GPU, un controller SCSI ... Questo software era archiviato nella ROM (di vari tipi) collegata al controller pertinente , ma per ridurre i costi e semplificare gli aggiornamenti, i controller ora tendono a fare affidamento sul sistema operativo host per caricare il proprio firmware.

Quindi i file del firmware non vengono utilizzati dal kernel, ma caricati dal kernel su altri componenti hardware. Questo è anche ciò che rende vagamente accettabile avere software senza codice sorgente nei sistemi FLOSS: l'argomento dice che non è in esecuzione sulla CPU principale ma su un altro dispositivo.


1
Sei molto benevolo con il tuo uso di "vagamente accettabile".
Rui F Ribeiro,

2
Non tutti possono essere RMS.
DopeGhoti,

Questo non è solo nel contesto del kernel Linux, è una definizione abbastanza generale di "firmware" nel contesto di un sistema multiprocessore.
Gilles 'SO- smetti di essere malvagio' il

Quindi / etc / lib / firmwares contiene effettivamente firmware e non driver caricati dal kernel all'avvio? Ma il controller wireless e le schede grafiche hanno la propria ROM con un firmware masterizzato dal produttore.
defalt il

3
@defalt yes, /lib/firmware(singolare, no /etc) contiene il firmware utilizzato da altri dispositivi. Molti dispositivi (inclusi controller wireless e GPU) necessitano del firmware fornito dal sistema host, anche se potrebbero avere la propria ROM (o flash) contenente il firmware.
Stephen Kitt,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.