Siccome non posso pretendere nulla da chi sta leggendo, se non lo sforzo stesso di leggere questo articolo, cercherò di rendervi la vita più comoda e darvi alcuni suggerimenti che nella mia esperienza col kernel ho trovato particolarmente utili.
Partire con una configurazione preesistente
Ci sono delle situazioni in cui è possibile avere una configurazione funzionante per il proprio computer, almeno da poter usare come base per la restante configurazione.
Il file di configurazione non è altro che un file di testo, dove i commenti iniziano con "#" e ogni opzione presente è o commentata (non abilitata), impostata a Y (statico), o M (modulo).
La configurazione viene salvata all'uscita dall'interfaccia in un file chiamato .config.
Nel caso non ne abbiate uno già fatto potete sperare di poter recuperare quello correntemente in uso dalla macchina (o dal liveCD, come spesso succede nel caso di Gentoo).
Per poter fare questo dovete verificare la presenza del file /proc/config.gz, in questo modo: # zcat /proc/config.gz > ~/`uname -r`.config
se la risposta è qualcosa tipo: gzip: /proc/config.gz: No such file or directory
mettetevela via e preparatevi al lavoro più faticoso.
Altrimenti avrete ottenuto la configurazione attuale e potrete copiarla nei sorgenti per usarla: # cp ~/`uname -r`.config /usr/src/linux-2.6.30.1/.config
Ovviamente rimpiazzate il percorso del file di configurazione (~/`uname -r`.config) con quello che avete a disposizione, e lo stesso vale per la directory di destinazione (linux-2.6.30.1).
fcracker79 segnala la presenza di uno script molto utile tra i sorgenti del kernel, che serve per estrarre una configurazione usabile dall'immagine del kernel:
# cd /usr/src/<versione-kernel>/
# scripts/extract-ikconfig /path/to/[b]zImage
se funziona, potrete ridirigere l'output nel file .config che poi vorrete usare!
Precompilazione della vecchia conf
Ora che avete copiato il file di config al posto giusto potete dare la precompilazione, specie se c'è stato un aggiornamento del kernel. Questo serve anche per evitare di impostare le opzioni non settate ad un valore di default che potrebbe non essere quello desiderato. Il comando è: # make oldconfig
In questo modo il programma scorre il file di configurazione in toto e prepara i sorgenti alla compilazione.
Nel caso dovesse trovare nuove opzioni (o la cui posizione è stata modificata nell'albero del kernel) vi verrà presentata la domanda se abilitarla (staticamente o come modulo) o meno (tra parentesi quadre vedrete l'opzione di default).
Come dicevo prima, l'uso dell'HELP aiuta molto ed è accessibile usando il "?" seguito da invio.
Staticamente o come Moduli?
Per come è strutturato il kernel, abilitando qualche opzione, potreste ritrovarvi con l'aggiunta o la sparizione di alcune sezioni, quindi non preoccupatevi, è normale che alcune opzioni dipendano da altre, o la cui compilazione statica o modulare venga forzata.
Nella maggior parte delle opzioni è possibile specificare se compilarla staticamente (cioè inclusa nel binario finale del kernel) oppure come modulo da caricare manualmente o runtime (rispettivamente indicate nel configuratore con le lettere Y e M, come già anticipato).
La scelta di usare l'uno rispetto all'altro è dettata da una necessità tecnica: è buona norma includere staticamente tutto quello di cui necessita il kernel per partire: l'hardware statico e i file system della root.
Considerate che più si staticizza il kernel, più l'immagine finale sarà grande e lenta da caricare, inoltre supporti instabili, come wireless o audio di ultima generazione se non precedentemente testati e buggosi, potrebbero mandarvi in crash il sistema.
La mia soluzione è normalmente quella di alleggerire il più possibile il kernel da dispositivi che non ho o non prevedo di usare in futuro (ad es. la porta parallela o n-mila tipi di dispositivi USB diversi), mettere come statico quello che so funzionare e che obbligatoriamente necessita il kernel per partire, modularizzare il resto, dando modo al kernel di caricarsi quello che serve a runtime, il resto è ottimizzazione.
If unsure say YES!
Lo abilito o non lo abilito? Cosa fa questa opzione?
Sono le classiche domande che ci pone al momento della configurazione.
Normalmente non tutte le opzioni sono utili (spesso alcuni programmi controllano da loro la configurazione del kernel e vi suggeriscono cosa (dis)abilitare), e per poter capire cosa fare e cosa non, è buona norma, nell'indecisione, consultare l'HELP relativo all'opzione dove spesso vi consigliano se abilitare o meno l'opzione.
Dov'è l'opzione CONFIG_XYZ?
Come accennato precedentemente, alcuni programmi in fase di compilazione o installazione si lamentano della mancanza di alcune opzioni di configurazione all'interno del kernel e vi segnalano il nome dell'opzione nel formato CONFIG_XYZ.
L'unico modo per trovare dove trovarlo nel menu è usare la maschera di ricerca del configuratore premendo il tasto "\": la schermata successiva di dovrebbe dire il percorso per raggiungere la sezione esatta.
Nella prossima sezione entrerò nel vivo della fase di configurazione del kernel.