3.6. Configurazione di hardware e sistema operativo prima dell'installazione

In alcuni casi, prima di installare Debian, potrebbe essere necessario riconfigurare dell'hardware, in questa sezione è descritto cosa fare. Generalmente si tratta di controllare e, nel caso, di modificare le impostazioni del BIOS/firmware di sistema. Il «BIOS» o «firmware di sistema» è il software essenziale per il funzionamento dell'hardware, il suo utilizzo è critico durante il processo di bootstrap (che segue l'accensione).

3.6.1. ARM firmware

Come già menzionato in precedenza, sui sistemi ARM non esiste un firmware standard, persino il comportamento di sistemi che nominalmente usano lo stesso firmware può essere abbastanza differente. Ciò dipende dal fatto che gran parte dei dispositivi che utilizzano l'architettura ARM sono sistemi embedded per i quali il produttori realizzano versioni del firmware pesantemente personalizzate con patch specifiche per il dispositivo. Purtroppo è molto raro che i produttori inviino le proprie modifiche a chi sviluppa il firmware originale e quindi le modifiche fatte dai produttori non sono integrate nelle nuove versioni ufficiali del firmware.

Di conseguenza persino i sistemi appena usciti sul mercato utilizzano del firmware basato su una versione vecchia e personalizzata dal produttore del firmware originale che nel frattempo è stato migliorato dagli sviluppatori: aggiungendo funzionalità o cambiandone alcuni aspetti. Inoltre, anche il nome dei dispositivi montati non è consistente tra le versioni modificate dai produttori dello stesso firmware e quindi per i sistemi ARM è impossibile fornire istruzioni d'uso indipendenti dal prodotto.

3.6.2. Impostazione dell'indirizzo MAC in U-Boot

L'indirizzo MAC di ogni dispositivo Ethernet normalmente dovrebbe essere unico a livello mondiale e tecnicamente deve essere unico all'interno del dominio di broadcast ethernet. Per ottere questo risultato chi produce i dispositivi si fa assegnare un blocco di indirizzi MAC (e per questo paga una tassa) e preimposta uno di questi indirizzi su ogni dispositivo.

Nel caso delle schede di sviluppo, alcuni produttori vogliono non pagare questa tassa e quindi forniscono dispositivi che non hanno un indirizzo MAC univoco. In questo caso devono essere gli utenti a definire gli indirizzi MAC dei propri sistemi. Quando non è definito un indirizzo MAC, alcuni driver di rete ne generano uno casuale che cambia a ogni riavvio, in questo caso l'accesso alla rete funziona anche senza che l'utente abbia impostato un indirizzo MAC ma, per esempio, l'assegnazione semi-statica di indirizzi IP su DHCP in base all'indirizzo MAC del client che fa la richiesta non funziona in modo affidabile.

Per evitare conflitti con gli indirizzi MAC assegnati ufficialmente, c'è un insieme di indirizzi che è riservato agli indirizzi «locally administered» (amministrati localmente). È definito dal valore di due bit del primo byte dell'indirizzo (l'articolo in lungua inglese «MAC Address» su Wikipedia dà una buona spiegazione). In pratica vuol dire che, per esempio, tutti gli indirizzi che iniziano con il valore esadecimale ca (come ca:ff:ee:12:34:56) può essere usato come un indirizzo amministrato localmente.

Per i sistemi che utilizzano U-Boot come firmware di sistema, l'indirizzo MAC ethernet è salvato nella variabile d'ambiente «ethaddr»; è possibile controllarne il valore dal prompt di U-Boot con il comando «printenv ethaddr» e può essere cambiato con il comando «setenv ethaddr ca:ff:ee:12:34:56». Dopo aver impostato il nuovo valore, usare il comando «saveenv» per rendere permanente la modifica.

3.6.3. Problemi di rilocazione del Kernel/Initrd/Device-Tree con U-Boot

È possibile che su alcuni sistemi con vecchie versioni di U-Boot si verifichino durante il processo d'avvio dei problemi con la rilocazione in memoria del kernel Linux, del ramdisk iniziale e del device-tree blob. In questo caso, U-Boot mostra il messaggio «Starting kernel ...» e poi il sistema si blocca senza altri messaggi. Questi problemi sono stati risolti nelle versioni di U-Boot successive alla v2014.07.

Questo problema potrebbe comunque verificarsi anche se il sistema era originariamente equipaggiato con una versione di U-Boot precedente alla v2014.07 e, in seguito, è stato aggiornato a una versione più recente. Infatti l'aggiornamento di U-Boot solitamente non modifica le variabili d'ambiente esistenti ma la correzione richiede l'impostazione della nuova variabile d'ambiente (bootm_size) che viene creata automticamente solo sulle nuove installazioni quindi senza variabili d'ambiente esistenti. È possibile impostare manualmente bootm_size al suo valore predefinito eseguendo il comando «env default bootm_size; saveenv» dal promnpt di U-Boot.

Un'altra possibilità per prevenire problemi legati alla rilocazione è eseguire il comando «setenv fdt_high ffffffff; setenv initrd_high 0xffffffff; saveenv» dal prompt di U-Boot per disattivare completamente la rilocazione del ramdisk iniziale e del device-tree blob.