16 de febrer 2007

Compilar kernel de Linux

Primer de tot, necessitem descarregar el kernel a compilar, com és habitual ens descarregarem la última versió estable (ens podem descarregar qualsevol de les versions que hi ha hagut). Per descarregar-lo anem a www.kernel.org i allà ens indica quina és la última versió estable fins al moment, ens la descarreguem (solen ser uns 45~55 MB depenent del format de compressio). [A partir d'aquí detallo la instal·lació de la versió 2.6.20]:
wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.tar.gz
Mentres es descarrega podem anar a preparar una pizza, un bon sac de crispetes o alguna cosa per distreure'ns després (no pas durant la descarrega que avui dia va relativament ràpid).

Un cop estigui descarregat, el copiem a /usr/src/, per fer-ho ja sabeu:
cp linux-2.6.20.tar.gz /usr/src
Un cop copiat (un plis) el descomprimim:
cd /usr/src
tar -xzvvf linux-2.6.20.tar.gz
Ja el tenim descomprimit, anem al tajo:
cd linux-2.6.20
make menuconfig
Avui dia (i ahir) es pot fer en un menu pel Gnome o pel KDE, però dah! aquest menú ja fa el que ha de fer, pels curiosos, poden provar:
Pel Gnome:
make gconfig
Pel KDE:
make xconfig
Els puristes, voldran que se'ls pregunti paquet per paquet si el volen instal·lar o no:
make config
I pels vagos, voldran que agafi la configuració anterior i deixar-se de punyetes, però atenció, els nous moduls els preguntarà un per un! :
make oldconfig
Aquí potser que us dongui un error, si és el cas podríem fer això (en el cas de Debian):
apt-get install make libncurses5-dev
I ara sí, a l'entrar al menu, com que som novatos (o ens ho farem) anirem opció per opció investigant a veure quines opcions tenim, moltes no sabrem què són, l'ajuda sovint ens aclarirà les coses i si no, no toquem el que no sabem i ja està.
Seria interesssant habilitar els FyleSystem (sistema de fitxers) que fem servir, normalment Linux fa servir els ext2 o ext3, però hi ha qui prefereix els reiserfs, també podem habilitar el VFAT32 i el NTFS per si tenim alguna cosa en Windows.
La secció de Network també és molt interessant, aquí és a on podem posar els NFS (Network FileSystem, per compartir fitxers a través de la xarxa), tot lo referent a les iptables (firewalls), el referent a la IPv4 i IPv6 (la versió 6 encara no s'utilitza, però tot arribarà).
També podríem fer una ullada a la versió del nostre processador, comprovar que sigui correcte.
I finalment, a la secció de Device Drivers hauríem d'anar seleccionant els drivers dels nostres dispositius, aquí entra les targetes de so (que recomano posar-les com a mòduls (M) perquè sino l'alsaconf després es caga amb tot), les targetes de xarxa, de video..., també mirar lo dels USB mass storage, impressores per USB, paralel port, disquetera, gravació de CD's o tauletes digitalitzadores.
En fi, és qüestió de perdre-s'hi una bona estona per tots els submenús i anar activant el que un considera que farà servir.

Un cop ho tinguem tot ben decidit sortim del menu, ens preguntarà si volem gravar els canvis, òbviament direm que sí.

I ara ja podem teclejar:
make
I al apretar enter ja podem agafar la nostra pizza que hem preparat, les crispetes i el que faci falta, doncs aquí s'hi passarà un bon rato (dependrà de la quantitat de mòduls que haguem seleccionat i com no, del nostre processador [aquí sí que és la CPU el que determina la velocitat! en les altres coses ja és més discutible].

Un cop hagi acabat, haurem de teclejar:
make modules_install
Tranquils, això en dos segons ja estarà, i ara ja està tot compilat i configurat, anem a preparar l'arrancada del sistema amb el nom kernel:
cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.20
(si teniu un AMD64 haureu de fer cp arch/x86_64/boot/bzImage /boot/vmlinuz-2.6.20)
Ara els usuaris de Debian (els de Gentoo no els hi cal) hauran de fer el següent:
initramfs
(si tenen stable o unstable)
mkinitrd -o /boot/initrd.img-2.6.20 2.6.20
(si tenen testing o prefereixen aquesta opció)
Actualitzem el grub (si és que aneu amb grub)
update-grub
vim /boot/grub/menu.lst

aquí hauria de quedar alguna cosa així:
title Linux 2.6.20
kernel (hd0,1)/boot/vmlinuz-2.6.20 root=/dev/hda2
initrd /boot/initrd.img-2.6.20
I finalment instal·lem aquest nou grub a la MBR del disc:
grub-install (hd0)


Si ens diu que no ha trobat cap error, vol dir que ja podem reiniciar i provar a veure què tal el nou kernel. Més informació

2 comentaris:

Neioo ha dit...

Bé, potser m'ha faltat comentar: per què nassos volem compilar el kernel?
Doncs bé, per tenir els drivers dels nous perifèrics (clar que amb Linux sempre anem atrassats per culpa del software privatiu U¬¬), tenir disponible noves virgaries com iptables (firewalls), Linux Virtual Server (pijades pels servidors), per poder-nos passar d'ipv4 a IPv6 (tot arribarà).
Però es clar, el millor per saber exactament què es pot guanyar compilant un kernel, és compilant-ho.
Vindria a ser el mateix que preguntar-se de què serveix pujar a dalt de tot d'una muntanya, fins que no ho fas, no ho saps, tot i que jo ho he fet i continuo pensant que no serveix per res. Així molts poden pensar que compilar el kernel no serveix per res. ^^U

Joan ha dit...

molto benne poch mol gran aquest howto o com sa diguin estes coses xD