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!

Andre Related Posts: