Pagine

Translate

venerdì 12 agosto 2011

HowTo - Compilazione Kernel Real Time - Parte 3

Compilazione del Kernel:
Per prima cosa effettuaiamo una pulizia del pacchetto rimuovendo residui di precedenti compilazioni.

sudo make-kpkg clean

ora incrociamo le dita, accendiamo un cero alla madonna e lanciamo la compilazione con il comando:

CONCURRENCY_LEVEL=1 fakeroot make-kpkg --append-to-version -CustomRT --initrd kernel_image kernel_headers modules_image

Il parametro 1 nel comando CONCURRENCY_LEVEL indica che abbiamo 1 processore, se ne avessimo 2 o 4 possiamo impostare questo valore a 2 o 4 e dare più potenza di calcolo alla compilazione.
Se ci fossero problemi con il comando fakeroot è possibile sostituirlo con sudo, o in alternativa installare Fakeroot con il comando sudo apt-get install fakeroot*.

La compilazione dura circa un ora, se durante la compilazione doveste ricevere un messaggio di errore del tipo:

echo “The UTS Release version in include/linux/version.h”; echo ” \”\” “; echo “does not match current version:”; echo ” \”2.6.33-CustomRT\” “; echo “Please correct this.”; exit 2 The UTS Release version in include/linux/version.h does not match current version: “2.6.33-CustomRt” Please correct this. make[1]: *** [debian/stamp/install/linux-image-2.6.33-rc1-amd64] Error 2

allora vi trovate di fronte al bug 498747, che impedisce la compilazione del kernel a causa di alcuni errori nel path degli script. Ci sono due modi per risolvere, il primo è scaricare la patch kpkg-2.6.33.patch, oppure utilizzare il medoto più vecchio del mondo, fare le modifiche manualmente.
Visto che amo tanto fare le cose da me, vi illustro il procedimento per fare le modifiche manualmente:

Andare nella directory ~/linux-2.6.33.2/debian/ruleset/misc aprire il file version_vars.mk con sudo gedit version_vars.mk, e rimuovere la riga:

UTS_RELEASE_HEADER=$(call doit,if [ -f include/linux/utsrelease.h ]; then \

e sostituirla con:

UTS_RELEASE_HEADER=$(call doit,if [ -f include/generated/utsrelease.h ]; then \

echo include/generated/utsrelease.h; \

elif [ -f include/linux/utsrelease.h ]; then \

echo include/linux/utsrelease.h; \

else \

echo include/linux/version.h ; \

quindi andare nella directory ~/linux-2.6.33.2/debian/ruleset/targets aprire il file common.mk con sudo gedit common.mk, e rimuovere la riga:

grep LINUX_COMPILER include/linux/compile.h | \

Sostituendola con:

grep LINUX_COMPILER include/generated/compile.h | \

sed -e 's/.*LINUX_COMPILER "//' -e 's/"$$//' >> debian/buildinfo

ifneq ($(strip $(shell test -f version.Debian && cat version.Debian)),)

echo kernel source package used: >> debian/buildinfo


Salvare entrambi i files e rilanciare la procedura di compilazione:

CONCURRENCY_LEVEL=1 fakeroot make-kpkg --append-to-version -CustomRT --initrd kernel_image kernel_headers modules_image

oppure

sudo make-kpkg --append-to-version -CustomRT --initrd kernel_image kernel_headers modules_image

Abbiamo finito, nel prossimo tutorial (parte 4) parleremo di come installarlo.

Enjoy
Antonio

HowTo - Compilazione Kernel Real Time - Parte 2

Configurazione:
Per essere sicuri di non commettere errori riguardo la configurazione delle periferiche, possiamo copiare l'attuale configurazione e applicarla ai sorgenti del nuovo kernel, digitiamo:

sudo make oldconfig

Durante questa procedura ci verranno poste delle domande, quando ci verrà chiesto il tipo di compressione da utilizzare scegliamo .BZ2, successivamente ci verrà chiesto se vogliamo compliare il kernel con Complete-Preeption (kernel RealTime), a questo punto confermiamolo selezionando appunto questa voce(opzione numero 4). Vedi figura seguente.











Ora verranno poste una serie di domande, non preoccupiamoci troppo di rispondere “bene”, perché successivamente rivedremo tutte le opzioni. Al termine di questo “interrogatorio” siamo pronti per il passo successivo:

sudo apt-get install libglade*

sudo make config

Si aprirà una interfaccia grafica che ci consentirà di configurare il nostro nuovo kernel, da qui potremo aggiungere i moduli che ci interessano, per il dettaglio di tutte le voci contenute nel MenuConfig, vi rimando al seguente link

http://www.slacky.eu/wikislack/index.php?title=Kernel_Menuconfig

Di seguito un esempio di schermata di configurazione:

.

Consideriamo solo le opzioni che possono interessarci:
Sezione “GENERAL SETUP”, scorrete fino alla voce “Processor Type and Featurs”, cliccando sulla freccia scorriamo fino a trovare la voce “PREEMPTION MODE” qui sotto avremo 4 Item di cui una denominata “Complete Preemtion (realtime)”, mettiamoci un flag.

Questa nuova opzione è stata aggiunta a seguito dell'applicazione della nostra patch RT, se non dovesse essere presente abbiamo sbagliato ad installare la patch RealTime.
E' sempre conveniente rimuovere dalla sezione “KERNEL HACKING” la voce “kernel Debugging”, per evitare di ritrovarsi con dei file kernel di centinaia di mega. Ora salviamo con il pulsante “Save” e passiamo alla compilazione.

Nel prossimo tutorial(parte 3) parleremo di come compilare il nostro kernel RealTime.

Enjoy
Antonio