Compilació del Kernel

Aquest és un intent de guia pas a pas, amb més o menys sort i correcció ortogràfica per portar a terme la tasca de compilar el kernel (nucli) de Linux per la distribució de Ubuntu a partir d'una altra guia casolana.

Pas 1: Obtenir les eines necessàries:

apt-get install build-essential kernel-package

En el cas que no ho pogueu descarregar, podeu utilitzar el gestor de paquets Synaptic.

Pas 2: Adreçar-vos a la font del Kernel, i adreçeu-vos al camí /pub/linux/kernel/. Un cop dins, t'hauràs de descarregar el paquet més recent (en aquest cas, el 2.6.20) que tingui l'extensió .gz i que, a més, el seu nom nom no comenci per patch. Això et permetrà descarregar-te les fonts del kernel senceres.


Pas 3: Un cop descarregat, copia'l dins del directori /usr/src i descomprimeix-lo:

cd /usr/src/
tar -xvzf linux-X.Y.ZZ.tar.gz

Pas 4: Crea un enllaç simbòlic al directori descomprimit de les fonts (opcional)

ln -s linux-X.Y.ZZ linux
o bé,
mv linux-X.Y.ZZ linux

Pas 5: A partir d'ara, ja pots obtenir les eines per configurar el nucli

apt-get install libncurses5-dev

Pas 6: Adreça't al directori de les fonts

cd /usr/src/linux-X.Y.ZZ

Pas 7: Ja pots agafar la teva configuració vella i importar-la al no kernel. Per aconseguir-ho, hauràs de copiar el fitxer config-A.BB.CC que estiguis utilitzant (poden haver-hi varis) de /boot a la carpeta /usr/src/linux-X.Y.ZZ que hagis creat, però, anomenant-lo .config

cp /boot/config-A.BB.CC /usr/src/linux-X.Y.ZZ/.config

Pas 8: Executar make mrproper dins del directori /usr/src/linux-X.YY.ZZ.

make mrproper

Pas 9: Executa make menuconfig, o bé, make oldconfig menuconfig si vols importar la configuració. En el segon cas, es pendrà la configuració antiga per les opcions velles i se't preguntarà sobre cadascuna de les noves opcions del Kernel. Pots utilitzar ? per sol·licitar ajuda i, si no saps ben bé què fer, pots utilitzar l'opció per defecte (Fent ENTER, o bé, mirant quina és de les opcions llistades apareix en majúscules)

make menuconfig
o bé
make oldconfig menuconfig

Pas 10: Tant si prens o no la configuració antiga, ara t'apareixerà el menú en el que pots revisar les opcions, o bé, canviar algunes més. Quan finalitzis, assegura't que graves els canvis realitzats.

Pas 11: Executa make dep per crear les dependències.

make dep

Pas 12: Executa make clean. és important tenir clar que això és força poc recomanable si solament estàs canviant un parell d'opcions sobre un nucli que ja has compilat abans perquè tardaràs moltíssim, després, en recompilar-ho tot, donat que esborraràs tots els .o que ja estaven compilats. "Aquesta comanda esborra tota la brossa".

make clean

Pas 13: Executa make bzImage per crear la imatge del kernel. Posa-hi paciència, perquè és un procés un xic llarg.

make bzImage

Pas 14: Copia la imatge del kernel bzImage i els maps al directori /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

Posa atenció a l'hora d'anomenar els arxius dins de /boot AMB EL MATEIX IDENTIFICADOR per diferenciar-lo dels altres kernels, per exemple, així:

System.map-2.6.10-provant i vmlinuz-2.6.10-provant
System.map-2.6.11.3-tanteig
i vmlinuz-2.6.11.3-tanteig

Pas 15: Executa make modules per crear els mòduls. Aquest és un procés que també pot ser força llarg

make modules

Pas 16: Executa make modules_install per instal·lar els mòduls

make modules_install

Pas 17: Executa el mkinitrd. Per fer aquest pas, pots ser necessari descarregar-te les eines del initrd

apt-get install initrd-tools

mkinitrd -o /boot/initrd.img-X.Y.ZZ-identificador X.Y.ZZ

Recorda que l'identificador ha de tant en System.map com en vmlinuz. Observa que el segon paràemtre no porta l'identificador. Aquest ha de coincidir amb el nom del directori /lib/modules/X.YY.ZZ que conté els mòduls pel teu nou kernel

mkinitrd -o /boot/initrd.img-X.Y.ZZ-identificador X.Y.ZZ

Pas 18: Edita la configuración de grub (o del lilo). La configuració de grub la pots trobar dins de /boot/grub/menu.lst. Solament hauràs de copiar un dels blocs ja existents i afegeix-lo al final amb les modificacions corresponents perquè s'adapti al teu sistema.

Per exemple:

title Ubuntu, kernel 2.6.20-provant
root (hd0,2)
kernel /boot/vmlinuz-2.6.20-provant root=/dev/hda3 ro quiet splash
initrd /boot/initrd.img-2.6.20-provant
savedefault
boot

Quan hagis provat que funciona, podràs canviar la línia default al valor adient perquè arrenqui, per defecte, amb aquesta nova configuración. Has de tenir en compte que si poses default 3 arrencarà la cuarta opció de la llista, donat que default comença a pel 0.

Pas 19: Executa depmod -a (de preferencia per actualitzar els mòduls)

depmod -a

Pas 20: torna a arrencar el PC

Actualització: Com recordareu, ahir dilluns 6/03/2007 alguns vareu intentar compilar el kernel del Ubuntu 6.10 (Ubuntu Edgy Eft) i donava problemes si s'aplicava el menu a dalt mostrat. Si consulteu els diferents fòrums presents a internet, molta gent no acaba a estar molt satisfeta amb aquesta versió d'Ubuntu doncs tendeix a presentar alguns problemes..

És per això, que mitjançant el blog de Munkibass s'ha pogut trobar una possible via per compilar aquest kernel (en cas de ser necessari). Pot no ser necessari donat que el Kernel default de Ubuntu permet realitzar la majoria de les activitats (suport de maquinari i la seva relació amb les altres aplicacions).

1. És necessari instal·lar paquets útils per la compilació:

sudo apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential

2. Descarrega el full source des dels arxius del Kernel. Opcionalment, pots fer un wget.

wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.tar.bz2

3. Extreu l'arxiu:

tar xjf linux-2.6.20.tar.bz2

4. Mou el que acabes d'extreure al directori /usr/src

sudo mv linux-2.6.20 /usr/src/

5. Crea uns quants enllaços simbòlics

cd /usr/srcsudo ln -s linux-2.6.20 linuxcd /usr/src/linux

6. Utilitza l'arxiu actual de configuració del teu Kernel en el Kernel que serà compilat.

sudo cp /boot/config-2.6.17-11-generic .config

Ull!! config-2.6.17-11-generic pot canviar segons quin Kernel utilitzis.

7. Realitza un menuconfig

sudo make menuconfig

Un cop dins, adreça't al final i posa't en Load an Alternate Configuration File, has d'assegurar-te que aparegui .config i fes acceptar.

Menuconf

També és important revisar que no se't passi per alt cap dispositiu (tot i que si ho vas fes basant-te en un altre .config és poc probable..). Per evitar tenir problemes amb els controladors SATA, hauràs de marcar-los (amb la barra espaciadora) dins de la categoria:

Device Drivers => Sarial ATA … => ATA device support => El teu maquinari.

Guarda i tanca

7.1 La compilació:

sudo make-kpkg cleansudo make-kpkg --initrd --append-to-version=-identificador kernel_image kernel_headers

Hauràs de canviar l'identificador pel nom que tu desitgis.

8. Un cop finalitzada la instal·lació, i dins del directori /usr/src s'hauran creat els dos paquets .deb que haurem de instal·lar amb:

dpkg -i *.deb

Assegura't que siguin els únics paquets .deb que hi hagin.

Automàticament, es crearan les entrades dins del GRUB i, a continuació, podràs tornar a iniciar i arrencar amb el teu nou Kernel.

Comentaris

Entrades populars