Il pacchetto Linux contiene il kernel Linux.
La costruzione del kernel comporta alcuni passi: configurazione, compilazione e installazione. Leggere il file README nei sorgenti dell'albero del kernel per metodi alternativi al modo in cui questo libro configura il kernel.
Per default il kernel Linux genera sequenze di byte errate quando nel modo tastiera UTF-8 vengono usati i dead key. Inoltre non è possibile copiare e incollare caratteri non-ASCII quando è attivo il modo UTF-8. Correggere questi problemi con la patch:
patch -Np1 -i ../linux-2.6.16.27-utf8_input-1.patch
Preparare per la compilazione eseguendo il seguente comando:
make mrproper
Questo assicura che l'albero del kernel sia assolutamente pulito. Il team del kernel raccomanda che questo comando sia dato prima di ogni compilazione del kernel. Non pensare che l'albero dei sorgenti sia pulito dopo la scompattazione.
Configurare il kernel attraverso un'interfaccia a menu. BLFS ha alcune informazioni riguardanti particolari esigenze di configurazione del kernel di pacchetti al di fuori di LFS presso http://www.linuxfromscratch.org/blfs/view/svn/longindex.html#kernel-config-index:
make menuconfig
In alternativa make oldconfig potrebbe essere più appropriato in alcune situazioni. Vedere il file README per maggiori informazioni.
Se lo si desidera saltare la configurazione del kernel copiando il file config del kernel, .config, dal sistema host (supponendo che sia disponibile) alla directory scompattata linux-2.6.16.27. Tuttavia non raccomandiamo questa opzione. È spesso meglio esplorare tutti i menu di configurazione e creare la configurazione del kernel da zero.
Compilare l'immagine del kernel e i moduli:
make
Se si usano i moduli kernel sarà necessario un file /etc/modprobe.conf. Informazioni riguardanti moduli e configurazione del kernel si trovano nel capitolo Sezione 7.4, «Gestione dei dispositivi e dei moduli in un sistema LFS» e nella documentazione del kernel nella directory linux-2.6.16.27/Documentation. Anche modprobe.conf(5) potrebbe essere interessante.
Installare i moduli, se la configurazione del kernel li usa:
make modules_install
Dopo il completamento della compilazione del kernel sono necessari ulteriori passi per completare l'installazione. Alcuni file devono essere copiati nella directory /boot.
Il percorso all'immagine del kernel potrebbe variare in funzione della piattaforma usata. Il seguente comando presuppone un'architettura x86:
cp -v arch/i386/boot/bzImage /boot/lfskernel-2.6.16.27
System.map è un file di simboli per il kernel. Esso mappa i punti di ingresso delle funzioni di ciascuna funzione nelle API del kernel, oltre agli indirizzi delle strutture dati del kernel per il kernel in funzione. Digitare il seguente comando per installare il file map:
cp -v System.map /boot/System.map-2.6.16.27
Il file di configurazione del kernel, .config prodotto nella fase make menuconfig precedente contiene tutte le selezioni di configurazione per il kernel che è stato appena compilato. È una buona idea tenere questo file per un riferimento futuro:
cp -v .config /boot/config-2.6.16.27
Installare la documentazione del kernel Linux:
install -d /usr/share/doc/linux-2.6.16.27 && cp -r Documentation/* /usr/share/doc/linux-2.6.16.27
È importante notare che i file nella directory dei sorgenti del kernel non hanno come proprietario root. Qualora un pacchetto sia scompattato come utente root (come quando lo facciamo in chroot), i file hanno ID di utente e gruppo di colui che li ha pacchettizzati sul proprio computer. Questo di solito non è un problema per installare qualunque altro pacchetto, perché l'albero dei sorgenti è rimosso dopo l'installazione. Tuttavia l'albero dei sorgenti di Linux è spesso mantenuto per lungo tempo. A causa di questo c'è la possibilità che l'ID usato dall'utente che ha pacchettizzato i file sia assegnato a qualcuno sulla macchina. Questa persone allora avrebbe accesso in scrittura ai sorgenti del kernel.
Se si terranno i sorgenti del kernel eseguire chown -R 0:0 nella directory linux-2.6.16.27 per assicurarsi che tutti i file appartengano all'utente root.
Certa documentazione del kernel raccomanda di creare un link simbolico che da /usr/src/linux punti alla directory dei sorgenti del kernel. Questo è specifico per kernel precedenti alla serie 2.6, e non deve essere creato su un sistema LFS, poiché può causare problemi per i pacchetti che si potrebbe voler costruire dopo aver completato il sistema LFS base.
Inoltre gli header nella directory di sistema include devono sempre essere quelli sui quali è stata compilata Glibc, ovvero quelli del pacchetto Linux-Libc-Headers, e quindi non devono mai essere rimpiazzati dagli header del kernel.