Naprej Nazaj Kazalo

3. Kako zares sestaviti jedro

3.1 Nabava izvirne kode

Izvirno kodo lahko dobite po anonimnem FTP iz strežnika ftp.kernel.org v imeniku /pub/linux/kernel/vx.y, kjer je x.y različica (npr. 2.2) in, kot je bilo že omenjeno, so lahko razvojne različice jedra, označene z lihimi končnimi številkami, nestabilne. Izvirna koda jedra je navadno označena kot linux-x.y.z.tar.gz, kjer je x.y.z številka različice. Strežniki imajo navadno tudi datoteke s podaljškom .bz2, ki so bile stisnjene s pripomočkom bzip2 (te datoteke bodo manjše, zato bo za njihov prenos treba manj časa).

Najbolje bo, če za prenos uporabite ftp.xx.kernel.org, pri čemer je xx koda vaše države; v Sloveniji boste tako uporabili ftp.si.kernel.org, v Avstriji ftp.at.kernel.org, v Združenih državah Amerike pa ftp.us.kernel.org.

3.2 Odpakiranje izvirne kode

Prijavite se kot ,,root`` (ali pa uporabite ukaz su) in s cd spremenite imenik na /usr/src. Če ste ob prvi namestitvi Linuxa namestili tudi izvirno kodo jedra (večina jih stori tako), bo tam že imenik ,,linux`` s celotnim starim drevesom izvirne kode. Če imate dovolj diskovnega prostora in bi se radi počutili varno, ohranite ta imenik. Pametno je izvesti različico sistema, ki jo trenutno uporabljate, in ustrezno preimenovati imenik. Trenutno različico jedra izveste z ukazom ,,uname -r``. Če torej ,,uname -r`` pravi ,,1.0.9``, boste preimenovali (z ,,mv``) ,,linux`` v ,,linux-1.0.9``. Če ste malo bolj lahkomiselni, preprosto zbrišite ves imenik. V vsakem primeru preverite, da v /usr/src nimate imenika ,,linux``, preden odpakirate celotno izvirno kodo.

Zdaj v imeniku /usr/src odpakirajte izvirno kodo z ukazom ,,tar zxpvf linux-x.y.z.tar.gz`` (če imate samo datoteko .tar brez končnega .gz, pa z ukazom ,,tar xpvf linux-x.y.z.tar``). Na zaslonu boste videli izpisane datoteke izvirne kode. Ko tar konča, boste imeli nov imenik /usr/src/linux. Naredite cd v linux in preberite datoteko README. Nekje bo razdelek z naslovom ,,INSTALLING the kernel`` (,,NAMESTITEV jedra``). Upoštevajte navodila, kjer je to primerno -- simbolne povezave, ki morajo biti na pravih mestih, brisanje drugih datotek .o itd.

Če imate datoteko .bz2 in pripomoček bzip2 (več o tem si preberite na http://www.muraroa.demon.co.uk/), naredite tole:

bz2cat linux-x.y.z.tar.bz2 | tar xvf -

3.3 Nastavitev jedra

Opomba: Del tega je reiteracija/razjasnitev podobnega razdelka v Linusovi datoteki README.

Ukaz ,,make config`` v imeniku /usr/src/linux požene nastavitveni skript, ki vam zastavi kup vprašanj. Potrebuje ukazno lupino bash, zato preverite, ali je ta v /bin/bash, /bin/sh, ali $BASH.

Verjetno boste raje uporabljali katero od alternativ ukazu ,,make config``. Tisti, ki poganjate grafični sistem X, lahko poskusite z ,,make xconfig``, če imate nameščen programski paket Tk (,,klik-o-rama`` - Nat). ,,make menuconfig`` je za tiste, ki imate (n)curses in bi radi imeli tekstovne menuje. Ta dva vmesnika imata bistveno prednost pred standardnim: če zamočite in med konfiguracijo izberete napačno izbiro, se lahko vrnete in stvar popravite.

Z uporabo ,,make menuconfig`` ali ,,make xconfig`` bodo nastavitvene izbire urejene hierarhično.

Pripravljeni ste odgovarjati na nekaj vprašanj, navadno z ,,y`` (da) ali ,,n`` (ne). Gonilniki naprav imajo tipično izbiro ,,m``. Ta pomeni ,,modul``, se pravi, da ga bo sistem prevedel, ne pa tudi vključil neposredno v jedro. Na voljo bo kot nalagalni modul. Duhovitejši način za opis te izbire bi bil ,,mogoče``. Nekatere očitnejše in nekritične izbire tu niso opisane; glej razdelek ,,Druge nastavitvene izbire`` za kratek opis nekaterih posameznih izbir. Pri ,,make menuconfig`` s presledkom spreminjate izbiro.

V jedrih 2.0.x in poznejših je na voljo tudi izbira ,,?``, ki poda kratek opis posameznega nastavitvenega parametra. Ta informacija je verjetno najbolj sveža. Tu je seznam nekaterih najpomembnejših odlik, s hierarhijo, v kateri jih najdete, in kratkim opisom.

Kernel math emulation (Processor type and features)

[ Posnemanje matematičnih operacij v jedru (Vrsta in lastnosti procesorja) ]

Če nimate matematičnega koprocesorja (imate le goli procesor 386 ali 486SX), morate tu reči ,,y``. Če imate koprocesor in rečete ,,y``, naj vas ne skrbi preveč -- koprocesor se bo še vedno uporabljal, posnemanje pa ignoriralo. Za vsak napol sodoben stroj bo odgovor ,,ne``, a ne skrbite, če boste pomotoma rekli ,,da``; če posnemanje ni potrebno, se ne uporablja.

Enhanced (MFM/RLL) disk and IDE disk/cdrom support (Block Devices)

[ Podpora izboljšanim diskom (MFM/RLL) in diskom/CD-ROM vrste IDE (blokovne naprave) ]

Verjetno morate to podpreti; pomeni, da bo jedro podpiralo standardne diske, ki jih najdemo v osebnih računalnikih večine ljudi. Ta gonilnik ne vključuje pogonov SCSI; v nastavitvah pridejo ti na vrsto pozneje.

Nastavitveni program vas bo nato vprašal, ali želite podporo le starim diskom (,,old disk-only``) in novim diskom IDE (,,new IDE``). Izbrati morate eno od teh možnosti; poglavitna razlika je v tem, da stari gonilnik podpira le dva diska na enem vmesniku, novi pa drugi vmesnik in CD-ROM IDE/ATAPI. Novi gonilnik je 4 KB večji od starejšega in naj bi bil ,,izpopolnjen``, kar pomeni, da premore več ali manj hroščev, verjetno pa tudi izboljša vedenje vašega diska, še posebej, če imate novejšo strojno opremo vrste EIDE.

Networking support (General Setup)

[ Omrežna podpora (splošne nastavitve) ]

Tu boste zelo verjetno rekli ,,y``, saj želite, da bi bil vaš računalnik omrežen v internet ali bi vanj vstopal prek SLIP, PPP, term itd., torej s klicnim dostopom. A ker številni paketi (na primer sistem X window) potrebujejo omrežno podporo tudi, če vaš računalnik ne živi v pravem omrežju, boste tu vseeno odgovorili z ,,y``. Pozneje vas bo program vprašal, ali želite omrežno podporo protokolu TCP/IP; spet boste odgovorili z ,,y``, če niste absolutno prepričani v nasprotno.

System V IPC (General Setup)

[ Medprocesna komunikacija Systema V (splošne nastavitve) ]

Eno najboljših definicij IPC (Interprocess Communication, medprocesna komunikacija) najdemo v slovarčku knjige Programming Perl: ,,Včasih se mora proces le pogovoriti z drugim procesom``. Ne preseneča nas torej, da nekateri perlovski programerji dovoljujejo procesom, da se pogovarjajo drug z drugim, kot to počne tudi veliko drugih paketov (najbolj znan je DOOM), torej izbira ,,n`` ni najboljša, razen če natanko veste, kaj počnete.

Processor family (Processor type and features)

[ Procesorska družina (vrsta in značilnosti procesorja) ]

(v starejših jedrih: uporabite zastavico -m486 za optimizacije za 486)

Včasih je to zajemalo posebne optimizacije za določen procesor; jedro je teklo povsem dobro na drugih čipih, a je bilo morda malo večje. V novejših jedrih pa to ni več res, zato vnesite procesor, za katerega prevajate jedro. Jedro za ,,386`` bo delovalo v vseh strojih.

SCSI support

[ Podpora SCSI ]

Če imate naprave vrste SCSI, recite ,,y``. Vprašani boste po nadaljnjih podatkih, kot je podpora CD-ROM, diskom, in katere vrste vmesnik SCSI imate. Podrobnosti si preberite v SCSI-HOWTO.

Network device support

[ Podpora omrežnim napravam ]

Če imate omrežno kartico ali bi radi uporabljali SLIP, PPP ali vzporedni vmesnik za dostop v internet, recite ,,y``. Nastavitveni skript vas bo vprašal po vrsti kartice in protokolu, ki ga boste uporabljali.

Filesystems

[ Datotečni sistemi ]

Nastavitveni skript vas bo vprašal, ali želite imeti v jedru podprte naslednje datotečne sisteme:

Kako naj vem, katere datotečne sisteme potrebujem?!

Prav, napišite ,,mount``. Izpis bo približno tak:

blah:# mount 
/dev/hda1 on / type ext2 (defaults) 
/dev/hda3 on /usr type ext2 (defaults) 
none on /proc type proc (defaults) 
/dev/fd0 on /mnt type msdos (defaults)

Poglejte v vsako vrstico; beseda poleg ,,type`` je ime datotečnega sistema. V tem primeru sta moja datotečna sistema / in /usr vrste ,,second extended``, uporabljam /proc in nameščena je disketa z datotečnim sistemom msdos (fej).

Poskusite tudi ,,cat /proc/filesystems``, če imate trenutno vklopljen /proc; to bo izpisalo vaše trenutne datotečne sisteme v jedru.

Namestitev redko rabljenih, ne nujnih datotečnih sistemov lahko povzroči napihnjeno jedro; glej razdelek o modulih za način, kako se temu izogniti, in razdelek ,,Velika ali počasna jedra`` o tem, zakaj je napihnjeno jedro nezaželen pojav.

Character devices

[ Znakovne naprave ]

Tu vključite gonilnike za vaš tiskalnik (pravzaprav tiskalnik na vzporednih vratih), miško, priklopljeno na vrata busmouse ali PS/2 (veliko notesov uporablja miškovni protokol PS/2 za vgrajene sledilne kroglice), nekatere tračne enote in druge take ,,znakovne`` naprave. Odgovorite z ,,y``, če je tako prav.

Opomba: gpm je program, ki omogoča uporabo miške zunaj sistema X window za izrezovanje in lepljenje besedila med navideznimi zasloni. Dobro je, če imate miško na zaporednih vratih, saj lepo shaja z Okni X, za druge miške pa morate uporabiti posebne zvijače.

Sound

[ Zvok ]

Če si zelo želite slišati, kako biff laja, odgovorite ,,y`` in nastavitvenemu programu lahko poveste vse o vaši zvočni kartici. (Opomba k nastavitvi zvočne kartice: ko vas vpraša, ali želite namestiti popolno različico gonilnikov, lahko odgovorite ,,n`` in prihranite nekaj pomnilnika jedra z izbiro le tistih značilnosti, ki se vam zdijo potrebne.)

Če zares potrebujete dobro podporo zvočni kartici, si oglejte proste gonilnike na naslovu http://www.linux.org.uk/OSS/ in komercialni Open Sound System na http://www.opensound.com/.

Druge nastavitvene možnosti

Vse nastavitvene izbire tu niso naštete, saj se prepogosto spreminjajo ali so same po sebi razvidne (na primer, podpora 3Com 3C509 za točno to omrežno kartico). Seznam vseh izbir (in načinov, kako jih uvrstimo v skript Configure) je precej obsežen; projekt je začel in vzdrževal Axel Boldt (boldt@math.ucsb.edu) in je dostopen kot pomoč na zvezi. Na voljo je tudi kot ena sama velika datoteka Documentation/Configure.help v izvirni kodi jedra od različice Linuxa 2.0 naprej.

Kernel hacking

[ Hekanje jedra ]

Iz Linusove datoteke README:

Izbira ,,hekanje jedra`` navadno vodi v večje in počasnejše jedro (ali v oboje) in lahko naredi jedro manj stabilno tako, da prekodira nekatere rutine, ki aktivno poskušajo sesuti slabo kodo in s tem najti jedrne probleme (kmalloc()). Torej boste, če ste navadni smrtnik, tu odgovorili z ,,n``.

3.4 Pa zdaj? (Datoteka Makefile)

Ko opravite nastavljanje, vam sporočilo pove, da je jedro nastavljeno in da si oglejte ,,najvišje nivojsko datoteko Makefile za dodatno nastavitev`` itd.

Poglejte torej Makefile. Verjetno vam je ne bo treba spreminjati, a nikoli ne škodi, če pogledate. Po namestitvi novega jedra lahko spreminjate izbire tudi z ukazom ,,rdev``. Če se ob ogledovanju te datoteke počutite izgubljeni, pač pozabite nanjo.


Naprej Nazaj Kazalo