![]() |
| By R. Krishnakumar Ovaj članak je za one koji su novi u svetu igranja sa Linuksom i hoće da sastave Linuks jezgro iz izvornih fajlove. Objašnjeni su razni postupci od nabavke izvornih fajlova do startovanja novog imiga jezgra. Takođe su data uputstva za čišćenje izvornog koda, sastavljanje jezgra sa previše dodatnih informacija, itd. 1. Preuzimanje izvornog koda jezgra Da bi smo sastavili novo jezgro Linuksa, prvo treba da preuzmemo izvorni kod. Možemo ga naći na www.kernel.org. Sajt sadrži sve verzije izvornih kodova. Na primer, recimo da hoćemo da sastavimo verziju 2.6.9 Linuksovog jezgra. Znači treba da preuzmemo 2.6.9 izvorni kod sa http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.9.tar.bz2 Bolje je preuzeti bzip-ovanu verziju, jer je bolje sabijena nego gzip-ovan kolega, tako da je preuzimanje brže. Možeš koristitu komandu wget sa komandne linije
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.9.tar.bz2
Pošto si preuzeo izvor jezgra, traba da ga "bunzip" i "untar". Uradi
tar xvjf linux-2.6.9.tar.bz2
Opcija "x" je za "untar", "v" je za dobijanje više informacija na ekranu, "j" je za to da "bunzip" ide pre "untar" i "f" je za označavanje fajla. Fajl će biti otpakovan u direktorijum linux-2.6.9. Idi tamo sa komandon "cd" (znači "change directory" ili promeni direktorijum). 2. Konfiguracija jezgra Pre sastavljanja, jezgro treba da se konfiguriše. Tokom konfiguracije, mi ćemo izabrati delove koji nam trebaju. Recimo da koristimo ext3 fajl sistem. Znači treba da izaberemo podršku za ext3 tokom konfiguracije. Obično koristimo komandu koja nas vodi na ekran za konfiguraciju.
make menuconfig
Postoje i druge opcije kao 'make xconfig' and 'make config'. Prva počinje konfiguraciju u grafičkom modu, a druga u tekstualnom. Znači kada izaberemo delove jezgra koji nam trebaju, onda izlazimo iz konfiguracionog ekrana. Ne zaboravi da pre izlaska sačuvaš izabranu konfiguraciju. Posle opisane konfiguracije jezra, možemo naći fajl .config u prvom gornjem direktorijumu izvornih fajlova. Ovo je konfiguracioni fajl. Sadrži razne opcije i njihove statuse (bez obzira da li su izabrane ili ne). Na primer, ako izaberemo PCI podršku u našem jezgru, onda imamo liniju:
CONFIG_PCI=y
u .config fajlu. Slično ovome, opcije koje nisu izabrane imaće informaciju da nisu potrebne. Ako nismo izabrali podršku za XFS fajl sistem, onda imamo liniju
# CONFIG_XFS_FS is not set
Odlična karakteristika jezgra 2.6 je da ako koristimo "make menuconfig" (ili xconfig ili config) po prvi put, onda nam ekran pokazuje trenutnu konfiguraciju jezgra. U mom slučaju, ja imam Fedora Core 1 sistem. Moje jezgro je '2.4.22-1.2115.nptl'. Tako da kada je pokrenem 'make menuconfig' po prvi put, ekran za konfiguraciju sadrži opcije iz '/boot/config-2.4.22-1.2115.nptl'. 3. Praviti zavisne programe (zavisnike) Ovo je neophodno u jezgrima pre verzije 2.6 (ja ovde govorim samo o stabilnim serijama jezgra). Na primer, ako koristimo jezgro verzije 2.4, onda posebno i izričito moramo praviti zavisnike. Moramo koristiti komandu:
make dep
Ovo će napraviti zavisnike. Ovaj korak se može preskočiti u jezgru 2.6. Finalno pravljenje imidža jezgra 2.6 automatski kreira zavisnike. 4. Pravljenje finalnog imidža Možemo napraviti razne tipove imidža jezgra. Možemo praviti prost imidž, ili sažetu/kompresovanu verziju, obično izbor pada na sažetu verziju ili 'bzImage'. bzImage imidž se pravi sa komandom
make bzImage
U verziji 2.6, ovaj korak će takođe napraviti zavisnike pre pravljenja bzImage imidža. Kada je sastavljenje zavrženo, možemo naći imidž jezgra u arch/i386/boot/bzImage (važi za procesor tipa 386 - Pentium, AMD, itd). 5. Sastavljanje i instaliranje modula Ako smo u delu konfiguracije izabrali neke delove da budu moduli jezgra, onda ih moramo sastaviti. To se radi sa komandon:
make modules
Ova komanda sabira komponente (koje su izabrane za sabiranje modula) u module. U verziji 2.4 rezultat su .o fajlovi. Ali u verziji 2.6, fajl je .ko modul. Na primer, ako smo izabrali mrežne drajvere za Realtek kartu da budu sabrani kao moduli, onda posle komande 'make modules' u direktorijumu 'driver/net/' nalazimo fajl 8139too.o ako je verzija Linuks jezgra 2.4 ili 8139too.ko ako je verzija 2.6. Posle sabiranja modula, vreme je za njihovu instalaciju sa komandom (kao korisnik root):
make modules_install
Ovo će instalirati module i ostale neophodne fajlove u /lib/modules/2.6.9 direktorijum. 6. Početno startovanje (boot) iz novog jezgra Pošto smo završili sa instalacijom modula, idemo na automatsku instalaciju jezgra sa komandom
make install
Ovo će nadograditi imidž jezgra u /boot području, nadograditi konfiguracioni fajl za učitavanje početnog startovanja (lilo.conf ili grub.conf) i onda uraditi neophodne korake da bi novo jezgro moglo da se startuje. Posle ovoga treba restartovati mašinu. Pri novom startovanju, start meni će nas dati opciju da izaberemo novo sabrano jezgro. Izaberemo tu opciju i to je to. Nađemo se u jezgru koje smo sami sabrali. 7. Ručna instalacija jezgra U slučaju da 'make install' ne radi ili automatska instalacija ne radi iz nekog drugog razloga, onda treba da probamo ručnu instalaciju. Na primer, ako koristimo "grub", onda treba da kopiramo bzImage u particiju za početno startovanje i zatim podesimo '/etc/grub.conf' tako da je fajl svestan prisustva novog imidža. Ako koristimo "lilo", onda treba da kopiramo bzImage u lokaciju iz koje se startuje, pa zatim podesimo lilo.conf fajl i pokrenemo komandu "lilo", što će potvrditi da kada sledeći put pokrenemo mašinu, dobijamo novi imidž kao opciju za startovanje. Sledi komanda koju pokrećemo kao root u slučaju da koristimo lilo učitivač:
cp -a arch/i386/boot/bzImage /boot/bzImage-2.6.9
Posle ovoga dodajemo sledeće linije u /etc/lilo.conf
image=/boot/bzImage-2.6.9
label=2.6.9-kernel
root=your_root_disk
I posle ovoga pokrećemo komandu
lilo -v
Posle ovoga restartujemo mašinu. Lilo će nas pitati za opciju startovanja, mi biramo '2.6.9-kernel' i startujemo se u novom jezgru. 8. Sabiranje sa dosta dodatnih informacija Sabiranje jezgra je vrlo tiho. Tokom sabiranja jezgra, nema mnogo informacija na ekranu. #make bzImage CHK include/linux/version.h UPD include/linux/version.h SPLIT include/linux/autoconf.h -> include/config/* CC scripts/mod/empty.o HOSTCC scripts/mod/mk_elfconfig MKELF scripts/mod/elfconfig.h HOSTCC scripts/mod/file2alias.o HOSTCC scripts/mod/modpost.o HOSTCC scripts/mod/sumversion.o .... ....Ako nas zanimaju komande korišćenje tokom sabiranja, onda treba da koristimo opciju sabiranja koja daje dodatne informacija. Opcija je:
make bzImage V=1
Ovo pokazuje komande koje se izvršavaju tokom sabiranja. Evo isečka sabiranja: < ..odsečak..> make -f scripts/Makefile.build obj=init gcc -Wp,-MD,init/.main.o.d -nostdinc -iwithprefix include -D__KERNEL__ -Iinclude -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -msoft-float -mpreferred-stack-boundary=2 -march=i686 -Iinclude/asm-i386/mach-default -O2 -fomit-frame-pointer -DKBUILD_BASENAME=main -DKBUILD_MODNAME=main -c -o init/main.o init/main.c CHK include/linux/compile.h UPD include/linux/compile.h gcc -Wp,-MD,init/.version.o.d -nostdinc -iwithprefix include -D__KERNEL__ -Iinclude -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -msoft-float -mpreferred-stack-boundary=2 -march=i686 -Iinclude/asm-i386/mach-default -O2 -fomit-frame-pointer -DKBUILD_BASENAME=version -DKBUILD_MODNAME=version -c -o init/version.o init/version.c < ..odsečak..>9. Čišćenje izvora fajlova jezgra Ponekad kada završimo sabiranja jezgra iz izvornih fajlova, mi hoćemo da očistimo fajlove objekata i druge privremene fajlove. Za to koristimo komandu:
make clean
Ovo uklanja privremene fajlove ali čuva konfiguracione. Ako hoćemo potpuno čišćenje, na primer da povratimo izvorne fajlove na stanje pre sabiranja, onda koristimo komandu
make mrproper
Ova komanda bukvalno briše sve privremene, konfiguracione i razne fajlove koji su sačuvani kao kopije. Znači posle ove komande, izvorni fajlovi su isto kao što su bili posle preuzimanja sa sajta. 10. Zaključak Videli smo kako da preuzmemo izvorne fajlove za Linuks jezgro, kako da if konfigurišemo, kako da saberemo imidž jezgra i module, kako da prvi put startujemo novo jezgro, i kako da podesimo sabiranje sa mnogo više informacija. Takođe smo videli kako da očistimo privremene i konfiguracione fajlove nastale tokom sabiranja. Sledeći korak za one koji hoće više, je izmena izvornih fajlova i eksperimentisanje sa njima. Napomena prevodioca: Ја sam 100% amater u prevođenju i veoma se dvoumim kada treba da prevedem neke reči karakteristične za oblast računara. Biće mi drago ako ima onih koji su veštiji u prevođenju i voljni da razvijaju ovaj sajt. | |||