8.6. Compilazione di un nuovo kernel

Perché qualcuno dovrebbe compilarsi un nuovo kernel? Spesso non è necessario dato che il kernel inserito in Debian gestisce la maggior parte delle configurazioni. Inoltre Debian offre parecchi kernel alternativi, quindi si dovrebbe come prima cosa controllare se fra i pacchetti con kernel alternativi ce n'è uno che si adatta meglio al proprio hardware. Comunque può essere utile compilare un nuovo kernel per poter:

8.6.1. Gestione dell'immagine del kernel

Non ci si deve impaurire nel provare a compilare il kernel. È divertente e utile.

Per compilare il kernel con il metodo seguito da Debian sono necessari alcuni pacchetti: fakeroot, kernel-package, linux-source-2.6 e pochi altri che probabilmente sono già installati (si consulti /usr/share/doc/kernel-package/README.gz per l'elenco completo).

Questo metodo crea un .deb dai sorgenti del kernel e, se si hanno dei moduli non-standard, crea anche un .deb di questi moduli sincronizzato con il precedente. Questo è il miglior modo di gestire le immagini del kernel; in /boot vengono inseriti il kernel, il file System.map e un log con le configurazioni attive durante la compilazione.

Notare che non è obbligatorio compilare il kernel “alla Debian”; ma l'uso del sistema di pacchetti per gestire il kernel è realmente più sicuro e più semplice. In pratica si possono anche reperire i sorgenti del kernel direttamente da Linus anziché da linux-source-2.6 e comunque usare il metodo di compilazione con kernel-package.

Notare che è possibile trovare la documentazione completa sull'uso di kernel-package in /usr/share/doc/kernel-package. Questa sezione contiene solo un breve manuale introduttivo.

D'ora in avanti si suppone che si abbia il controllo completo della macchina e che i sorgenti del kernel siano da qualche parte all'interno della propria home directory[15]. Si suppone anche che la versione del kernel sia 2.6.18. Assicurarsi di trovarsi nella directory in cui si vuole scompattare i sorgenti del kernel, estrarli usando tar xjf /usr/src/linux-source-2.6.18.tar.bz2 e cambiare la directory corrente in linux-source-2.6.18 che è stata appena creata.

Adesso si può configurare il kernel. Eseguire make xconfig se X11 è installato, configurato e in esecuzione; altrimenti eseguire make menuconfig (è necessario che sia installato il pacchetto libncurses5-dev). Prendersi tutto il tempo necessario per leggere l'aiuto in linea e scegliere con attenzione; in caso di dubbi di solito è consigliabile includere i driver dei dispositivi (il software che gestisce le periferiche hardware come le schede Ethernet, i controller SCSI e così via) se non si è sicuri. Attenzione: se non si capisce il significato delle altre opzioni non legate a un hardware specifico si dovrebbero lasciare al valore predefinito. Non ci si deve dimenticare di selezionare “Kernel module loader” in “Loadable module support” (normalmente non è selezionato), altrimenti il proprio sistema Debian rischia di avere dei seri problemi.

Ripulire i sorgenti e ripristinare i parametri di kernel-package usando make-kpkg clean.

Adesso compilare il kernel con: fakeroot make-kpkg --initrd --revision=custom.1.0 kernel_image. Il numero di versione “1.0” può essere cambiato secondo le necessità; questo è semplicemente il numero di versione che si può usare per tener traccia delle compilazioni del kernel. Allo stesso modo si può inserire qualsiasi parola al posto di “custom” (p.e. il nome dell'host). La compilazione del kernel richiede un po' di tempo, in base alla potenza della macchina.

Finita la compilazione è possibile installare il proprio kernel personalizzato come qualsiasi altro pacchetto. Da root eseguire dpkg -i ../linux-image-2.6.18-subarchitecture_custom.1.0_s390.deb. La parte sottoarchitettura è opzionale e indica la sottoarchitettura, in base alle opzioni del kernel sono state attivate. dpkg -i installa il kernel più alcuni file di supporto. Per esempio sono installati i file System.map (utile per il debug del kernel) e /boot/config-2.6.18 che contiene la configurazione. Il nuovo pacchetto con il kernel è anche in grado di aggiornare automaticamente il bootloader in modo da poter usare il nuovo kernel. Se si è creato anche un pacchetto con i moduli allora è necessario installare anche questo pacchetto.

Adesso si deve riavviare il sistema: leggere attentamente tutti gli avvertimenti che potrebbero apparire durante il passo precedente e poi eseguire shutdown -r now.

Per ulteriori informazioni sui kernel Debian e sulla compilazione del kernel si consulti il Debian Linux Kernel Handbook. Per ulteriori informazioni su kernel-package si consulti l'eccellente documentazione in /usr/share/doc/kernel-package.



[15] Ci sono molti altri posti in cui è possibile estrarre i sorgenti del kernel e compilare un kernel personalizzato, ma è molto più semplice se questa operazione non richiede dei permessi speciali.