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

Problema

El problema es que después de dar a su costumbre de make-kpkg comando 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 para mayor abundamiento, el comando que me dio 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 por la que recibe el mensaje de error anterior se debe a que la gente del kernel decidió cambiar algo en el kernel-package que se encarga de compilar el kernel personalizado.

Solución

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

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

y cambie las líneas siguientes:

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 por dar a su make-kpkg comando.

En la próxima versión estable de Debian Squeeze, es decir, el archivo cambió de version_vars.mk actual versión estable 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 los mismos que he mencionado anteriormente, pero sí solucionar el mismo problema. Puede ser que usted debe copiar los cambios (en lugar de la mina desde arriba) de la contracción a su sistema de Lenny como esos cambios son de los mantenedores del kernel reales!

¡Eso es!

Otros Artículos Relacionados: