Visualizzazione post con etichetta compilazione. Mostra tutti i post
Visualizzazione post con etichetta compilazione. Mostra tutti i post

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.

venerdì 13 giugno 2008

Ricompilare un pacchetto debian

Visto che la vostra assistente personale Debian (foto sopra) di sicuro non vi rispondera', dovrete cavarvela da soli.

Prima di tutto verifichiamo di aver installati gli strumenti di base per la compilazione dei sorgenti:
apt-get install devscripts build-essential
scarichiamo i sorgenti del che ci interessa:
apt-get source

Attenzione: il comando scarica i sorgenti nella directory corrente.
Scarichiamo le dipendenze necessarie al :
apt-get build-dep

Nella cartella debian trovate alcuni file interessanti:
rules (contiene le opzioni di compilazione)
changelog (contiene il sommario delle modifiche apportate ai sorgenti)
Se avete finito le vostre modifiche possiamo ricompilare il pacchetto:
cd
debuild -us -uc

A compilazione terminata, troverete i pacchetti .deb nella directory superiore.
Se, ad esempio, desiderate installare il pacchetto appena generato, dovete eseguire i comandi seguenti:
cd ..
dpkg -i

Vediamo un esempio concreto. Immaginiamo di voler ricompilare il pacchetto mysql-server-5.0:
apt-get source mysql-server-5.0
apt-get build-dep mysql-server-5.0
cd mysql-dfsg-5.0-5.0.32
debuild -us -uc
cd ..
dpkg -i *.deb