COMO COMPILAR EL KERNEL AL ESTILO DE DEBIAN

Obtener las fuentes del kernel

    Las fuentes del kernel las podemos obtener de muchos sitios. El oficial, como todos san es www.kernel.org pero también están en los repositorios de Debian, y yo las he sacado de ahí, porque tiene algunas ventajas, como luego veremos.

    En los repositorios de Debian los vamos a encontrar con el nombre kernel-source, por lo tanto para obtener las fuentes del kernel que tenemos instalado y corriendo en nuestro sistema, sólo tendremos que hacer:

# apt-get install kernel-source

Con esto se descargará el archivo kernel-source-2.X.X.bz2 en el directorio /usr/src

# cd /usr/src

Si existe un enlace llamado linux a un kernel antiguo, lo borramos:

# rm linux

Ahora descomprimimos el archivo de las fuentes:

# tar jxvf kernel-source-2.X.X.bz2

o # tar zxvf si en lugar de un bz2 es un tar.gz

Creamos un enlace simbólico (llamado linux) a ese directorio:

# ln -s linux-source-2.X.X linux

Configurar el Kernel

    Hay varias formas de configurar el kernel. Probablemente la mayoría de la gente utiliza una de estas dos: make menuconfig o make xconfig; para utilizar make menuconfig necesitaremos las librerías ncurses-dev y para utilizar make xconfig necesitaremos las librerías qt-dev.

    Una duda que siempre surge: para configurar el kernel, ¿puedo partir de una configuración conocida?. Sí, al instalar un kernel Debian, se crea, en el directorio /boot, un archivo llamado config-version-arquitectura, es un archivo de texto con la configuración actual del kernel, por lo tanto, para partir de esa base y comenzar la configuración del nuevo kernel desde la actual, lo que tenemos que hacer es copiar dicho archivo al directorio /usr/src/linux, pero llamádolo .config, es decir:

# cd /usr/src/linux

# cp /boot/config-version-arquitectura .config

    Ya podemos hacer (parados en el directorio /usr/src/linux) un make oldconfig menuconfig o un make oldconfig xconfig y modificar las opciones que queramos del kernel, es decir, configurarlo a nuestro gusto. Con mucho cuidado, eso sí, porque este es el paso crítico. 

Construir el paquete .deb kernel

    Para construir el paquete con el que instalaremos el nuevo kernel vamos a usar la orden make-kpkg. Esta orden lo que hace básicamente es sustituir a las clásicas make dep, make clean, make bzImage y make modules. Admite numerosas opciones y modificadores pero para lo que nos ocupa ahora sólo necesitaremos hacer lo siguiente:

# make-kpkg clean
#
make-kpkg --revision=KernelX.X.X kernel_image

    Lo único que debes modificar de la orden anterior es XXXX, que representa una secuencia alfanumérica que tendrás que decidir vos, y que se añadirá al número de versión del kernel para diferenciar el kernel que se esta compilando de cualquier otro que ya esté instalado en el sistema. Por lo tanto XXXX se debe sustituir por lo que quieras, sin utilizar el guión bajo (_) ni expresiones como "-386", "-606", "-K7", "-sparc", etc., porque son las usadas por los kernel precompilados de Debian y podrían inducir a error.

    Esperar que el proceso de compilación termine.

Instalar el kernel

    Si todo lo anterior ha ido bien, en el directorio /usr/src se debe haber creado un archivo de nombre kernel-image-version.XXXX_10.00.Custom_i386.deb

    Este es el archivo que contiene nuestro kernel compilado listo para instalar, lo que haremos con:

# dpkg -i ../kernel-image-version.XXXX_10.00.Custom_i386.deb

    Esta orden es equivalente a las clásicas make modules_install y make install, además de colocar en su sitio la imagen initrd generada y actualizar el grub o el lilo.

Ahora, y por seguridad, borramos el enlace que habíamos creado: # rm linux

Sólo nos queda arrancar con nuestro nuevo kernel. Cualquier duda o consulta me escriben, atte.

Lte. Daniel Minacori
www.berkanet.com.ar
daniel@berkanet.com.ar