Slackware Logo
Slackware Logo

Lugons

Info

Prevodioci

Greške

 
 LUGONS Slackbook prevod

4.2 Izbor kernela

Kernel je deo operativnog sistema koji omogućava pristup hardveru, koji vrši kontrolu procesa i sveobuhvatnu kontrolu sistema. U kernelu se nalazi podrška za vaš harver, tako da je izbor pravog kernela za vaš sistem važan korak.

Slackware nudi više nego tuce prekompajliranih krenela koje možete da izaberete. Svaki od njih uključuje set standardnih i specifičnih drajvera. Bilo da koristite jedan od prekompajliranih kernela ili da gradite kernel iz izvornog koda, vodite računa da li vaš krenel podržava hardver koji imate.

4.2.1 Direktorijum /kernels na Slackware CD-ROM-u

Prekompajlirani Slackware kerneli se nalaze u /kernels direkotirijumu Slackware CD-ROM-a ili na FTP sajtu u glavnom Slackware direktorijumu. Dostupni kerneli se menjaju kako izlaze nova izdanja, tako da je dokumentacija koja se nalazi u tom direktorijumu adekvatan i merodavan izvor informacija. /kernels direktorijum ima poddirektorijume za svaki postojeći kernel. Ti podirektorijumi imaju isto ime kao i njihovi propratni boot diskovi. U svakom poddirektorijumu ćete naći sledeće datoteke:

Fajl Svrha
System.map Sistemska map datoteka za taj kernel
bzImage Aktuelni kernel (image)
config Konfiguracioni fajl za taj kernel

Da biste koristili kernel, kopirajte System.map i config datoteke u vaš /boot direktorijum, a kernel image kopirajte i preimenujte kao /boot/vmlinuz fajl. Pokrenite /sbin/lilo(8) da instalirate LILO za novi kernel, i na kraju restartujte sistem. To je sve što se tiče instaliranja novog kernela.

Kerneli čije se ime završava sa .i su IDE kerneli. Oni ne sadrže SCSI podršku. Kerneli čije se ime završava sa .s su SCSI kerneli. Oni sadrže obe podrške, IDE podršku kao u .i kerneli, plus SCSI podršku.

4.2.2 Kompajliranje kernela iz izvornog koda

Pitanje “Da li treba da kompajliram krenel za moj sistem?” često postavljaju novi korisnici. Krajnji odgovor je možda. Postoji nekoliko situacija kada se pribegava kompajliranju kernela prema vlastitim potrebama. Većina korisnika koristi prekompajliran kernel sa učitljivim modulima da bi dobili potpun operativan sistem. Možda želite da kompajlirate kernel pošto vršite nadogradnju sa jedne verzije na drugu koja trenutno nije poržana od strane Slackware-a, ili želite da zakrpite izvorni kod kernela da biste omogućili da specijalna hardverska komponeneta proradi, jer nema podršku u kernelu koji je došao. Takođe, mnogi korisnici su primetili da je kernel kompajliran po vlastitim potrebama brži. I za vas će možda biti korisno da kompajlirate kernel sa optimizacijama za specifični procesor na vašoj mašini.

Izgradnja kernela i nije tako teška. Prvi korak je da vidite da li je izvorni kod kernela instaliran. Uverite se da su instalirani svi paketi iz K serije u toku instaliranja sistema. Isto tako osigurajte se da su instalirani paketi iz D serije, posebno C kompajler, GNU make, i GNU binutils. Uopšteno, dobra je ideja da ste instalirali sve pakete iz D serije ako kasnije planirate bilo kakvu vrstu razvoja programa. Isto tako možete da preuzmete poslednji izvorni kod kernela sa http://www.kernel.org/mirrors.

4.2.2.1 Kompajliranje Linux kernela verzije 2.4.x

% su -
Password:
# cd /usr/src/linux

Prvi korak je da dovedete kod kernela u osnovno stanje (base state). Unećete sledeću komandu da to odradi (možete ako želite da napravite kopiju .config fajla pošto će ga navedena komanda obrisati bez upozorenja):

# make mrproper

Sada možete da konfigurišete kernel za vaš sistem. Sadašnji kernel koristi tri načina za svoje konfigurisanje. Prvi način je baziran na tekstu sa sistemom pitanja i odgovora. Odgovara se na gomilu pitanja nakon čega se izgrađuje konfiguraciona datoteka. Problem sa ovim metodom je da ako ste nešto pogrešili morate sve ispočetka. Metod koji većina ljudi preferira se zasniva na korišćenu menija. Na kraju, postoji konfiguracinoni alat koji koristi X sistem. Izaberite onaj koji želite, zadavanjem odgovarajuće komande:

# make config           (tekstualna pitanje&odgovor verzija)
# make menuconfig       (tekstulana verzija sa menijima)
# make xconfig          (X-bazirana verzija, budite sigurni da ste u X-u prvo)

Figure 4-1. Meni za konfigurisanje kernela

Za nove korisnike izbor bi najverovatnije bio menuconfig zbog lakoće korišćenja. Ekrani pomoći objašnjavaju različite oblasti kernela. Posle konfigurisanja kernela, izađite iz programa za konfigurisanje. Na taj način ćete stvoriti konfiguracione fajlove. Sada možemo da pripremimo stablo sa izvornim kodom kernela za izgradnju:

# make dep
# make clean

Sledeći korak je kompajliranje kernela. Prvo pokušajte sa opcijom bzImage:

# make bzImage

To može da potraje, u zavisnosti od brzine procesora. Dok traje kompajliranje, videćete poruke koje šalje kompajler. Posle izgradnje slike kernela, možda ćete želeti da izgađujete svaki deo koji je markiran kao modularan.

# make modules

Sada možemo da instaliramo kernel i module koje ste kompajlirali. Da bi se to uradilo na Slackware sistemu, koriste se sledeće komande:

# mv /boot/vmlinuz /boot/vmlinuz.old
# cat arch/i386/boot/bzImage > /boot/vmlinuz
# mv /boot/System.map /boot/System.map.old
# cp System.map /boot/System.map
# make modules_install

Sada morate da editujete datoteku /etc/lilo.conf tako da u nju dodate stavku koja se odnosi na pokretanje vašeg starog kernela, što je potrebno za slučaj da nešto ne krene dobro. Posle toga, pokrenite /sbin/lilo komandu da instalirate novi boot blok. Sada možete da restartujete sistem.

4.2.2.2 Kompajliranje Linux kernela verzije 2.6.x

Kompajliranje 2.6 kernela se dosta malo razlikuje od kompajliranja 2.4 ili 2.2 kernela, ali je ipak važno da shvatite te razlike pre nego što krenete u posao. Više nije potrebno da pokrećete make dep i make clean komande. Takođe, poruke koje prate proces kompilacije kernela 2.6 serije nisu puno opširne. Na taj način je proces izgradnje lako razumljiv, mada sa pomalo oskudnim propratnim informacijama. Ako se javlja problem u izgradnji kernela, obavezno se preporučuje uključivanje ispisivanja poruka (verbosity). Jednostavno dodajte V=1 opciju kada počnete izgradnju. Na ovaj nači možete da imate opširan dnevnik (log) informacija na osnovu koga programer kernela ili vaš geek prijatelj vam može pomoći u rešavanju problema.

# make bzImage V=1

4.2.3 Upotreba kernel modula

Kernel moduli su drugo ime za upravljače uređaja koji se mogu umetnuti u već pokrenut kerenel. Oni vam omogućavaju da proširite hardversku podršku bez potrebe da vršite izbor novog kerela ili da lično vršite kompajliranje.

Modili se isto tako mogu učitavati ili izbacivati u bilo koje vreme čak i kada je sistem pokrenut. Na ovaj način administrator sistema jednostavo vrši dogradnju određenih drajvera. Novi moduli se mogu kompajlirati, stari ukloniti, i novi učitati bez potreba za restartom mašine.

Moduli su smešteni u datoteci /lib/modules/verzija kernela vašeg sistema. Oni mogu biti učitani u toku pokretanja preko rc.modules datoteke. Ova datoteka je dosta dobro komentarisana i ima primera koji se odnose na važne hardverske komponente. Da biste videli listu modula koji su trenutno aktivni koristite lsmod(1) komandu:

# lsmod
Module                  Size  Used by
parport_pc              7220   0 
parport                 7844   0  [parport_pc]

Možete videti da ovde postoji samo modul za paralelni port. Da biste uklonili modul, koristite komandu rmmod(1). Moduli se mogu učitati komandame modprobe(1) i insmod(1). Korišćenje modprobe komande je bolje pošto pokušava da učitava i module zavisnosti.

Mnogo korisnika nikada nije učitala ili uklonila ručno neki modul. Oni koriste kernelov autoloader za upravljanje modulima. Podrazumevano, Slackware dolazi sa kmod opcijom u svojim kernelima. . kmod je opcija kernela koja omogućava da kernel automatski učitava module onda kada se javlja potreba. Za više informacija o kmod opciji, i tome kako se ona konfiguriše, pogledajte /usr/src/linux/Documentation/kmod.txt fajl. Potrebno je da imate paket sa izvornim kodom kernela, odnosno da ga preuzmete sa http://kernel.org.

Više informacija se može naći u man stranama za svaku od ovih komadi, plus u rc.modules fajlu.