8 de enero de 2010

Recompilar el Kernel al estilo Debian: La Píldora Roja


Compilar el Kernel de Linux no es tan terrible como suena y se puede hacer de una forma conservadora manteniendo el anterion kernel por si las moscas.
En debian hay un método de recompilación del kernel que genera un paquete .deb instalable y desinstalable con apt o aptitude.
Tambien es posible recompilar el kernel en una máquina diferente a la que va destinada, esto está especialmente indicado en ordenatas antiguos, pudiendo luego instalarlo en la máquina carca como un paquete debian sin más.
Este método lo vi por algún sitio denominado como: La Píldora Roja.

Y ahora paso por paso:

1) Descargamos el Kernel y Patches: en www.kernel.org
La última versión estable o la que queramos con sus patches si los tuviera.

-lo descargamos en la carpeta /usr/src/ y lo descomprimimos-


# cd /usr/src
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.3.tar.bz2
# tar xvf linux-2.6.32.3.tar.bz2

- Hacer el enlace simbólico a la carpeta del nuevo kernel-
- Es recomendable borrar otros enlaces simbólicos de kernels anteriores que hubiera-

# ln -s linux-2.6.32.3 linux


2) Paquetes Debian necesarios:


# aptitude update
# aptitude install kernel-package build-essential libncurses5-dev fakeroot initramfs-tools zlib1g-dev

-aptitude se encargará de revisar los paquetes instalados, sus dependencia y si faltara algún otro paquete-

3) Configurando el Kernel:

Este es el paso clave. Aquí es donde se pueden hacer virguerias simplificando el kernel, quitando módulos que no sean necesarios y/o poniendo nuevos modulos necesarios para el hardware del equipo. Aqui es donde hacemos que no funcione ni a tiros o cuando el kernel se adapta angelicalmente a las especificaciones de nuestro hardware.
Para la gente normal hay dos opciones asumibles:
  • Usar la configuración por defecto del nuevo kernel.
  • Si ya hay un sistema linux funcionando en la máquina podemos usar la configuración de nuestro kernel actual, pero ojo puede que las mejoras del nuevo kernel no se configuren correctamente e incluso que no funcione si son versiones muy distantes.
Vamos con la configuración:
-limpiamos configuraciones de anteriores compilaciones del kernel-

# cd linux
# make clean && make mrproper


Hay varias formas de configurar el kernel:
  • make defconfig; configuración por defecto.
  • make oldconfig; toma el antiguo config y pregunta las cosas nuevas.
  • make xconfig; menus basados en X.
  • make gconfig; menus para gnome.
  • make localmodconfig; nuevo sistema de configuración en 2.6.32.
  • make menuconfig; menus basados en ncurses.

-Para usar la configuracion del kernel actual: Copiamos el fichero de configuración del kernel actual al directorio del nuevo kernel con el nombre .config-


# cp /boot/config-2.6.26-2-486 /usr/src/.config

-Creamos el menu de configuración-

# make menuconfig

... y aqui tenemos el sancta sanctorum del kernel, que podemos curiosear, revisar, cambiar y escojer la mejor configuración para nuestro hardware.

- Seleccionamos "Load alternate Configuration File"
- Y nos aparace en el siguiente menu el archivo que hemos copiado ".config"
- Aceptamos todo y salimos del menú de configuración.

4) Compilando el Kernel:

# make-kpkg clean
# fakeroot make-kpkg --initrd --append-to-version=-pp01 kernel_image

Se puede y/o compilar también las cabeceras del kernel añadiendo al final del comando anterior: kernel_headers

Y ahora ... paciencia, ya que esto lleva su tiempo, tiempo, y tiempo de compilación.
En pantalla iran apareciendo los módulos que se van compilando.

Comprobar que no aparecen errores de compilacion: en este caso hay que encomendarse a san google para ver si hay algún otro incauto le haya ocurrido lo mismo, intentar corregirlo y vuelta a empezar.

Finalmente obtendremos los paquetes debian:

kernel-linux-image.deb
kernel-linux-headers.deb (si hemos puesto la opción kernel_header)

5) Instalación del nuevo kernel:

# dpkg -i kernel-linux-image.deb

La instalación hace todos los cambios necesarios para el funcionamiento del nuevo kernel, incluso cambia el menu de arranque de grub /boot/grub/menu.lst poniendo como arranque por defecto el nuevo kernel, cosa que convien revisar ya que a veces no acierta.
Comprobar tambien que se ha creado la carpeta /lib/modules/linux-2.6.32.3 con los nuevos módulos correspondientes.

y solo queda...

# reboot

No es de extrañar que la cosa no funcione a la primera, don't panic ... lo podemos desinstalar y el sistema volverá, ó debe volver!, a su estado anterior :))

# dpkg -r kernel-linux-image.deb


webRef:

-Tutoriales-
Kernel_Compilation_From_Source
Compilar-kernel-estilo-debian

-Optimizar el kernel 2.6.32-
Nueva opción de configuración: # make localmodconfig
http://preguntas.barrapunto.com/preguntas/10/01/04/2254250.shtml

No hay comentarios:

Publicar un comentario en la entrada