8.3. Linux-2.6.11.12

Il pacchetto Linux contiene il kernel Linux.

Tempo approssimativo di costruzione: 4.20 SBU
Spazio su disco richiesto: 181 MB
L'installazione dipende da: Bash, Binutils, Coreutils, Findutils, GCC, Glibc, Grep, Gzip, Make, Modutils, Perl e Sed

8.3.1. Installazione del kernel

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.

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.

Se nella Sezione 7.6, “Configurazione della console Linux,” è stato deciso di compilare la mappa tastiera nel kernel, digitare il seguente comando:

loadkeys -m /usr/share/kbd/keymaps/[path to  keymap] > \
    drivers/char/defkeymap.c

Per esempio se si usa una tastiera olandese usare /usr/share/kbd/keymaps/i386/qwerty/nl.map.gz.

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 (ammesso che sia disponibile) nella directory scompattata linux-2.6.11.12. Tuttavia non raccomandiamo questa opzione. È spesso meglio esplorare tutti i menu di configurazione e creare la configurazione del kernel da zero.

[Nota]

Nota

NPTL richiede che il kernel sia compilato con GCC 3.x o successivo, in questo caso 3.4.3. Non si raccomanda di compilare il kernel con con 2.95.x, poiché questo causa fallimenti nella suite di test di Glibc. Normalmente questo non sarebbe citato, poiché LFS non si può costruire con GCC-2.95.x. Sfortunatamente la documentazione del kernel è obsoleta e afferma ancora che GCC-2.95.3 è il compilatore raccomandato.

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 nella documentazione del kernel kernel nella directory linux-2.6.11.12/Documentation. Inoltre potrebbe essere interessante modprobe.conf(5).

Fare molta attenzione quando si legge altra documentazione relativa ai moduli kernel, poiché normalmente si applica solo ai kernel 2.4.x. Per quanto ne sappiamo problemi di configurazione del kernel specifici a Hotplug e Udev non sono documentati. Il problema è che Udev creerà un nodo di dispositivo solo se Hotplug o uno script dell'utente inserisce il corrispondente modulo nel kernel, e non tutti i moduli sono rilevabili da Hotplug. Notare che statement come il seguente nel file /etc/modprobe.conf non funzionano con Udev:

alias char-major-XXX some-module

A causa delle complicazioni con Hotplug, Udev, e moduli, raccomandiamo fortemente di partire con una configurazione del kernel non modulare, specialmente se questa è la prima volta che si usa Udev.

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 dellapiattaforma usata. Il seguente comando prevede un'architettura x86:

cp -v arch/i386/boot/bzImage /boot/lfskernel-2.6.11.12

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.11.12

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.11.12

È 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.11.12 per assicurarsi che tutti i file appartengano all'utente root.

[Avvertimento]

Avvertimento

Certa documentazione del kernel raccomanda di creare un link simoblico /usr/src/linux che punta alla directory sorgente 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 desiderare costruire dopo aver completato il sistema LFS base.

Inoltre gli header nella directory di sistema include dovrebbero 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.

8.3.2. Contenuti di Linux

File installati: config-2.6.11.12, lfskernel-2.6.11.12 e System.map-2.6.11.12

Brevi descrizioni

config-2.6.11.12

Contiene tutte le selezioni di configurazione del kernel

lfskernel-2.6.11.12

Il motore del sistema Linux. Quando si avvia il computer il kernel è la prima parte del sistema operativo che viene caricata. Esso rileva e inizializza tutti i componenti hardware del computer, quindi rende disponibili questi componenti come albero di file al software e trasforma una singola CPU in una macchina multitasking capace di eseguire pezzi di programmi apparentemente nello stesso tempo

System.map-2.6.11.12

Un elenco di indirizzi e simboli; esso mappa i punti di ingresso e gli indirizzi di tutte le funzioni e le strutture dati nel kernel