miércoles, 24 de noviembre de 2010

Actualizando el kernel en Debian sin usar repos

Pues bueno, a veces es necesario salirse del ciclo de actualizacion de paquetes de Debian, necesite actualizar mi kernel por lo menos a la version 2.6.34, buscando en los repos oficiales creo que lenny llegaba hasta la 2.6.26 y usando los backports llegaba hasta la 2.6.31 asi que bueno, me toco compilar el kernel, espero que este POST les sirva a muchos, que googleamos por ahi y encontramos bien pocos recursos utiles, aqui va:

  • instalar los siguientes paquetes de los repos oficiales:
apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential
  • El directorio de trabajo sera el usr/src:
#> cd /usr/src
  • Descargar la imagen del kernel que deseamos compilar:
#> wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.7.tar.bz2
  • Descomprimir el kernel recien descargado:
#> tar xjf linux-2.6.34.7.tar.bz2
  • Creamos un enlace simbolico a la carpeta del kernel recien desempacado:
#> ln -s linux-2.6.34.7 linux
  • Cambiamos a dicho directorio de trabajo:
#> cd linux
  • Comando para limpiar todos los archivos de compilaciones anteriores y restaurar el directorio de compilacion a su estado original:
#> make clean && make mrproper
  • Copiamos el archivos de configuracion que el kernel actualmente instalado usa -esto nos ahorra un mundo de configuraciones en el menu de configuracion del kernel que viene mas adelante-:
#> cp /boot/config-`uname -r` ./.config
  • Ahora si, vamos al menu de configuracion del kernel:
#> make menuconfig

Dentro del menu, vamos al final y escogemos la opcion "Load an alternate configuration file", luego le das Aceptar en la nueva pantallas, puesto que nuestro archivo config ya esta seleccionado. Luego presionamos EXIT y respondemos que si queremos guardar los cambios en nuestro "config" file.
  • Ahora para compilar el kernel vienen estas dos lineas:
#> make-kpkg clean
#> fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers

Unas notas:
1. donde dice "custom" ahi podes poner algun nombre que te ayuda a distinguir esta compilacion de otras versiones de kernel que tengamos instalados, en mi caso siempre uso htamayo
2. sentite comodo, trae tu bebida favorita o encende la TV porque el proceso de compilacion se tarda, depende mucho de tu CPU, en mi caso, se tardo 1 hora y 40 minutos :-)

  • Troubleshooting: al finalizar la compilacion obtuve este error: The UTS Release version in include/linux/version.h does not match current version: 2.6.34.7-htamayo, please correct this...". Investigue por ahi y al parecer es un bug que solo esta documentado para la version del kernel del 2.6.33, pero bueno, yo use una version mayor y me dio error , en caso que te suceda segui estos pasos:
  • #> unlink linux
  • #> rm -r linux-2.6.34-7
  • #> tar xjf linux-2.6.34.7.tar.bz2
  • #> ln -s linux-2.6.34.7 linux
  • #> cd linux
  • #> cp include/generated/utsrelease.h include/linux
  • y luego continuas con los pasos anteriormente descritos
Al final, si todo salio bien, reinicia y ya tenes listo tu nuevo kernel.

happy coding

No hay comentarios:

Publicar un comentario