Tal y como explicaba en el primer artículo de esta serie de artículos sobre la compilación del kernel, compilar un kernel vanilla no es tarea fácil. Se requieren conocimientos avanzados para poder realizar este proceso. El kernel dispone de cientos de opciones que deberemos configurar. Si os decidís por este método, vamos a ello. Debereis seguir los pasos explicados en el primer artículo para descargar el kernel que vayais a instalar.
Al igual que en la compilación de un kernel al estilo Debian, deberemos tener instaladas las siguientes herramientas para la compilación:
# aptitude install kernel-package libncurses5-dev fakeroot gcc make build-essential
Seguimos los pasos en este caso también para descomprimir el tarball. Copiamos el kernel que descargamos a /usr/src, descomprimimos y creamos un enlace llamado linux a la carpeta del kernel:
# cp /home/anduim/linux-2.6.28.tar.bz2 /usr/src/
# cd /usr/src
# tar xvjf linux-2.6.28.tar.bz2
# ln -s /usr/src/2.6.28/ linux
# cd linux
Si queremos utilizar las opciones del kernel anterior, haremos un
# make oldconfig (con lo cual se cargarán las opciones que teniamos en el otro kernel, y se nos avisará de las que hayan añadido)
# make menuconfig (entramos de lleno en la configuración)
NOTA: Si se quiere prescindir del initrd para el inicio con el nuevo kernel, es imprescindibe tener marcados como built-in (*) las opciones referentes al sistema de ficheros que estemos usando, en mi caso EXT3 (también EXT2), y las opciones correspondientes al soporte de SATA y/o RAID, según sea vuestro HD.
# make (este paso puede tardar bastante, dependiendo de la velocidad de tu ordenador)
# make modules_install
NOTA: En kernels anteriores era necesario hacer tambien un make modules, pero ya no, este paso se realiza automáticamente al hacer el make.
Una vez realizados estos pasos, tenemos dos opciones. O copiar a mano los ficheros necesarios para el arranque con el nuevo kernel, o dejar que se encargue de ello otro comando.
COPIAR FICHEROS DE ARRANQUE MANUALMENTE:
# cd /usr/src/linux
# cp System.map /boot/System.map-2.6.28-anduim
# cp .config /boot/config-2.6.28-anduim
# cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.28-anduim
COPIAR FICHEROS AUTOMATICAMENTE:
Ejecutamos el siguiente comando, y automaticamente se copiarán a /boot los ficheros System.map, .config y bzImage:
# make install
Continuamos con el proceso. Si hemos decidido hacer uso de initrd, deberemos generar dicho fichero. Hay que tener en cuenta que debe existir una carpeta con los módulos en /lib/modules, que se llame exactamente igual que la carpeta que contiene el kernel, en este caso sería /lib/modules/2.6.28. Esta carpeta se crea al ejecutarse el make modules_install. Ahora creamos el fichero de la siguiente forma:
# mkinitramfs -o /boot/initrd.img-2.6.28-anduim 2.6.28
Una vez generado el fichero initrd, solo nos faltará añadir la entrada correspondiente al fichero /boot/grub/menu.lst con el nuevo kernel:
title Debian GNU/Linux, kernel 2.6.28-anduim
root (hd0,0)
kernel /boot/vmlinuz-2.6.28-anduim root=/dev/sda1 ro quiet
initrd /boot/initrd.img-2.6.28-anduim
Los parámetros (hd0,0), y root=/dev/sda1 dependerán de cada caso en concreto, fijaros en la entrada de grub que usais habitualmente y sabreis cuales son los vuestros. Y la última linea, la del initrd, si habeis marcado bien en el menuconfig lo referente al Sistema de ficheros y las opciones SATA/IDE podreis eliminarlo, si no, dejadlo puesto para que arranque mientras buscais la solución.
Otras partes de la guía sobre el Kernel: