Ricompilazione del kernel

Dopo aver compilato il kernel, in caso di successiva compilazione si possono presentare due casi:

  1. compilazione di una versione superiore del kernel in uso;
  2. compilazione della medesima versione del kernel in uso.

Nel primo caso bisogna ricordarsi, prima di procedere alla compilazione, di cancellare il collegamento a /usr/src/linux; digitare pertanto:

# cd /usr/src

# rm linux

perché altrimenti si continuerebbe ad operare sui sorgenti del kernel di versione inferiore. Potrà altresì sorgere l'esigenza di analizzare solo le nuove voci del menù di configurazione introdotte dalla nuova versione; in questo caso, supponendo che il vecchio kernel sia la versione 2.6.10, inserire:

# cd /usr/src/linux

# cp /boot/config-2.6.10/.config .config

# make oldconfig

che copia la configurazione del vecchio kernel nell'albero di file sorgenti di quello di versione superiore. Tenete presente però che l'aiuto in linea non sarà disponibile e che questo non è possibile se si cambia la serie del kernel (per esempio passando da kernel 2.4.x a 2.6.x). Dopodichè si procede come illustrato nei passi precedenti.

Se invece non siamo soddisfatti di come funziona il kernel che abbiamo compilato e vogliamo ricompilarlo, siamo allora nel secondo caso e dobbiamo fare più attenzione, in modo da preservare il vecchio e provato kernel che costituisce la garanzia di poter ripristinare lo stato del sistema preesistente alle nostre compilazioni. La prima cosa da fare è riavviare la macchina facendo caricare il vecchio kernel, come spiegato in precedenza; in caso contrario verrebbe sovrascritto dagli script di kernel-package (ci ritroveremmo con due kernel della stessa versione compilati in momenti diversi): è sempre il vecchio e fidato kernel che deve compilare i nostri kernel sperimentali!

Se poi avete attivato la funzione di modularità del kernel, dovete rinominare la cartella in /lib/modules che contiene i moduli del kernel; nel nostro esempio sarà:

# mv /lib/modules/2.6.10 /lib/modules/2.6.10.old
oppure potete drasticamente cancellarli:

# rm -R /lib/modules/2.6.10
e successivamente procedere alla nuova configurazione:

# cd /usr/src/linux

# make menuconfig

e quindi alla compilazione con un revision number maggiorato:

# make-kpkg clean

# make-kpkg -revision=prova.2.0 kernel_image

che consentirà al gestore di pacchetti di installare il kernel di medesima versione ma di diversa configurazione come se fosse di versione superiore:

# cd /usr/src

# dpkg -i kernel-image-2.6.10_prova.2.0_i386.deb

Potete iterare questo procedimento un numero infinito di volte, mantenendo a portata di mano il vecchio e fidato kernel.

Mauro Darida 2006-07-25