El Módem – Ahora en www.elmodem.com

Versión Desactualizada

Cómo compilar el kernel de (K)Ubuntu

Posted by Koki en noviembre 9, 2006

Aunque no es imprescindible compilar el kernel de nuestra distribución Linux para poder usarla en forma normal, algunas veces puede ser necesario hacerlo para habilitar alguna opción en particular o deshabilitar el que se carguen ciertos módulos que vienen por defecto y que no necesitamos (y así ahorrar algo de tiempo de carga).

Esta pequeña guía la hice para un curso en la universidad, utilizando Kubuntu 6.06 y el kernel 2.6.15.23 de aquella época, aunque sirve para el Ubuntu actual (y Debian) y versiones recientes del kernel. Me basé en este how-to.
Primero, necesitamos instalar los paquetes build-essential y kernel-package que nos servirán para compilar el kernel:

$sudo apt-get install build-essential kernel-package

Luego, es necesario descargar las fuentes del kernel, es posible descargar las fuentes de Ubuntu (linux-source) o las fuentes con módulos de Debian (kernel-source). En este ejemplo descargamos las fuentes de Ubuntu:

$ sudo apt-get install linux-source

Este comando descarga comprimido las fuentes del kernel más reciente (en /usr/scr/). En este ejemplo, el archivo comprimido linux-source-2.6.15.23.tar.bz2. Para descomprimirlo hacemos:

$ sudo tar jxvf linux-source-2.6.15.tar.bz2
Esto descomprime las fuentes del kernel en /usr/src/linux-source-2.6.15/

Es posible usar una configuración pre existente (la configuración de la instalación de Kubuntu) para no tener que ir navegando por todas las opciones de módulos y sólo habilitar/deshabilitar lo necesario. Para esto copiamos el archivo /boot/config-2.6.8.1-3-386 como .config en la carpeta /usr/src/linux-source-2.6.15/ (el kernel 2.6.8.1-3-386 es el que traía Ubuntu 6.06

$cd /usr/src/linux-source-2.6.15/

$sudo cp /boot/config-2.6.8.1-3-386 .config

Para utilizar como base la configuración anterior, se invoca al programa menuconfig con el comando:

$ sudo make oldconfig menuconfig

Pantalla de configuración

Con este programa habilitaremos o deshabilitaremos los módulos que queremos en el kernel, acá hay bastantes opciones, lo mejor es buscar un poco en Google para saber para qué es cada una, aunque algunas son bastante intuitivas, por ejemplo, yo deshabilité el soporte para memoria RAM mayor a 1 GB (tengo escasos 512MB), el soporte para laptops Dell y Toshiba (porque es un desktop), el soporte para particiones Mac, Solaris, Atari, Amiga, etc. Es cuestión de probar y armarse de paciencia. Se puede deshabilitar una opción, integrarla al kernel o compilarla en forma modular (para por ejemplo dar la posibilidad de instalar luego cierto hardware nuevo). Una explicación de las distintas secciones puede ser encontrada acá.

Imagen 2
Luego de habilitar/deshabilitar lo que queremos y guardar los cambios, construimos los paquetes del kernel con los comandos:

$ sudo make-kpkg clean
$ sudo make-kpkg –append-to-version=.050606 –initrd kernel_image

El parámetro de –append-to-version sirve para darle un nombre particular a la versión del kernel (en este caso la fecha) para identificarlo fácilmente.
Luego que termina la construcción, se crea un archivo kernel-image-2.6.15.7-ubuntu1.050606_10.00.Custom_i386.deb, este archivo debe instalarse con el comando:

$ sudo dpkg -i kernel-image-2.6.15.7-ubuntu1.060606_10.00.Custom_i386.deb

Este comando, además de instalar el kernel nuevo, actualiza el Grub. Finalmente, se debe reiniciar la PC y escoger el nuevo kernel.

Nota: Al momento de la compilación es necesario disponer de espacio suficiente en el disco duro (y bastante tiempo dependiendo del procesador que tengamos). La primera vez que lo hice, al cabo de unos 45 minutos me quedé sin espacio en la partición y fue necesario empezar (casi) todo otra vez…

Perublogs tags:

6 respuestas to “Cómo compilar el kernel de (K)Ubuntu”

  1. ana said

    Hola a todos,

    Estoy haciendo una compilación entre el Kernel 2.4.27 en Linux Ubuntu, con Kernel 2.6.17.

    El error impide que el ordenador arranque con el Kernel 2.4.27 asi que tengo que reniciar y arrancar con el Kernel 2.6.17.

    Si alguien me puede echar una mano mi email es paleanu@gmail.com

  2. Koki said

    Qué error te da al compilar?

  3. ana said

    Hola que tal Koki!

    Este es el error que me da y por lo tanto no me deja arrancar kernel panic: vfs: unable to mount root fs on 00:00

    Un saludo!

  4. Koki said

    Hola Ana,

    me parece que el problema está en el Grub. Cómo tienes el archivo /boot/grub/menu.lst ?

  5. Juanca said

    Luego de:

    $ sudo make oldconfig menuconfig

    Obtengo:

    make: *** No hay ninguna regla para construir el objetivo `oldconfig’. Alto.

  6. Enruique said

    Hola, quisiera compilar el kernel de Kubuntu pro tengo la versión 7.04 y para Amd 64 bits, los pasos que tengo que hacer son los mismos? Si tengo que cambiar algo, podría decirme exactamente que? (supongo que las instrucciones en las que aparece i386 deben cambiar).
    Si es tan amable, erspondame al mail enriquesequeiro@yahoo.com.ar
    Muchas gracias.

Deja un comentario