Karmic: errori di compilazione Kernel 2.6.34
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.
Commenti recenti