L’objectiu d’aquest post no és aconseguir un kernel ultra-lleuger-maxi-optimitzat-”delamuerte” per al nostre pc sinó, simplement, deixar constància dels passos que cal fer per aconseguir una imatge amb la configuració per defecte, però que funcioni.
1 ) Preparem les eines
Jo he fet les proves amb un sistema base de Debian estable, sense escriptori. I, de nou en nou, els paquets que he hagut d’afegir per compilar el kernel són els següents:
aptitude install make gcc ncurses-dev linux-initrd-tool
2 ) Descarreguem el codi font des de kernel.org
El kernel que tenia instal·lat amb Debian Etch és el 2.6.18 i per a aquesta prova he fet servir el kernel estable més nou (a dia d’avui): 2.6.28 Per descarregar-lo podem fer:
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.28.tar.bz2
3 ) Ens preparem per compilar…
a) Posem les fonts al directori on s’acostuma a treballar (aquest pas no és imprescindible)
mv ./linux-2.6.28.tar.bz2 /usr/src
b) Descomprimim i desempaquetem:
cd /usr/src && tar xjvf linux-2.6.28.tar.bz2
Això ens haurà creat el directori /usr/src/linux-2.6.28, al qual entrarem.
4 ) Configuració del kernel
make menuconfig
Aleshores accedirem a les opcions de configuració del kernel. Aquí bàsicament s’indica què volem que suporti el nostre kernel, quins drivers ha de tenir integrats i quins es compilaran com a mòduls independents. Aquest és el pas clau per a qui vulgui generar un kernel optimitzat. Com que això queda fora de les intencions d’aquest post, simplement tafanegem una mica i ho deixem tal i com està.
5 ) Compilació
Aquest és el pas en què realment farem la compilació. El procediment seria el següent:
make dep
make
make modules
make modules_install
El make dep no cal fer-lo si compilem un kernel >=2.6.0, el make generarà la imatge bzImage, és a dir: el kernel en si; el make modules compila els mòduls independents i finalment el make modules_install col·loca els mòduls al lloc que els toca.
Per no estar pendents de quan s’acaba un pas per llançar la següent comanda podem fer:
time (make && make modules && make modules_install)
Lògicament la comanda time és opcional, però així si marxem a fer la cervesa mentres es compila el kernel, podem saber quanta estona ha trigat realment.
6 ) Cada cosa al seu lloc
Copiem la imatge del kernel al directori /boot, i de passada ja li canviem el nom per adequar-lo al que solen tenir les imatges del kernel:
cp /usr/src/linux-2.6.28/arch/i386/boot/bzImage /boot/vmlinuz-2.6.28
Fem el mateix amb l’arxiu System.map:
cp /usr/src/linux-2.6.28/System.map /boot/System.map-2.6.28
7 ) Generem la imatge initrd
Hi ha alguns mòduls del kernel que no poden esperar a ser carregats en el moment en què es carreguen la majoria de mòduls, sinó que s’han de carregar al principi de tot del procés d’arrencada. Per això necessitem generar el fitxer initrd.img
cd /boot && update-initramfs -c -k 2.6.28
Això hauria de generar un arxiu anomenat initrd.img-2.6.28 al directori /boot
8 ) Modifiquem el gestor d’arrencada
En el meu cas és el grub. Obrim el fitxer /boot/grub/menu.lst amb el nostre editor preferit (en el meu cas: joe)
joe /boot/grub/menu.lst
Aleshores afegim, al lloc que toca (cap al final) una nova entrada. El més senzill és copiar-ne una de les que ja tenim i modificar-la. Hauria de quedar una cosa així:
title Debian GNU/Linux, kernel 2.6.28
root (hd0,0)
kernel /boot/vmlinuz-2.6.28 root=/dev/hda1 ro
initrd /boot/initrd.img-2.6.28
Si la vostra partició / no es troba al dispositiu /dev/hda1 haureu de canviar aquesta dada.
9) Reiniciem
reboot
I, en principi, hauria de funcionar!
Publicat per llengot 
Publicat per llengot