Di seguito sono elencati con una breve spiegazione i passi necessari per la ricompilazione di un kernel serie 2.6.x precedentemente installato , nello specifico, la distro di riferimento è Slackware.
NB: Indifferentemente dalla distro, i comandi utili risultano essere sempre gli stessi, come da esempio seguente.
In seguito alla compilazione di un nuovo kernel, spesso è necessario provare e riprovare ad effettuare cambiamenti sul kernel in uso. Questo procedimento si chiama ricompilazione e risulta semplice, come lo è la compilazione, se si tengono a mente delle piccole attenzioni. Vediamo in dettaglio.
NB: Se ci fossero dubbi durante la ricompilazione si consiglia la lettura precedente del post “compilazione nuovo kernel 2.6.x”. In questo post infatti sono presenti commenti che possono chiarire le idee riguardo ad alcuni punti.
Ci spostiamo nella directory che ospita il kernel 2.6.x precedentemente compilato che regolarmente dovrebbe avere già il link simbolico alla directory /usr/src/linux:
~$ su Password: ~# ls -al /usr/src/linux lrwxrwxrwx 1 root root 14 2008-09-04 03:38 /usr/src/linux -> linux-2.6.30/
NB: Così facendo saremo certi che il link simbolico sia correttamente settato al kernel in uso da ricompilare.
Accertato che il link e la directory sono corrette. Procediamo con i comandi utili alla ricompilazione e modifica del kernel in uso:
~# cd /usr/src/linux ~# make mrproper
Procediamo con la modifica della voci:
~# make menuconfig
NB: così come per la compilazione, si può scegliere xconfig e/o gconfig.
Terminati i cambiamenti apportati alle voci kernel da abilitare, disabilitare etc… procediamo con la ricompilazione dell anuova immagine kernel:
~# make -j5 bzImage
Poi sarà la volta dei moduli:
~# make -j5 modules
NB: Prima di reinstallare i moduli è buona norma salvare quelli precedenti in un file archivio. Così da evitare di perderli in casi particolari di errore. I moduli sono installati nella directory /lib/modules/versione-kernel. Procederemo quindi a zipparli e poi continueremo con l’installazione di quelli nuovi come da esempio:
~# tar cf /lib/modules/2.6.versione.tar /lib/modules/2.6.nome-directory-moduli-in-uso
NB: Questo comando creerà un archivio nella dir /lib/modules/ che si chiamerà 2.6.versione.tar contenente i nostri moduli attuali prima della ricompilazione.
Procediamo quindi con l’installazione dei moduli attuali:
~# make modules_install
Avremo quindi l’immagine kernel e i relativi file .config e System.map da salvare in /boot/ .
NB: Essendo queste modifiche ad un kernel precedentemente compilato è buona norma salvare i seguenti file e spostarli nella directory /boot/ sotto un nome riconoscibile come attuale.
~# cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.6.x-new ~# cp /usr/src/linux/.config /boot/config_vmlinuz-2.6.x-new ~# cp /usr/src/linux/System.map /boot/System.map-2.6.x-new
Non resta che modificare il boot loader “LILO e/o GRUB” aggiungendo il nuovo kernel a quelli già presenti:
~# vi /etc/lilo.conf # Start Config Image kernel 2.6.x ricompilata image = /boot/vmlinuz-2.6.x-new => nome e percorso dell'immagine ricompilata root = "/dev/hdaX" => device corrispondente alla partizione radice / label = "Kernel2.6.x-new" => nome che apparirà al boot lilo vga = 791 => modalità di framebuffer della console scelto read-only # End Config Image kernel 2.6.x ricompilata
Aggiunto il nuovo kernel salviamo e restartiamo lilo in modalità verbose così da controllare eventuali errori:
~# lilo -v
Non resta che riavviare e godere delle modifiche fatte al nostro kernel ricompilato.
# End