ASTUCE: Compilation 06/02/33 et les grains au-dessus sur Debian Lenny
Donc, disons que vous voulez installer un noyau Linux 2.6.33 ou plus récent sur votre système Debian Lenny.
Problème
Le problème est que une fois que vous donnez à votre habitude make-kpkg commande pour compiler le noyau Linux sur Debian Lenny, vous verrez le message d'erreur suivant après un certain temps dans le processus de compilation:
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
Juste pour un souci d'exhaustivité, la commande que j'ai donné pour la compilation ci-dessus était la suivante:
lenny:/usr/src/linux-source-2.6.33# make-kpkg --initrd --append-to-version=-lennycompiletest2633squeeze kernel_image
La raison pour laquelle nous obtenons le message d'erreur ci-dessus est parce que les gens du noyau a décidé de changer quelque chose dans le kernel-package qui est responsable de la compilation du noyau personnalisé.
Solution
La meilleure façon de résoudre ce message d'erreur est de modifier le fichier suivant qui est installé lorsque vous installez kernel-package package:
# nano /usr/share/kernel-package/ruleset/misc/version_vars.mk
et modifiez les lignes suivantes:
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/linux/utsrelease.h ]; then \
echo include/generated/utsrelease.h; \
else \
echo include/generated/utsrelease.h ; \
fi)
et maintenant re-compiler votre noyau à nouveau en donnant votre commande make-kpkg.
Dans la prochaine version stable de Debian Squeeze et dire, le fichier modifié à partir version_vars.mk actuelle version stable soit Lenny.
root@debian:~# diff version_vars.mk.lenny version_vars.mk.squeeze
Sortie:
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:~#
Les changements ne sont pas exactement le même que je l'ai mentionné ci-dessus mais il résoudre le même problème. Peut-être vous devez copier les changements (au lieu du mien ci-dessus) par le resserrement à votre système existant comme Lenny ces changements sont des mainteneurs du noyau réels!
Ça y est!











3 juin 2011 à 3:29 am
bonjour et merci :-)
cette "exploit" ne fonctionne pas sur 2.6.37.6
y at-il un patch ou autre risolve?
merci!
Pol
Répondre à ce commentaire
27 novembre 2011 à 12:22 am
Dois-je recompiler le fkcing ENTIER kernal après avoir fait cela?? coz j'ai essayé de reprendre après avoir fait cela et l'erreur persiste, * ^ & * ^ & $ #!! rm-rf FAIRE!! arg!
Répondre à ce commentaire
27 novembre 2011 à 12:27 am
exécuter "make-kpkg clean" à la fin de cette procédure, avant de recompiler?
Répondre à ce commentaire