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
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