Pra ser sincero NUNCA fiz isto antes, mas não achei nada difícil... segui uns passos a passos que fui achando e eis o "how to" aqui completo.
OBS: A versão que eu usei foi no Ubuntu 9.04 (pra testes). No BIG 5.0 ainda estou compilando (enquanto escrevo este artigo).
DOWNLOAD DO KERNEL
No site http://kernel.org/ você terá acesso à última versão do kernel disponível.
Eu utilizei a mesma versão do kernel que estou usando (2.6.28.6), a única coisa que fiz (queria fazer) era deixar ele mais otimizado...
http://kernel.org/pub/linux/kernel/v2.6/
ANTES DE COMPILAR
1- Bom... pelo que testei, se você não tiver alguns pacotes instalados não vai conseguir ir muito longe.
Então faça:
# apt-get update
# apt-get install fakeroot kernel-package bzip2 gcc libncurses5-dev wget
Não se esqueça de fazer os comandos como root!
Para isto você tem três opções:
a) usar o sudo na frente de tudo e colocar a senha
b) usar o sudo su pra se transformar em root
c) sudo -i pra se logar como se estivesse naquela tela de init login
2- Depois disto, vamos criar uns links pro bash!
# mv /bin/sh /bin/sh.old
# ln -s /bin/bash /bin/sh
3- Nesta etapa você já tem que ter "baixado" o seu kernel, então use o comando:
# tar -vzxf linux-2.6.28.6.tar.gz
Lembrando que esta foi a versão que EU baixei, não é a mais nova. Parece que atualmente está no 2.6.29.3...
Baixe ela na sua pasta local mesmo... tipo /home/user/Documentos
(onde user é o nome do seu usuário!!)
4- Vamos ter que mover a pasta pra pasta onde ficam os "sources" (fonte/origem) dos programas, que no caso é no /usr/src/:
# mv /home/user/Documentos/linux-2.6.28.6 /usr/src/
5- Agora vamos entrar na pasta (# cd /usr/src) e criar um link simbólico chamado "linux". Este link irá "chamar" a pasta do nosso kernel!
# ln -s linux-2.6.28.6 linux (só lembrando que 2.6.28.6 é a versão que EU escolhi!)
6- Temos que entrar na "pasta link" (# cd /usr/src/linux ) para salvar as configurações atuais do seu kernel. Isto é bom pois você poderá pegar o que já está no seu kernel e "dar uma melhorada" (tirando ou colocando alguma coisa):
# cp /boot/config-`uname -r` ./.config
7- Agora vem a melhor e mais demorada parte. Você poderá escolher quais opções do kernel ficará instalada (*) ou não ( ). Ainda se quiser, poderá deixar o módulo (M) pré-instalado e então poderá usá-lo quando quiser... Dá um fuçada na internet que achará muita coisa.
Por exemplo, na parte "Processor Type and Features", em "Processor Family" há um suporte para "Opteron/Athlon64/Hammer/K8", na qual eu habilitei!
Digite o comando abaixo pra acessar o menu:
# make menuconfig
Agora você tem duas alternativas:
a) Se você for apenas atualizar um kernel, dê ESC e salve.
b) Caso contrário se for realmente recompilar colocando ou tirando algo, vá até a opção "Load an Alternate Configuration File", dê um OK e escolha o arquivo que a gente salvou anteriormente com nome ".config"
FINALMENTE... COMPILANDO
Chegou a hora de compilar tudo que "setamos"...
# make-kpkg clean
Este comando faz uma pré configuração... e o comando a seguir irá compilar e gerar os "pacotes" personalizados do kernel pro SEU PC.
# fakeroot make-kpkg --initrd --append-to-version=-kernel2.6.28.6 kernel_image kernel_headers
Pode ir tomar um café, ver TV, jogar videogame, ler um livro, ... sei lá. Só num use o PC igual eu fiz que isto irá demorar mais ainda! hehehe
O marinheiro de primeira viagem ficou usando o Firefox, foi no Youtube, estas coisas... E o que normalmente são 50 minutos demorou 1h25min mais ou menos.
INSTALANDO O NOVO KERNEL
Depois de móóó tempão compilando, ele vai gerar dois arquivos .deb
Use o comando pra ir até a pasta /usr/src: # cd /usr/src
E então o comando pra instalar o pacote: # dpkg -i linux-image- você pode escrever isto e depois dar um TAB pra auto-completar!
Instale a versão do mantenedor do pacote!
Depois instale o # dpkg -i linux-headers- (tecla TAB, hehehe)
Feito isto podemos concluir tudo

FINALIZANDO A INSTALAÇÃO
Você deve conferir o seu arquivo do GRUB pra ver se está tudo lá... A versão mais nova e a mais antiga do seu kernel.
Claro que você num vai deixar de conferir, afinal, se ocorrer um KERNEL PANIC você poderá bootar no antigo e recompilar TUDO de novo... hauhauhauha
# gedit /boot/grub/menu.lst (pode ser o kate, kwrite ao invés do gedit)
Termine com um # shutdown -r now e logo após o boot, provável que terá que reinstalar a placa de vídeo pro seu novo kernel.
Pra saber se está tudo OK mesmo, faça o comando uname -r e ele te mostrará a versão do seu kernel

THE END!