Configurazione del kernel




Step 1: Download dei sorgenti

Il sito ufficiale del kernel di linux e: http://www.kernel.org
con relativo ftp://ftp.kernel.org

Sotto la dir pub/linux/kernel trovate TUTTI i kernel ufficiali dalla nascita ad oggi.
Scaricare la versione del kernel voluta. Per semplicità supponiamo che l'utente biko scarichi nella propria home il file linux-2.4.18.tar.bz2.

Step 2: Scompattazione del tar-file

COME UTENTE root:
> cd /usr/src
> tar xvjf /home/biko/linux-2.4.18.tar.bz2  (le "vecchie" versioni di tar possono volere l'opzione I al posto di j)
Abbiamo ottenuto una directory chiamata linux contenente i sorgenti del kernel.
Entriamoci con il comando
> cd linux
Leggere con attenzione il file README!!!!!!!!! Vi spiega tutti i passi necessari per ricompilare il kernel.
Li vediamo comunque qui di seguito:

(Ri)pulitura dell'albero dei sorgenti


> make mrproper

Configurazione


Per configurare il kernel sono possibili diverse "interfacce":
> make config (testuale)
> make menuconfig (testuale a menu)
> make xconfig (grafico ma talvolta non fa vedere proprio tutte le possibili opzioni
> make oldconfig (per mantenere la vecchia configurazione)

Le opzioni di configurazione sono veramente tante: è importante conoscere il sistema per il quale si sta compilando il kernel (a tale scopo il comando lspci ci aiuta molto). Se non si sa a cosa serve una certa opzione, la scelta di default è solitamente quella "che fa meno danni".

Sistemazione delle dipendenze


> make dep

Compilazione del kernel (creazione dell'immagine del kernel)

> make bzImage

Compilazione dei moduli

I moduli sono le parti "caricabili on demand" dal kernel. L'ideale sarebbe configurare come residente SOLO le cose essenziali tipo: mentre mantenere come modulo tutto quello che vi potrebbe servire ma che non è essenziale tipo:
> make modules

Installazione dei moduli

> make modules_install
Questo copia i file nella directory /lib/modules/2.4.18

A questo punto dobbiamo sistemare l'immagine del kernel ottenuta al giusto posto: dove?
Siccome il kernel viene caricato dal boot-loader, guardiamo nel file di configurazione di quest'ultimo:
[root@polgara:/home/biko]$ cat /etc/lilo.conf | grep -v \#  
lba32
boot=/dev/hda
root=/dev/hda1
install=/boot/boot-menu.b
map=/boot/map
delay=20
vga=normal
default=Linux

image=/vmlinuz
        label=Linux
        read-only

image=/vmlinuz.old
        label=LinuxOLD
        read-only
        optional

[root@polgara:/home/biko]$ 
La direttiva che ci interessa è Image:
A seconda di come è configurato il sistema /vmlinuz e /vmlinuz.old possono essere (come in questo caso) due link rispettivamente a:
[root@polgara:/]$ ls -la vmlinuz*
lrwxrwxrwx    1 root     root           19 May 14 21:04 vmlinuz -> boot/vmlinuz-2.4.18
lrwxrwxrwx    1 root     root           26 May 14 19:36 vmlinuz.old -> boot/vmlinuz-2.2.20-idepci
[root@polgara:/]$ 
Copiamo quindi il kernel appena creatonella dir /boot:
[root@polgara:/]$ cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.18-new
e aggiorniamo i link
[root@polgara:/]$ ln -sf /boot/vmlinuz-2.4.18-new /vmlinuz
[root@polgara:/]$ ln -sf /boot/vmlinuz-2.4.18 /vmlinuz.old
Fatto tutto? NO, NON DIMENTICATEVI DI RILANCIARE LILO per aggiornare il boot-loader
[root@polgara:/]$ lilo
Added Linux *
Added LinuxOLD
[root@polgara:/]$ 
A questo punto possiamo fare reboot del sistema e ripartire con il nuovo kernel.
SE al posto di
> make bzImage
si usa
> make bzlilo
tutta la procedura di aggiornamento dei link è automatica.