Il progetto Debian nell'ottobre 2022 ha preso la decisione di creare una nuova componente non-free-firmware del repository e di includere il suo contenuto nei supporti di installazione per il futuro rilascio Debian 12 (bookworm), per rendere le cose più semplici per i suoi utenti. Questa modifica è stata implementata in tempo per il rilascio bookworm alpha 2 del debian-installer nel febbraio 2023 e tutti i rilasci del d-i e le immagini giornaliere e settimanali da allora includono il firmware.
Per informazioni sui rilasci più vecchi, vedere "Rilasci più vecchi" più avanti in questa pagina.

Cosa è il firmware?

Il termine Firmware si riferisce a software embedded che controlla i dispositivi elettronici. Non esistono confini ben definiti tra il firmware e il software, in quanto entrambi i termini coprono una parte dello stesso codice. In genere il termine firmware ha a che fare con operazioni a basso livello su di un dispositivo, senza le quali esso sarebbe del tutto non funzionale... (Si può leggere di più su Wikipedia).

Molti dispositivi richiedono un firmware per funzionare. Storicamente, i firmware venivano incorporati nella ROM o nella memoria Flash del dispositivo, ma sempre più spesso un'immagine firmware deve essere caricata nella RAM del dispositivo dal driver di device durante l'inizializzazione.

Alcune immagini del firmware sono Free Software e Open Source, ma sfortunatamente la maggior parte è non-free, il che significa che Debian non può includerle nei normali archivi main o contrib.

Usare firmware non libero in un sistema Debian

Debian 12 (bookworm) e successive

Da Debian 12 in avanti, tutti i binari di firmware non libero pacchettizzati che Debian può distribuire sono stati spostati in una nuova componente dell'archivio Debian chiamata non-free-firmware. Se si sta aggiornando da un rilascio più vecchio di Debian e si ha necessità di questi binari del firmware, si dovrebbe aggiornare sources.list di apt nel proprio sistema in modo che utilizzi questa nuova componente. Se si aveva abilitata la componente non-free nel proprio sistema solamente per essere in grado di installare il firmware, la si può rimuovere senza problemi.

L'installazione di Debian e le immagini live includono ora tutti i pacchetti del firmware. Il sistema dovrebbe automaticamente rilevare, caricare e installare il firmware disponibile per i dispositivi dell'utente, quando possibile. Esiste un piccolo numero di casi in cui Debian non può farlo, tipicamente perché non le è permesso di distribuire i binari necessari del firmware.

Se si sta avviando l'installatore Debian da rete, allora ciò non include tutti i pacchetti del firmware nell'initramfs. Questa è una scelta deliberata a causa dello spazio aggiuntivo necessario per tutto il firmware. Molti, se non la maggior parte degli utenti, dovranno già modificare l'initramfs quando impostano l'avvio da rete, quindi un passo da fare in più è ragionevole. Aggiungere i blob del firmware all'initramfs è facile: basta prendere l'archivio cpio corretto per il proprio rilascio desiderato da https://cdimage.debian.org/cdimage/firmware/ e aggiungerlo direttamente al file initramfs.

Rilasci più vecchi

Per Debian 11 (bullseye) e precedenti , Debian non includeva il firmware nelle immagini di installazione e live ufficiali. Le sezioni che seguono dovrebbero aiutare se si ha bisogno di firmware in esse.

Firmware durante l'installazione

In alcuni casi l'installatore rileva la necessità di firmware non-free e richiede all'utente di renderlo disponibile per il programma in modo da completare l'installazione. Ciò può succedere, ad esempio, con le schede di rete wireless che spesso richiedono firmware non libero per funzionare (per un esempio vedere ipw2200).

Immagini di installazione del firmware

Un metodo facile è quello di usare un'immagine di installatore che includa direttamente tutti i pacchetti del firmware. Vedere https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/

Firmware su supporti rimovibili

Si può anche scaricare l'archivio del firmware per la propria piattaforma, specialmente se si sta installando hardware con cui non si ha familiarità, e spacchettarlo in una directory di nome "firmware" nella directory radice di un dispositivo di archiviazione rimovibile (USB/CD). Quando l'installatore parte trova automaticamente i file nella directory del firmware sul supporto rimovibile e, se necessario, installa il firmware per l'hardware in uso. I collegamenti per scaricare il firmware per la propria versione di Debian sono in ?[[https://cdimage.debian.org/cdimage/firmware/]]. L'installatore all'avvio trova automaticamente i file del firmware nella directory nel supporto rimovibile e, se necessario, installa il firmware richiesto.

Il firmware fornito su supporti rimovibili può in alcuni casi non essere rilevato (es. 740503). In questa situazione passare in console (Ctrl+Alt+F2) e usare manualmente mount(8) per montare il proprio dispositivo rimovibile in una directory temporanea (es. "/media").

Firmware su supporti rimovibili e pressed

È anche possibile scavalcare il processo di ricerca e installazione dell'installatore usando i preseed e fornendo i file del firmware direttamente al kernel:

{{{Installation+Archive+USBStick preseed/early_command="modprobe vfat ; sleep 2 ; mount /dev/disk/by-label/FIRMWARE /media ; cp -a /media/firmware /lib" }}}

Una volta che la rete è configurata, l'installatore Debian può prelevare il firmware dai repository Debian.

Firmware dopo l'installazione

isenkram e altri strumenti possono suggerire di installare il firmware appropriato e altri pacchetti di supporto per l'hardware quando viene collegato dell'hardware. Questo si basa soprattutto sul fatto che i pacchetti dichiarino usando AppStream quale hardware supportano. Ciò potrebbe non funzionare per tutto il firmware, nel qual caso leggere sotto per un'altra soluzione.

Se si continuano a vedere messaggi in console riguardanti firmware mancante quando viene aggiornato l'initramfs (per esempio ogni volta che viene aggiornato il kernel):

W: Possible missing firmware /lib/firmware/i915/skl_guc_62.0.0.bin for module i915

allora si può usare apt-file o la ricerca del contenuto dei pacchetti Debian per cercare il pacchetto che contiene i file del firmware, installarlo e aggiornare l'initramfs:

$ apt-file search skl_guc_62.0.0.bin
firmware-misc-nonfree: /lib/firmware/i915/skl_guc_62.0.0.bin
$ sudo apt install firmware-misc-nonfree
$ sudo update-initramfs -c -k all

Firmware non presente in Debian

Se il firmware mancante non è disponibile in Debian o se si continuano a vedere in console messaggi su firmware mancante anche dopo avere installato il pacchetto firmware-* corretto, si può scaricare e installare il firmware dal repository linux-firmware, ad esempio per il firmware i915:

mkdir firmware
cd firmware
wget -r -nd -e robots=no -A '*.bin' --accept-regex '/plain/' https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915/
sudo mv *.bin /lib/firmware/i915/
sudo update-initramfs -c -k all

Posizione dei file del firmware

Debian 8 "Jessie" e successive

udev in Debian Jessie e successive controlla solamente una directory per trovare i file del firmware: /lib/firmware. Vedere il bug n.729252 per i dettagli.

Debian 7 "Wheezy", Debian 6.0 "Squeeze"

Il firmware viene cercato e caricato dalle seguenti posizioni (vedere /lib/udev/hotplug.functions e /lib/udev/firmware.agent di udev)

  1. /lib/firmware/`uname -r` - Firmware fornito da un pacchetto, specifico per un kernel

  2. /lib/firmware/ - Firmware fornito da un pacchetto, valido per tutti i kernel

  3. /usr/local/lib/firmware - Posizione per firmware installato manualmente

  4. /usr/lib/hotplug/firmware - Firmware fornito da un pacchetto, valido per tutti i kernel

Elenco dei firmware in Debian

Per scoprire quale pacchetto fornisce un dato firmware si può usare questa pagina:
https://www.debian.org/distrib/packages#search_contents

Firmware/List elenca il firmware distribuito da Debian.

Firmware dei computer

EFI/UEFI

Trovato nella maggior parte dei server e PC x86 moderni, oltre ad alcune schede ARM - (wikipedia)

BIOS

Trovato su macchine IBM-PC più vecchie, in genere la maggior parte dei server e PC regolari prodotti prima del 2011 - (wikipedia)

OpenFirmware

noto anche come OpenBoot, trovato su sistemi Sun SPARC, IBM Power, Apple Macintosh basati su PowerPC, IEEE 1275-1994, ... (wikipedia)

Coreboot (LinuxBIOS)

Può essere usato su alcune schede e testato in emulatori - (wikipedia)

PMON2000

Trovato sul Lemote Yeeloong e dispositivi embedded.

Aggiornare il firmware

Il firmware può essere aggiornato usando vari metodi.


CategoryPermalink | CategoryHardware | CategoryProprietarySoftware