SUGGERIMENTO: Compilare kernel 2.6.33 e superiori su Debian Lenny
Quindi diciamo che si desidera installare un kernel Linux 2.6.33 o più recente del sistema Debian Lenny.
Problema
Il problema è che dopo si dà il comando make-kpkg solito per compilare il kernel Linux su Debian Lenny verrà visualizzato il seguente messaggio di errore dopo qualche tempo nel processo di compilazione:
COLUMNS=150 dpkg -l 'gcc*' perl dpkg 'libc6*' binutils make dpkg-dev |\
awk '$1 ~ /[hi]i/ { printf("%s-%s\n", $2, $3) }'> debian/buildinfo
uname -a >> debian/buildinfo
echo using the compiler: >> debian/buildinfo
grep LINUX_COMPILER include/linux/compile.h | \
sed -e 's/.*LINUX_COMPILER "//' -e 's/"$//' >> debian/buildinfo
grep: include/linux/compile.h: No such file or directory
echo kernel source package used: >> debian/buildinfo
echo linux-source-2.6.33 1~experimental.4 >> debian/buildinfo
echo applied kernel patches: >> debian/buildinfo
echo done > debian/stamp/build/kernel
/usr/bin/make -f ./debian/rules debian/stamp/binary/pre-linux-image-2.6.33-lennycompiletest2633squeeze
make[1]: Entering directory `/usr/src/linux-source-2.6.33'
====== making target debian/stamp/install/linux-image-2.6.33-lennycompiletest2633squeeze [new prereqs: ]======
This is kernel package version 11.015.
echo "The UTS Release version in include/linux/version.h"; echo " \"\" "; echo "does not match current version:"; echo " \"2.6.33-lennycompiletest2633squeeze\" "; echo "Please correct this."; exit 2
The UTS Release version in include/linux/version.h
""
does not match current version:
"2.6.33-lennycompiletest2633squeeze"
Please correct this.
make[1]: *** [debian/stamp/install/linux-image-2.6.33-lennycompiletest2633squeeze] Error 2
make[1]: Leaving directory `/usr/src/linux-source-2.6.33'
make: *** [kernel_image] Error 2
Solo per ragioni di completezza, il comando che ho dato per la compilazione di sopra era:
lenny:/usr/src/linux-source-2.6.33# make-kpkg --initrd --append-to-version=-lennycompiletest2633squeeze kernel_image
Il motivo per cui si ottiene il messaggio di errore di cui sopra è perché la gente del kernel hanno deciso di cambiare qualcosa nel kernel-package , che è responsabile della compilazione del kernel personalizzato.
Soluzione
Il modo più semplice per risolvere questo messaggio di errore è quello di modificare il seguente file che viene installato durante l'installazione del pacchetto kernel-package:
# nano /usr/share/kernel-package/ruleset/misc/version_vars.mk
e modificare le seguenti righe:
UTS_RELEASE_HEADER=$(call doit,if [ -f include/linux/utsrelease.h ]; then \
echo include/linux/utsrelease.h; \
else \
echo include/linux/version.h ; \
fi)
a
UTS_RELEASE_HEADER=$(call doit,if [ -f include/linux/utsrelease.h ]; then \
echo include/generated/utsrelease.h; \
else \
echo include/generated/utsrelease.h ; \
fi)
e ora ricompilare nuovamente il kernel dando il tuo comando make-kpkg.
Nella prossima versione stabile di Debian Squeeze, cioè, il file version_vars.mk cambiato da stabile attuale versione ie Lenny.
root@debian:~# diff version_vars.mk.lenny version_vars.mk.squeeze
Uscita:
141,145c141,147
< UTS_RELEASE_HEADER=$(call doit,if [ -f include/linux/utsrelease.h ]; then \
< echo include/linux/utsrelease.h; \
< else \
< echo include/linux/version.h ; \
< fi)
---
> 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)
187,188d188
<
< AM_OFFICIAL := $(call doit,if [ -f debian/official ]; then echo YES; fi )
root@debian:~#
I cambiamenti non sono esattamente la stessa come ho già detto, ma lo fa risolvere lo stesso problema. Può essere che si dovrebbe copiare le modifiche (al posto di mio da sopra) dal Spremere al sistema Lenny esistente come questi cambiamenti sono da manutentori del kernel!
Questo è tutto!













3 Giugno, 2011 alle 03:29
ciao e grazie :-)
questo "exploit" non viene eseguito su 2.6.37.6
c'è una patch o altro per risolve?
grazie!
Pol
Rispondi a questo commento
27 Novembre, 2011 alle 12:22
Devo ricompilare il fkcing INTERO kernal dopo aver fatto questo??? coz ho provato a riprendere dopo aver fatto questo e l'errore persiste, * ^ & * ^ & $ #!! rm-rf FACCIA!! arg!
Rispondi a questo commento
27 Novembre, 2011 alle 00:27
eseguire "make-kpkg clean" al termine di questa procedura, prima di ricompilare?
Rispondi a questo commento