ho compilato il mio primo kernel

ho compilato il mio primo kernel

Giovedì scorso ho compilato per la prima volta un kernel rendendolo pronto all'avvio ed utilizzandolo con la mia versione di linux installata sul pc. Così come primo effetto mi è sembrato di essere un supereroe ma ora mi rendo conto di non aver fatto nulla di chè. Almeno non ancora.

Volevo quindi riportare i passi che ho compiuto per poter utilizzare l'attuale ultima versione stabile del kernel linux: la 2.6.30.

Dopo aver scaricato i sorgenti dal sito ftp://ftp.kernel.org/pub/linux/kernel/v2.6/ nel formato tar.gz (l'ho preferito al tar.bz2 in quanto sta un po' meno tempo a decomprimersi) li ho decompressi con il comando

tar xzvf linux-2.6.30.tar.gz

sono entrato nella cartella linux-2.6.30/ ed ho eseguito il comando

make mrproper

il cui scopo è quello di predisporre la compilazione del kernel alla generazione di un nuovo file .config e poi ho copiato all'interno della directory il file .config del kernel attuale della mia installazione

cp /usr/src/linux-headers-2.6.28-14-generic/.config /home/paolo/Desktop/linux-2.6.30

ho eseguito in sequenza i comandi

make oldconfig
make
su
make modules_install

in questo caso tramite il primo comando della sequenza mi è stato chiesto tramite specifiche domande, come gestire le varie opzioni che il nuovo kernel offre rispetto a quelle già impostate con il precedente kernel. Per ciascuna di esse mi è stato chiesta se attivarla o meno ed eventualmente se la volevo includere come modulo da caricare al momento opportuno. E' interessante questa parte ed è, presumo, la parte più delicata dell'intera operazione. Nel mio caso, che è un riutilizzo del vecchio file di configurazione con delle aggiunte, il tutto è pressoche inutile ma nella necessità di ricompilare un kernel da zero in questa fase sono richieste non poche conoscenze riguardo hardware driver e funzionalità da includere nel kernel.

Il secondo comando non fa altro che compilare il sorgenti ottenendo gli eseguibili in base alle impostazioni del file di configurazione.

Col terzo sono diventato root ed ho eseguito l'installazione dei moduli del kernel attraverso il quarto comando.

La compilazione del kernel finisce qui; ora rimane da impostare grub per l'avvio al boot del nuovo kernel.

I comandi appena descritti gestiscono in automatico la generazione del file immagine del kernel, della creazione della System Map e del file di configurazione. Rimane solamente da spostare i file in /boot e da creare l'immagine initrd (initialize RAM disk) e settare il tutto nel file menu.lst.

Sempre dall'interno della cartella che contiene i sorgenti del kernel ho eseguito i seguenti comandi:

cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.30
cp .config /boot/config-2.6.30
cp System.map /boot/System.map-2.6.30

Con i precedenti comandi ho spostato i file generati con la nuova compilazione del kernel all'interno della cartella /boot assieme a quelli già presenti con la mia installazione di ubuntu ed opportunamente rinominati in modo da rendere chiaro di che file sono.

Per creare l'immagine initrd ho eseguito come root il seguente comando, sempre all'interno della stessa directory:

mkinitramfs -o /boot/initrd.img-2.6.30

in automatico viene generata l'immagine nel percorso indicato.

All'interno del file /boot/grub/menu.lst , che contiene la lista dei kernel disponibili con relativi percorsi ai file per l'avvio del sistema, ho aggiunto le seguenti righe nella sezione dedicata alla scelta dei kernel:

title Ubuntu 9.04, kernel 2.6.30
uuid *****
kernel /boot/vmlinuz-2.6.30 root=UUID=***** ro quiet splash
initrd /boot/initrd.img-2.6.30
quiet

Al posto degli asterischi va inserito l'UUID relativo al vostro hard disk di boot generato dal sistema durante l'installazione.

Che dire, dopo preventivo backup, riavviate, selezionate il nuovo sistema e...

A me tutto ha funzionato alla perfezione ed un bel

uname -r

Mi ritorna la versione 2.6.30 del kernel attualmente in uso.

commenti

1

.... invece di stare in ferie !!!

scritto da roberto - il giorno Giovedì 20 agosto 2009 alle ore 15:06

2

Si dovrà pur mantenersi aggiornati anche in ferie... :)

scritto da paolo - il giorno Venerdì 21 agosto 2009 alle ore 17:44

3

E bravo Paolo, però hai fatto la compilazione alla old way :P Eì inoltre buona prassi prima di iniziare a compilare dare un make clean per pulire eventualli moduli rimasti compilati dagli sviluppatori. Se non erro con i nuovi kernel c'è un comando unico per fare tutto assieme, ma sincermente non mi ricordo se e quale è.

scritto da diablo666 - il giorno Venerdì 28 agosto 2009 alle ore 17:07

4

qual buon vento! :) appena troverò del tempo extra studierò più a fondo altri metodi per la compilazione del kernel! nel frattempo grazie per il consiglio...

scritto da paolo - il giorno Sabato 29 agosto 2009 alle ore 17:25

Lascia un commento:

Ultime Commenti...

  • paolo: Anche se il post è vecchio mi è tornat...
  • paolo: è probabile che sia un problema di wind...
  • sara: premetto che non ne caoisco nulla,ma ho ...
  • biancuzzi andrea: direi che dobbiamo parlarne e approfondi...
  • paolo: qual buon vento! :) appena troverò del...