Así que digamos que usted desea instalar un kernel Linux 2.6.33 o superior en su sistema Debian Lenny.

Problema

El problema es que después de dar su habitual comando make-kpkg para compilar el kernel de Linux en Debian Lenny, verá el siguiente mensaje de error después de algún tiempo en el proceso de compilación:

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

Sólo por mayor abundamiento, el comando que di para la compilación anterior fue:

lenny:/usr/src/linux-source-2.6.33# make-kpkg --initrd --append-to-version=-lennycompiletest2633squeeze kernel_image

La razón de que obtenemos el mensaje de error anterior se debe a que la gente del kernel decidieron cambiar algo en el kernel-package que se encarga de compilar kernel personalizado.

Solución

La forma más fácil de solucionar este mensaje de error es modificar el siguiente archivo que se instala al instalar el paquete kernel-package:

# nano /usr/share/kernel-package/ruleset/misc/version_vars.mk

y cambiar las siguientes líneas:

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)

y ahora volver a compilar el kernel de nuevo dándole a su comando make-kpkg.

En la próxima versión estable de Debian Squeeze es decir, la version_vars.mk archivo cambió de versión estable actual es decir, Lenny.

root@debian:~# diff version_vars.mk.lenny version_vars.mk.squeeze

Salida:
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:~#

Los cambios no son exactamente el mismo como he mencionado anteriormente, pero lo hace de solucionar el mismo problema. Puede ser que usted debe copiar los cambios (en lugar de la mía desde arriba) de la Squeeze a su sistema existente como Lenny esos cambios son de los mantenedores del kernel reales!

Eso es todo!

Be Sociable, Share!