Home > Karmic > Karmic: errori di compilazione Kernel 2.6.34

Karmic: errori di compilazione Kernel 2.6.34

20 Maggio 2010

Anche io come molti, mi sono infognato nei meandri degli
errori di compilazione di kernel in karmic.
Dopo un po’ di smoccoli e tanto Gògol (come dice il Nano),
tra i tanti “la causa è il postinst…”, “la causa è il preinst”,
“nvidia-common è il colpevole”, ne sono venuto a capo con il
seguente metodo che riassumo, per i comuni mortali come il sottoscritto:

diamo per scontata la presenza dei soliti pacchetti
necessari alla compilazione, altrimenti:

sudo apt-get install build-essential bin86 fakeroot kernel-package libglade2-dev

(nota: in caso di Kubuntu, al posto di libglade2-dev, usare libqt3-mt-dev)

Scaricare i sorgenti del kernel da compilare, nel mio caso il 2.6.34
e le eventuali patch:

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.tar.bz2
wget http://www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.34.bz2

Una volta scaricati i sorgenti scompattarli con

tar -xvjf linux-2.6.34.tar.bz2

spostare la cartella estratta in /usr/src

sudo mv linux-2.6.34 /usr/src

portarsi in /usr/src e creare un link simbolico alla directory dei sorgenti.

cd /usr/src
sudo ln -sf linux-2.6.34 linux

spostare le eventuali patch da applicare, nel link creato

sudo mv PERCORSO/patch-* /usr/src/linux

spostarsi dentro al link ai sorgenti e applicare la patch con:

cd linux
sudo bzcat patch-2.6.34.bz2 | patch -p1

Configuriamo ora il kernel con il consueto:

sudo make gconfig

Puliamo da eventuali compilazione precedenti:

sudo make-kpkg clean

Workaround n.1:

sudo make-kpkg debian

Editiamo il file version_vars.mk

sudo gedit debian/ruleset/misc/version_vars.mk

Portandosi alla riga 141, sostituire il seguente blocco di
istruzioni:

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

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; \
       fi)

Ora passiamo alla compilazione:

sudo fakeroot make-kpkg --initrd kernel_headers kernel_image

Terminata la compilazione e generato il file.deb (in /usr/src),
dobbiamo bypassare l’errore in fase di installazione del pacchetto,
generato dal postinst.d presente in /etc/kernel.

Workaround n.2:

Prima di installare il deb, spostiamo momentaneamente la directory
/etc/kernel/postinst.d e dopo l’installazione del deb, la rimettiamo
al suo posto:

sudo mv /etc/kernel/postinst.d Percorso/Che/Ti/Pare
sudo dpkg -i linux-2.6.34*.deb
sudo mv Percorso/Che/Ti/Pare /etc/kernel

Il kernel dovrebbe essersi installato correttamente.
Riavviare e testare.

Categorie:Karmic Tag:
I commenti sono chiusi.