sabato 14 novembre 2009

Ubuntu: personalizzare il kernel

Verifichiamo la release correntemente installata con il comando
uname -r

sul mio sistema l'output del comando e'
2.6.31.4-custom

ma ovviamente puo' variare su ogni sistema, continueremo ad usare questo come esempio per questo post.
Installiamo ora i sorgenti del kernel (ricordatevi di cambiare numero di versione se necessario)
sudo apt-get install linux-source-2.6.31 kernel-package libncurses5-dev fakeroot

I sorgenti vengono installati (come file tar compresso) nella directory /usr/src
D'ora in poi lavoreremo con credenziali di amministratore, lanciamo quindi il comando
sudo -s

Ora ci spostiamo nella directory contenente il kernel e lo scompattiamo (e' necessaria l'utility bunzip2 contenuta nel pacchetto bzip2):
cd /usr/src
bunzip2 linux-source-2.6.31.tar.bz2
tar xvf linux-source-2.6.31.tar
ln -s linux-source-2.6.31 linux

Facciamo una copia della configurazione del kernel in esecuzione per velocizzare il processo di configurazione del nuovo kernel (attenzione al carattere ` , non e' un apice singolo, bensi' un apice inverso che sulla tastiera italiana si ottiene con AltGr+' e corrisponde al codice ASCII 96):
cp /boot/config-`uname -r` /usr/src/linux/.config

Lanciamo l'utility che ci consente di personalizzare (o customizzare) il vostro kernel:
cd /usr/src/linux
make menuconfig

Prima di tutto scendete in fondo al menu e selezionate la voce
Load an Alternate Configuration File

seguite le istruzioni per caricare il file .config (basta premere INVIO)
Potete quindi cominciare a configurare il vostro kernel abilitando o disabilitando funzioni o moduli. Quando avete finito selezionate la voce
Exit

e salvate la configurazione quando richiesto.
Eseguiamo un make clean per verificare che tutto sia a posto:
make-kpkg clean

Lanciamo finalmente la compilazione:
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers

ATTENZIONE!!! Se avete un dual core, un quad core o un sistema multiprocessore, potete ottimizzare la compilazione utilizzando la variabile di ambiente CONCURRENCY_LEVEL settata al doppio del numero dei processori o dei core.
Per sapere quanti processori/core ci sono sul nostro sistema possiamo lanciare il comando:
grep -c '^processor' /proc/cpuinfo

nel mio caso (dual core) ottengo un 2 quindi devo settare la variabile CONCURRENCY_LEVEL a 4.
Rivediamo il comando di compilazione del kernel alla luce di quanto appena detto:
CONCURRENCY_LEVEL=4 fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers

Questo processo genera due file .deb nella directory /usr/src (al posto degli asterischi troverete il numero di versione del kernel compilato):
linux-image*****.deb
linux-headers*****.deb

potete installare entrambi i pacchetti con il comando (torno al mio esempio):
dpkg -i linux-image-2.6.31.4-custom_2.6.31.4-custom-10.00.Custom_amd64.deb
dpkg -i linux-headers-2.6.31.4-custom_2.6.31.4-custom-10.00.Custom_amd64.deb

ATTENZIONE!!!

Quello appena installato viene configurato dal sistema come il kernel di default, se con questo la macchina non partisse dovete riavviare e premere ESC all'apparire di GRUB per poter selezionare il kernel precedente.

Nessun commento: