GUIA TOMADA DE http://www.ubuntu-es.org/node/5386
He querido realizar esta guía para los usuarios acostumbrados a otras distribuciones y que prefieren, como yo, hacer las cosas de forma más parecida a como lo hacían antes (para que sea menos traumático el cambio de sistema), con pasos más detallados y todo eso. Por tanto vienen comandos que en Ubuntu, como se puede consultar en la otra guía que he mencionado, pueden ser sustituidos por otros y que tal vez podrían simplificar el trabajo y hacerlo más rápido.
No pretendo hacer una guía con la \"mejor\" forma de compilar el núcleo, sino como he dicho una guía para compilar el núcleo \"de una forma distinta\".
Tampoco soy un experto en el asunto, de hecho hay comandos que no comprendo perfectamente qué es lo que hacen, pero estos son los pasos que yo he seguido y me ha funcionado.
1.- Obtener las herramientas necesarias:
apt-get install build-essential kernel-package
2.- Descargar la fuente del Kernel desde Kernel.org, concretamente de: http://www.kernel.org/pub/linux/kernel/v2.6/ .Descárgate un paquete que tenga extensión .gz y que no comience su nombre por patch para descargarte las fuentes del kernel completas.
3.- Cópiala en /usr/src y descomprímela:
cd /usr/src/
tar -xvzf linux-X.Y.ZZ.tar.gz
4.- Crear un enlace simbólico al directorio descomprimido de las fuentes (opcional)
ln -s linux-X.Y.ZZ linux
o
mv linux-X.Y.ZZ linux
5.- Obtener las herramientas para configurar el núcleo
apt-get install libncurses5-dev
6.- Ir al directorio de las fuentes
cd /usr/src/linux-X.Y.ZZ
7.- Ahora puedes coger tu vieja configuración e importarla al nuevo kernel si quieres. Para ello debes copiar el fichero config-A.BB.CC que estés usando (puede haber varios) de /boot a la carpeta /usr/src/linux-X.Y.ZZ que has creado, pero llamándolo .config
cp /boot/config-A.BB.CC /usr/src/linux-X.Y.ZZ/.config
8.- Ejecutar \"make mrproper\" dentro del directorio /usr/src/linux-X.YY.ZZ. No tengo ni idea de para qué sirve, pero venía en la guía de Fedora 
make mrproper
9.- Ejecutar \"make menuconfig\" o \"make oldconfig menuconfig\" si vas a importar la configuración. En el segundo caso se tomará la configuración antigua para las opciones viejas, y se te preguntará sobre cada una de las nuevas opciones del Kernel. Usa ? para pedir ayuda, y a no ser que sepas bien lo que haces usa la opción por defecto (basta darle a ENTER o mirar cual de las opciones listadas aparece en mayúscula, como por ejemplo Y/n/? o N/y/?
make menuconfig
o
make oldconfig menuconfig
10.- Tomes o no la configuración antigua, ahora te aparecerá el menú en el que puedes revisar las opciones o cambiar alguna más. Cuando termines, asegúrate de que grabas los cambios realizados.
11.- Ejecutar \"make dep\" para crear las dependencias.
make dep
12.- Ejecutar \"make clean\". Esto es poco recomendable si estás cambiando solo un par de opciones sobre un kernel que ya has compilado antes porque tardará muchísimo luego en recompilar todo, ya que borrará todos los .o que ya estuviesen compilados. En definitiva este comando \"borra toda la basura\" según decía la guía de Fedora.
make clean
13.- Ejecutar \"make bzImage\" para crear la imagen del kernel. Tardará un poquillo.
make bzImage
14.- Copiar la imagen del kernel bzImage y los maps al directorio /boot
cp System.map /boot/System.map-X.Y.ZZ-identificador
cd /usr/src/linux-X.YY.ZZ/arch/i386/boot
cp bzImage /boot/vmlinuz-X.Y.ZZ-identificador
cd /usr/src/linux-X.Y.ZZ
Asegúrate que llamas a los archivos en /boot de con una identificación idéntica. Puedes llamarlos por ejemplo, para diferenciar con otros kernels, así:
System.map-2.6.10-nuevo y vmlinuz-2.6.10-nuevo
System.map-2.6.11.3-pruebas y vmlinuz-2.6.11.3-pruebas
15.- Ejecutar \"make modules\" para crear los modulos. Tardará bastante. En en un 400Mhz ha tardado entre 8-10 horas (para Fedora) las distintas veces que lo he ejecutado, mientras que en un 2.8Ghz no habrá tardado ni una hora en Ubuntu.
make modules
16.- Ejecutar \"make modules_install\" para instalar los modulos.
make modules_install
17.- Ejecutar \"mkinitrd -o /boot/initrd.img-X.Y.ZZ-identificador X.Y.ZZ\" que debe coincidir en su identificador con System.map y vmlinuz. Observa que el segúndo parámetro NO lleva el identificador, sino que debe coincidir con el nombre del directorio /lib/modules/X.YY.ZZ que contiene los módulos para tu nuevo kernel.
mkinitrd -o /boot/initrd.img-X.Y.ZZ-identificador X.Y.ZZ
18.- Editar la configuración de grub (o de lilo). La configuración de grub está en /boot/grub/menu.lst. Te bastará copiar uno de los bloques ya existentes y añadirlo al final con las modificaciones pertinentes para que se adapte a tu sistema. Un ejemplo sería:
title Ubuntu, kernel 2.6.11.3-pruebas
root (hd0,2)
kernel /boot/vmlinuz-2.6.11.3-pruebas root=/dev/hda3 ro quiet splash
initrd /boot/initrd.img-2.6.11.3-pruebas
savedefault
boot
Y cuando hayas probado que funciona, podrás cambiar la línea default al valor adecuado para que arranque por defecto en esta nueva configuración. Ten en cuenta que si pones default 3 arrancará la cuarta opción de la lista, ya que default empieza a numerar con el 0.
19.- Ejecutar \"depmod -a\" (de preferencia para actualizar los modulos)
depmod -a
20.- Reiniciar el PC
21.- Disfrutar del nuevo kernel (esperemos que sí)