Naprej Nazaj Vsebina

3. Kako zares sestaviti jedro

3.1 Nabava izvorne kode

Izvorno kodo lahko dobite po anonimnem FTP-ju s 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. Izvorna koda jedra je navadno označena kot linux-x.y.z.tar.gz, kjer je x.y.z številka različice. Strežniki navadno premorejo tudi datoteke s podaljškom .bz2, ki so bile stisnjene s pripomočkom bzip2 (te datoteke bodo manjše, zato bo za njihov prenos potrebno manj časa).

Najboljše bo, če za prenos uporabite ftp.xx.kernel.org, kjer 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 izvorne 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 izvorno kodo jedra (večina jih stori tako), bo tam že imenik ,,linux``, ki vsebuje celotno staro drevo izvorne kode. Če imate dovolj diskovnega prostora in bi se radi počutili varno, ohranite ta imenik. Dobra ideja je, da izveste različico sistema, ki jo trenutno uporabljate, in ustrezno preimenujete 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 se počutite malo bolj lahkomiselne, preprosto pobrišite celoten imenik. V vsakem primeru se prepričajte, da v /usr/src nimate imenika ,,linux``, preden odpakirate celotno izvorno kodo.

Zdaj v imeniku /usr/src odpakirajte izvorno 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 izvorne 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 ostalih datotek .o itd.

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

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

3.3 Nastavitev jedra

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

Ukaz ,,make config`` v imeniku /usr/src/linux požene nastavitveni skript, ki vas vpraša veliko vprašanj. Potrebuje ukazno lupino bash, zato preverite, če ta obstaja 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 ,,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, lahko greste nazaj in zadevo popravite.

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

Pripravljeni ste na odgovarjanje nekaj vprašanj, navadno z ,,y`` (da) ali ,,n`` (ne). Gonilnik 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. Bolj duhovit način za opis te izbire bi bil ,,mogoče``. Nekatere bolj očitne in ne-kritične izbire tukaj niso opisane; glejte 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. Tukaj je seznam nekaterih najpomembnejših odlik, s hierarhijo, v kateri jih najdete, in kratkim opisom.

Kernel math emulation (Processor type and features)

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

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

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

[ Podpora izboljšanim diskom (MFM/RLL) in diskom/CD-ROM-om tipa IDE (Blokovne naprave) ]

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

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; glavna razlika je v tem, da stari gonilnik podpira le dva diska na enem vmesniku, medtem ko novi podpira drugi vmesnik in CD-ROM-e IDE/ATAPI. Novi gonilnik je 4 KB večji od starejšega in naj bi bil ,,izpopolnjen``, kar pomeni, da poleg vsebovanja različnega števila hroščev verjetno tudi izboljša obnašanje vašega diska, posebej, če imate novejšo strojno opremo tipa EIDE.

Networking support (General Setup)

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

Tukaj boste zelo verjetno rekli ,,y``, saj želite, da bo vaš računalnik omrežen na Internet ali da bo dostopal vanj preko SLIP, PPP, term itd., torej s klicnim dostopom. Vendar, ker veliko paketov (kot na primer sistem X window) potrebuje omrežno podporo tudi, če vaš računalnik ne živi v pravem omrežju, boste tukaj vseeno rekli ,,y``. Pozneje vas bo program vprašal, če ž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) ]

Ena najboljših definicij IPC (Interprocess Communication, medprocesna komunikacija) je 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 dobra ideja, razen, če točno veste, kaj počnete.

Processor family (Processor type and features)

[ Procesorska družina (Vrsta in lastnosti procesorja) ]

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

Včasih je to vključilo posebne optimizacije za določen procesor; jedro je teklo povsem dobro na ostalih č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 na vseh strojih.

SCSI support

[ Podpora SCSI ]

Če imate naprave tipa SCSI, recite ,,y``. Vprašani boste po nadaljnih podatkih, kot je podpora CD-ROM-om, diskom in katere vrste vmesnik SCSI imate. Za več podrobnosti preberite SCSI-HOWTO.

Network device support

[ Podpora omrežnim napravam ]

Če imate mrežno kartico ali bi radi uporabljali SLIP, PPP ali paralelni vmesnik za dostop na Internet, recite ,,y``. Nastavitveni skript vas bo vprašal o tipu kartice in protokolu, ki ga boste uporabljali.

Filesystems

[ Datotečni sistemi ]

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

Vendar jaz ne vem, katere datotečne sisteme potrebujem!

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

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 tipa ,,second extended``, uporabljam /proc in nameščena je disketa z datotečnim sistemom msdos (bljak).

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

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

Character devices

[ Znakovne naprave ]

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

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

Sound

[ Zvok ]

Če imate veliko željo slišati, kako biff laja, recite ,,y``, in nastavitvenemu programu lahko poveste vse o vaši zvočni kartici. (Opomba glede nastavitve zvočne kartice: ko vas vpraša, če želite namestiti popolno različico gonilnikov, lahko rečete ,,n`` in prihranite nekaj pomnilnika jedra z izbiro le tistih lastnosti, ki se vam zdijo potrebne.)

Če zares potrebujete dobro podporo zvočne kartice, poglejte 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 tukaj niso naštete, saj se prepogosto spreminjajo ali so same po sebi razvidne (na primer, podpora 3Com 3C509 za točno to mrežno kartico). Obstaja precej obsežen seznam vseh izbir (in način, kako jih uvrstimo v skript Configure); 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 izvorni 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, tukaj odgovorili z ,,n``.

3.4 Pa zdaj? (Datoteka Makefile)

Ko opravite nastavljanje, vam sporočilo pove, da je jedro nastavljeno in da naj pogledate ,,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 ogledu te datoteke počutite izgubljeni, jo pač pozabite.


Naprej Nazaj Vsebina