Meniu

Compilarea unui kernel Linux - exemplu

RedHat de exemplu nu este Linux, ci o distributie bazata pe un kernel Linux. Kernelul Linux este un program complex care ofera seviciile de baza pentru restul programelor din distributia Linux. Datorita faptului ca, spre deosebire de sistemele de operare comerciale ca Windows sau MacOS, codul sursa al kernelului Linux este disponibil gratuit, rezulta ca este foarte usor de adaugat noi imbunatatiri si facilitati la acesta. Recompilarea kernelului Linux din surse a devenit din acest motiv o operatie destul de des intalnita, si se fac eforturi din ce in ce mai mari pentru ca aceasta operatie sa devina cat mai usoara pentru cei neexperimentati.

De ce sa compilam un kernel Linux?

Ati putea spune: "De ce sa compilez kernelul? El functioneaza foarte bine asa cum e!" Exista trei motive pentru a face acest lucru. In primul rand, din cauza unui dispozitiv hardware care este atat de nou, incat pe CD-ul pe care vine distributia Linux sa nu existe un modul al kernelului pentru el. In al doilea rand, e posibil sa fi intalnit un bug de orice fel, care a fost reparat intr-o revizie ulterioara a sistemului de operare. In al treilea rand, e posibil ca un produs software sa necesite o versiune mai noua a sistemului de operare.

Obtinerea surselor kernelului

Cele mai recente versiuni lansate ale surselor kernelului le puteti gasi pe ftp.kernel.org. Acest site FTP are o varietate de mirror-uri in toata lumea, asa ca sigur veti putea gasi un server de pe care sa le descarcati repede. Dupa ce ati localizat fisierul care contine ultima versiune a sistemului de operare, descarcati-l in directorul /usr/src. Apoi folositi comanda tar zxf pentru a-l dezarhiva. Daca nu aveti nevoie chiar de ultima versiune, atunci o varianta mai comoda ar fi sa instalati un pachet de pe CD-ul cu distributia pe care o aveti, care sa contina sursele kernelului.

Ca o alternativa la varianta de mai sus, daca aveti deja sursele kernelului si nu doriti decat sa faceti un upgrade (de exemplu de la versiunea 2.2.1 la versiunea 2.2.2), atunci descarcati fisierul care contine patch-ul respectiv in directorul /usr/src si dati comanda:

gzip -dc patch-2.2.2.gz |patch -p0

Aceasta comanda va actualiza sursele kernelului.Aceasta varianta are avantajul de a fi mult mai rapida (nu mai trebuie descarcat intregul cod sursa).

Configurarea sistemului pentru compilare

Mergeti acum in directorul /usr/src/Linux si dati urmatoarea comanda:

make menuconfig

Rezultatul va fi generarea (compilarea) catorva programe si aparitia unei ferestre. Meniul acestei ferestre va permite sa modificati multe din optiunile kernelului.

Dupa ce ati efectuat modificarile dorite, salvati noua configuratie; apoi faceti urmatoarele lucruri:

make dep
make clean

Prima din comenzile de mai sus construieste arborele de interdependenta dintre sursele kernelului, deoarece e posibil ca legaturile dintre acestea sa fi fost afectate de optiunile pe care le-ati facut la pasul anterior. Comanda make clean elimina orice fisiere ramase din compilari anterioare ale kernelului, fisiere care acum sunt inutile.

Acum suntem gata in sfarsit sa incepem! Dati urmatoarea comanda:

make zImage

Dupa ce ati dat comanda, daca aveti un procesor mai slab decat Pentium 200MHz, puteti merge sa beti o cafea. Procesul dureaza cam 20 de minute pe un Pentium 90, intrucat codul sursa al kernelului este destul de stufos (poate ati remarcat acest lucru cand l-ati descarcat). Cand totul este gata, urmeaza sa dati comanda

make modules

Acest al doilea proces nu va dura atat de mult ca primul.

Instalarea noului kernel

Ultimul pas este instalarea noului kernel. Pe un sistem bazat pe arhitectura Intel, kernelul se instaleaza la locul corect cu comanda:

cp /usr/Linux/src/arch/i386/boot/zImage /boot/newkernel

apoi

make modules_install

Aceasta comanda va instala modulele kernelului in /lib/modules. Acum trebuie sa editati fisierul de configurare al LILO, /etc/lilo.conf, si sa adaugati o sectiune ca cea de mai jos:

image = /boot/newkernel
label = new
read-only

La urmatoarea repornire, va incarca noul kernel. Daca totul merge puteti face noul kernel optiunea implicita.

Rezumat

Acesta a fost doar un exemplu la nivel general. Compilarea kernelului este o operatie relativ simpla - daca ati mai facut asa ceva pana acum! La inceput poate parea covarsitoare; daca asa stau lucrurile,sau daca doar vreti ceva pentru kernelul dvs., iata cateva link-uri care v-ar putea ajuta:

http://www.linuxhq.com/ - kernel 'goodies'
ftp://ftp.kernel.org/pub/Linux/kernel/ - site oficial pentru surse de kernel Linux
http://www.alsa-project.org/ - set alternativ de drivere de sunet pentru Linux

Andreea

"Rome wasn't built in a day" !
  • | 120 articole

Nici un comentariu inca. Fii primul!
  • powered by Verysign