Indice

Compilare il kernel Linux

Autore: Fabio Di Matteo
Ultima revisione: 02/08/2008

Quello che serve

  1. Una distribuzione Linux, installata e funzionante;
  2. i sorgenti del Kernel da www.kernel.org;
  3. Grub il bootloader;
  4. Strumenti di sviluppo : gcc, make;

Preparazione preliminare

Da adesso gni qualvolta scriverò linux-2.6.xx al posto delle xx è da intendersi il numero di versione che si sta usando (minor version) .

Copiamo il pacchetto del kernel appena scaricato in /usr/src/

#cp linux-2.6.xx.tar.bz2 /usr/src

entriamo nella directory /usr/src e decomprimiamo il file:

# cd /usr/src
# tar xjvf linux-2.6.xx.tar.bz2

Ricreiamo il link simpolico al sorgente:

# rm linux && ln -s linux-2.6.xx linux

Adesso prepariamo l'ambiente per la compilazione:

# cd linux
# make mrproper

Configurazione del kernel

Adesso si puo' passare alla configurazione del kernel, attraverso la quale si può decidere se includere un certo modulo oppure no, oppure se compilarlo dentro il kernel stesso.
Per configurare linux si possono usare 3 programmi: menuconfig , xconfig , gconfig. Menuconfig e' un programma che funziona da console, gconfig e xconfig invece funzionano dentro Xorg grazie rispettivamente alle qt e alle gtk (librerie grafiche).
Ecco come avviare uno dei programmi:

per menuconfig :

# make menuconfig

per gconfig :

# make gconfig

per xconfig :

# make xconfig

Compilazione

Dopo aver finito la fase di configurazione si passa alla compilazione digitando il seguente comando:

# make -j3

Il -j3 comunica il numero di processi che si possono lanciare per la compilazione, serve quindi a velocizzare la stessa. Non ha senso comunque su di una macchina con 1 solo processore un valore più grande di j3 .

Installazione del kernel

Installiamo i moduli:

# make modules_install

Copiamo i file System.map e .config :

# cp System.map /boot/System.map-2.6.xx
# cp .config /boot/config-2.6.xx

Installiamo il kernel:

# cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.xx

N.B. arch/x86 gisto perchè siamo su di una piattaforma intel a 32 bit, altrimenti cambiava directory.

Creiamo la ram disk (initrd):

# cd /boot 
# mkinitramfs -o initrd.img 2.6.xx 

Rinominiamo il file della ramdisk(per comodità):

# mv initrd.img initrd.img-2.6.xx 

Aggiorniamo il bootloader

Per grub >= 1.96

Aggiungiamo a /boot/grub/grub.cfg :

...
menuentry "GNU/Linux, linux 2.6.xx" {
	linux  /boot/vmlinuz-2.6.xx root=/dev/<tua partizione> ro  
	initrd	/boot/initrd.img-2.6.xx
}
...

Per Lilo

Aggiungiamo a /etc/lilo.conf:

...
image = /boot/vmlinuz-2.6.xx
root = /dev/<tua partizione>
initrd=/boot/initrd.img-2.6.xx
label = Linux_2.6.xx
read-only
...

Dopodicchè digitiamo:

# lilo -v