(Nota: Para facilitar su comprensión, en esta guía supondremos que la versión actual de nuestro núcleo es la 2.6.4 y la nueva que vamos a compilar es la 2.6.8 aplicándole el patch de la 2.6.9-rc1)

  1. Arrancamos Linux
  2. Si estamos en entorno gráfico, abrimos una consola
  3. Si no hemos arrancado como root, simulamos un login:

    su

    Introducimos el password del root

  4. Comprobamos la versión del núcleo que tenemos:

    uname -sr

  5. Abrimos un navegador y comprobamos en kernel.org la versión estable más reciente (Es la que aparece en la linea que pone: The latest stable version of the Linux kernel is…)
  6. La descargamos en /usr/src/ (el enlace de descarga es la letra F que aparece a la derecha de la fecha del kernel). Apuntad la extensión del archivo descargado (tar.bz2 o tar.gz) para usarlo posteriormente en la descompresión
  7. Si nuestra máquina cuenta con algún componente no soportado por la última versión estable del núcleo, pero si por una proxima versión de la que actualmente solo existe un parche (como me sucede a mi con mi procesador Intel Centrino “Dothan”), descargaramos también el parche al mismo directorio que el kernel (yo tuve que descargar el prepatch 2.6.9-rc1).
  8. Cerramos el navegador y volvemos a la consola
  9. Entramos en el directorio /usr/src/

    cd /usr/src/

  10. Comprobamos el contenido del directorio:

    ls -l

    En caso de existir un enlace simbolico llamado linux@, lo borramos:

    rm linux

    En cambio, si linux es un directorio, lo renombramos a linux-2.6.4:

    mv linux linux-2.6.4

  11. Descomprimimos el nuevo kernel (se llamará linux-2.6.8.EXT, donde EXT indica la extensión):

    En caso de que la extensión sea tar.bz2

    tar -jvxf linux-2.6.8.tar.bz2

    O si es tar.gz

    tar -zxvf linux-2.6.8.tar.gz

  12. Creamos un enlace simbolico al directorio de la nueva versión:

    ln -s linux-2.6.8 linux

  13. Entramos en el directorio linux:

    cd linux

  14. Parcheamos el kernel (esto solo es necesario si hemos descargado un parche como se indico anteriormente):

    bzcat ../patch-2.6.9-rc1.bz2 | patch -p1

  15. Si ya habíamos compilado anteriormente el núcleo, ejecutamos:

    make mrproper

  16. Hacemos un listado del directorio /boot/:

    ls -la /boot/

    En caso de que exista en ese directorio el archivo de configuración para la compilación del núcleo actual (será un archivo que contenga la palabra config), lo copiamos al directorio linux (en el que nos encontramos):

    cp nombre_del_archivo_config .config

    Y despues ejecutariamos:

    make oldconfig

    Con esto actualizariamos el archivo .config con las opciones del nuevo núcleo. Si en este proceso nos hace alguna pregunta, simplemente pulsaremos INTRO para seleccionar la opción por defecto.

  17. Ahora pasaremos a configurar el kernel, para ello tenemos tres opciones:

    Modo grafico xwindows:

    make xconfig

    Modo grafico de consola:

    make menuconfig

    Modo consola:

    make config

    Yo recomiendo que utilizeis la primera o en todo caso la segunda opción.
    Configuramos las opciones que necesitemos y una vez acabemos salvamos el archivo de configuración y salimos del asistente.

    (Nota: Podeis copiar el archivo .config a otro lugar para su posterior uso en otras compilaciones. Yo lo que hago es copiarlo al directorio /boot/ renombrandolo a .config-2.6.9-rc1)

  18. Ahora llega el momento de compilar, para ello ejecutamos:

    make dep && make clean && make bzImage

    Según la potencia de nuestra máquina puede tardar un buen rato.

  19. Una vez compilado el núcleo, le toca el turno a los módulos:

    make modules && make modules_install

    Esto también tardará otro rato (probablemente más que la compilación del núcleo)

  20. Copiamos el fichero System.map y el núcleo obtenido (que se encuentra en /usr/src/linux/arch/i386/boot/bzImage, si nuestra arquitectura es i386) al directorio /boot , con los nombres System.map-2.6.9-rc1 y vmlinuz-2.6.9-rc1:

    cd /boot
    cp /usr/src/linux/System.map System.map-2.6.9-rc1
    cp /usr/src/linux/arch/i386/boot/bzImage vmlinux-2.6.9-rc1

    Conviene además que creemos en ese directorio unos enlaces simbólicos System.map y vmlinuz apuntando a ellos:

    rm System.map
    ln -s System.map-2.6.9-rc1 System.map
    rm vmlinuz
    ln -s vmlinuz-2.6.9-rc1 vmlinuz

  21. Por último, actualizaremos si es necesario el fichero de configuración de nuestro gestor de arranque. En teoría no hace falta, ya que al arrancar se usa el System.map y vmlinuz que son enlaces simbolicos que ahora apuntan al las nuevas versiones, aunque nunca esta de más añadir una entrada para el antiguo núcleo por si el nuevo falla.

    Para ello editaremos el archivo /etc/lilo.conf (si utilizamos LILO) o /boot/grub/menu.lst (si usamos GRUB) y haremos los cambios pertinentes, o también podemos utilizar la utilidad de configuración del gestor de arranque que traiga nuestra distribución de Linux (la mayoría de modernas distribuciones trae una).

  22. Luego reiniciaremos la maquina, que arrancará con el nuevo núcleo, como comprobaremos con:

    uname -sr

Para realizar esta guía me he basado en otras disponibles en Internet, como por ejemplo:
Guía de compilación del núcleo Linux para torpes 😉
Como compilar un Kernel paso a paso
Cómo parchear el kernel

6 pensamientos en “

  1. SauronZ

    Tiene muy buena pinta .-))

    Ahora a ver si de verdad rula, porque el kernel 2.6.9 me esta dando una guerra que no es ni medio normal.

    Salu2 y enhorabuena.

    Me gusta

  2. SauronZ

    Gracias!!!!!!!!!!!!!

    Funciona de cojones tu howto!!!

    Tras probar con mas de cinco Howtos distintos, el mas completo, especifico y con menos fallos es el tuyo.

    Mi mas sinceras gracias y enhorabuena.

    SauronZ

    Me gusta

  3. IoZ

    Me alegra que te haya servido de ayuda, ya que hice este tutorial pensando en otros usuarios que se pudieran encontrar los mismos problemas que yo al intentar compilar el nucleo.
    A ver si tengo tiempo y publico otras guías que tengo en mente.
    Salu2

    Me gusta

  4. JBoY

    Muchas gracias, siempre necesitaba la ayuda de mi hermano para compilar el Kernel. Esta vez y siguiendo tus pasos lo he compilado sin ayudas! ^_^

    Mis agradecimientos y saludos!

    Me gusta

  5. Jose Roberto

    Esta muy bueno el tutorial, ya habia realizado un procedimiento de compilacion igual a este y me salio de maravilla.

    Creo que te falto el initrd-version-kernel.img

    # /sbin/mkinitrd initrd-version-del-kernel.img version-del-kernel

    Me gusta

Los comentarios están cerrados.