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:
- Il filesystem della partizione di root
- il supporto per il disco rigido
- il supporto per la rete
- il supporto per il TCP/IP
mentre mantenere come modulo tutto quello che vi potrebbe servire ma che non è essenziale tipo:
- il supporto per la scheda audio e la scheda di rete
- il supporto per la videocamera
- il supporto per USB
- il supporto per eventuali filesystem aggiuntivi (msdos, vfat, iso9660...)
- ...
> 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.