TIP: Kompilering 2.6.33 og over kerner på Debian Lenny
Så lad os sige du ønsker at installere en Linux-kerne 2.6.33 eller nyere på dit Debian Lenny system.
Problem
Problemet er, at når du giver din sædvanlige make-kpkg-kommandoen til at kompilere Linux-kerne på Debian Lenny vil du se følgende fejlmeddelelse efter engang i udarbejdelse processen:
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
Bare for fuldstændighedens skyld, var den kommando, som jeg gav for over kompilering:
lenny:/usr/src/linux-source-2.6.33# make-kpkg --initrd --append-to-version=-lennycompiletest2633squeeze kernel_image
Grunden til at vi får ovenstående fejlmeddelelse er fordi kernen folk besluttet at ændre noget i kernel-package , der er ansvarlig for udarbejdelsen af selvbyggede kerne.
Opløsning
Den nemmeste måde at løse denne fejlmeddelelse er at ændre den følgende fil, der bliver installeret, når du installerer kernel-package pakken:
# nano /usr/share/kernel-package/ruleset/misc/version_vars.mk
og ændre følgende linjer:
UTS_RELEASE_HEADER=$(call doit,if [ -f include/linux/utsrelease.h ]; then \
echo include/linux/utsrelease.h; \
else \
echo include/linux/version.h ; \
fi)
til
UTS_RELEASE_HEADER=$(call doit,if [ -f include/linux/utsrelease.h ]; then \
echo include/generated/utsrelease.h; \
else \
echo include/generated/utsrelease.h ; \
fi)
og nu igen kompilere din kerne igen ved at give din make-kpkg-kommandoen.
I den næste stabile udgave af Debian, dvs Squeeze, ændrede filen version_vars.mk fra aktuelle stabile udgave, dvs Lenny.
root@debian:~# diff version_vars.mk.lenny version_vars.mk.squeeze
Output:
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:~#
Ændringerne er ikke nøjagtig den samme, som jeg har nævnt ovenfor, men det løser det samme problem. Kan være du skal kopiere de ændringer (i stedet for mine fra oven) fra Squeeze til din eksisterende Lenny system som disse ændringer er fra de faktiske kerne vedligeholderne!
Det er det!











3 Juni 2011 kl 3:29 am
hej og tak :-)
denne "udnyttelse" ikke køre på 2.6.37.6
Der er et plaster eller en anden til risolve?
tak!
Pol
Svar på denne kommentar
27 Nov 2011 kl 12:22 am
Behøver jeg at genoversætte HELE fkcing kernal efter at gøre dette?? coz Jeg prøvede at genoptage efter at gøre dette, og fejlen fortsætter, * ^ & * ^ & $ #!! rm-rf gøre!! arg!
Svar på denne kommentar
27 Nov 2011 kl 12:27 am
køre "make-kpkg clean" i slutningen af denne procedure, før rekompilere?
Svar på denne kommentar