  Jedro Linuxa, HOWTO
  Brian Ward, bri@cs.uchicago.edu
  v1.0, 5. junij 1999

  To je slovenski prevod datoteke Kernel-HOWTO, podrobnega vodnika nas
  tavitev jedra operacijskega sistema Linux, prevajanja, nadgradnje in
  odpravljanja problemov za sisteme s procesorji ix86.
  ______________________________________________________________________


  Kazalo


  1. Uvod

     1.1 Najprej preberite tole! (In to res mislim!)
     1.2 O stilu

  2. Pomembna vpraanja in njihovi odgovori

     2.1 Kaj pravzaprav sploh pone jedro?
     2.2 Zakaj bi si eleli nadgraditi svoje jedro?
     2.3 Katero strojno opremo podpirajo nova jedra?
     2.4 Katero razliico prevajalnika gcc in knjinice libc potrebujem?
     2.5 Kaj je nalagalni modul (loadable module)?
     2.6 Koliko prostora potrebujem na disku?
     2.7 Kako dolgo traja?

  3. Kako zares sestaviti jedro

     3.1 Nabava izvorne kode
     3.2 Odpakiranje izvorne kode
     3.3 Nastavitev jedra
        3.3.1 Kernel math emulation (Processor type and features)
        3.3.2 Enhanced (MFM/RLL) disk and IDE disk/cdrom support
            (Block Devices)
        3.3.3 Networking support (General Setup)
        3.3.4 System V IPC (General Setup)
        3.3.5 Processor family (Processor type and features)
        3.3.6 SCSI support
        3.3.7 Network device support
        3.3.8 Filesystems
           3.3.8.1 Vendar jaz ne vem, katere datotene sisteme potrebujem!
        3.3.9 Character devices
        3.3.10 Sound
        3.3.11 Druge nastavitvene monosti
        3.3.12 Kernel hacking
     3.4 Pa zdaj? (Datoteka Makefile)

  4. Prevajanje jedra

     4.1 ienje in urejanje odvisnosti
     4.2 as za prevajanje
     4.3 Drugi cilji ,,make``
     4.4 Namestitev jedra

  5. Popravljanje jedra

     5.1 Uporaba popravka
     5.2 e se kje zalomi
     5.3 Kako se znebite datotek .orig
     5.4 Drugi popravki

  6. Dodatni paketi

     6.1 kbd
     6.2 util-linux
     6.3 hdparm
     6.4 gpm

  7. Nekatere pasti

     7.1 make clean
     7.2 Velika ali poasna jedra
     7.3 Vzporedna vrata ne delujejo/tiskalnik ne deluje
     7.4 Jedro se ne prevede
     7.5 Novo jedro se noe zagnati
     7.6 Pozabili ste pognati LILO, ali pa se sistem sploh ne zaene
     7.7 Izpie ,,warning: bdflush not running``
     7.8 Mojega CD-ROM-a IDE/ATAPI ne prepriam, da bi deloval
     7.9 Izpisuje udne rei o zastarelih zahtevah za usmerjanje
          (obsolete routing requests)
     7.10 Poarni zid ne deluje v 1.2.0
     7.11 ,,Not a compressed kernel Image file`` (datoteka s sliko
          jedra ni komprimirana) 
     7.12 Teave z zaslonskim terminalom po nadgradnji na 1.3.x
     7.13 Po nadgradnji jedra ne morem prevajati zadev
     7.14 Poveanje omejitev

  8. Opomba o nadgradnji na razliice 2.0.x, 2.2.x

  9. Moduli

     9.1 Namestitev modulskih pripomokov
     9.2 Moduli, distribuirani poleg jedra

  10. Nasveti in triki

     10.1 Preusmeritev izhoda ukazov make in patch
     10.2 Pogojna intalacija jedra
     10.3 Nadgradnje jedra

  11. Ostali HOWTO-ji, ki bi lahko bili uporabni

  12. Razno

     12.1 Avtor
     12.2 Narediti
     12.3 Prispevki
     12.4 Pravice razirjanja, licenca, in te stvari

  ______________________________________________________________________


  1.  Uvod


  Naj sploh berete ta dokument?  No, poglejte, e imate katerega od
  natetih simptomov:

  *  ,,Aaa! Tale paket wizzo-46.5.6 pravi, da potrebuje jedro izdaje
     vsaj 2.8.193, jaz pa imam e vedno izdajo 1.0.9!``

  *  V enem novejih jeder je gonilnik za neko napravo, ki ga preprosto
     morate imeti.

  *  Nimate najmanjega pojma, kako prevesti jedro.

  *  ,,Je stvar v datoteki README res vsa zgodba?``

  *  Prili ste, poskusili, ni delovalo.

  *  Potrebujete nekaj, kar bi dali ljudem, ki vas muijo s pronjami,
     da namesto njih namestite njihova jedra.


  1.1.  Najprej preberite tole! (In to res mislim!)


  Nekateri primeri v tem spisu predpostavljajo, da imate GNU tar, find
  in xargs.  Ti so kar standardni; to vam ne bi smelo povzroati
  preglavic.  Predvidevam tudi, da poznate datoteno strukturo vaega
  sistema; e je ne, je pomembno, da imate pri roki izpisano kopijo
  izhoda ukaza mount med normalnim delovanjem sistema (ali izpis
  datoteke /etc/fstab, e ga znate brati).  Te informacije so pomembne
  in se ne spreminjajo, razen, e razparcionirate svoj disk, dodate
  novega, ponovno namestite svoj sistem, ali kaj podobnega.

  Zadnja stabilna razliica jedra je bila v asu pisanja tega spisa
  2.2.9, torej se sklicevanja in primeri nanaajo na to izdajo.  eprav
  poskuam narediti ta spis karseda neodvisen od razliice, se jedro
  nenehno razvija, torej bo noveja razliica neizogibno vsebovala nekaj
  sprememb.  To vam ne bi smelo povzroati vejih teav, lahko pa vas
  malce zmede.

  Obstajata dve razliici izvorne kode jedra Linuxa; stabilna (angl.
  ,,production``) in razvojna (angl. ,,development``).  Stabilne izdaje
  imajo sodo malo tevilo: 1.2.x je bila stabilna, 2.0.x prav tako, in
  tudi 2.2.x.  Ta jedra se smatrajo za najbolj stabilne in razhroene
  razliice v asu njihove izdaje.  Razvojna jedra (2.1.x, 2.3.x itd.)
  so jedra, namenjena preizkuanju, za ljudi, ki bi radi preizkusili
  nova in morda zelo hroata jedra.  Bili ste opozorjeni!


  1.2.  O stilu


  Besedilo, ki je videti takole je nekaj, kar se prikae na vaem
  zaslonu, ime datoteke ali nekaj, kar lahko neposredno vtipkate, na
  primer ukaz ali izbire pri ukazu (e gledate tekstovno razliico tega
  spisa, zgornje besedilo ne izgleda ni drugae).  Ukazi in drugi vnosi
  so pogosto citirani (z ,, ``), v slovenskem prevodu takole: ,,make
  config``.


  2.  Pomembna vpraanja in njihovi odgovori


  2.1.  Kaj pravzaprav sploh pone jedro?


  Jedro Unixa deluje kot posrednik med vaimi programi in strojno
  opremo.  Najprej, dela (ali poskrbi za) upravljanje s pomnilnikom za
  vse tekoe programe (procese) in poskrbi, da vsi dobijo poten (ali
  nepoten, e tako elite) dele ciklov procesorja.  Poleg tega daje
  programom prijazen, precej prenosljiv, vmesnik za pogovor z vao
  strojno opremo.

  Gotovo ima jedro ve dolnosti kot samo ti dve, a najpomembneje je, da
  poznate ti, osnovni.


  2.2.  Zakaj bi si eleli nadgraditi svoje jedro?


  Noveja jedra v splonem ponujajo monost za pogovor z ve vrstami
  opreme (to se pravi, imajo ve gonilnikov naprav), imajo morda bolje
  procesno upravljanje, lahko delujejo hitreje kot stareje razliice,
  so bolj stabilna od starejih razliic in odpravijo neumne hroe v
  starejih razliicah.  Veina ljudi nadgradi jedra, ker elijo
  gonilnike naprav in popravke hroev.


  2.3.  Katero strojno opremo podpirajo nova jedra?


  Preberite Hardware-HOWTO. Kot alternativo lahko pogledate datoteko
  config.in, v Linuxovi izvorni kodi, lahko pa tudi izveste, ko
  poskusite ,,make config``. To vam pokae vso opremo, ki je podprta v
  standardni izdaji jedra, a ne vse, kar podpira Linux; veliko pogostih
  gonilnikov (kot npr. gonilniki za PCMCIA in za nekatere trane enote)
  je nalagalnih modulov, ki se urejajo in distribuirajo posebej.


  2.4.  Katero razliico prevajalnika gcc in knjinice libc potrebujem?


  Linus priporoa razliico gcc v datoteki README, priloeni izvorni
  kodi Linuxa.  e nimate te razliice, vam dokumentacija poleg
  priporoene razliice gcc pove, e morate nadgraditi knjinico libc.
  To ni teko opravilo, pomembno pa je, da sledite navodilom.


  2.5.  Kaj je nalagalni modul (loadable module)?


  To so delki kode jedra, ki niso povezani (vkljueni) direktno v
  jedro.  Prevedemo jih posebej in jih lahko vkljuimo ali odstranimo v
  delujoe jedro skoraj kadarkoli.  Zaradi njihove fleksibilnosti je to
  zdaj priporoen nain za uporabo doloenih lastnosti jedra.  Mnogi
  popularni gonilniki, na primer gonilniki za PCMCIA in za trano enoto
  QIC-80/40, so nalagalni moduli.


  2.6.  Koliko prostora potrebujem na disku?


  Odvisno od vae konkretne konfiguracije sistema.  Komprimirana izvorna
  koda Linuxa razliice 2.2.9 je velika priblino 14 MB.  Veina
  raunalnikov jo obdri tudi po odpakiranju.  Odpakirana in zgrajena
  izvorna koda jedra za povpreno sestavo zasede dodatnih 67 MB.


  2.7.  Kako dolgo traja?


  Na novejih strojih traja prevajanje znatno manj asa kot na
  starejih; AMD K6-2/300 s hitrim diskom lahko prevede jedro 2.2.x v
  priblino tirih minutah.  e pa elite prevesti jedro na starih
  raunalnikih Pentium, 486 in 386, bodite pripravljeni akati, morda
  ure ali celo dneve ...

  e vas to moti in imate na voljo tudi hitreji stroj, na katerem lahko
  prevajate, lahko gradite jedro na hitrejih strojih (e podate
  pravilna doloila, e so vai pripomoki osveeni, in tako naprej) in
  potem prenesete sliko jedra na poasneji stroj.


  3.  Kako zares sestaviti jedro


  3.1.  Nabava izvorne kode


  Izvorno kodo lahko dobite po anonimnem FTP-ju s strenika
  ftp.kernel.org v imeniku /pub/linux/kernel/vx.y, kjer je x.y razliica
  (npr. 2.2), in kot je bilo e omenjeno, so lahko razvojne razliice
  jedra, oznaene z lihimi konnimi tevilkami, nestabilne.  Izvorna
  koda jedra je navadno oznaena kot linux-x.y.z.tar.gz, kjer je x.y.z
  tevilka razliice.  Streniki navadno premorejo tudi datoteke s
  podaljkom .bz2, ki so bile stisnjene s pripomokom bzip2 (te datoteke
  bodo manje, zato bo za njihov prenos potrebno manj asa).

  Najbolje bo, e za prenos uporabite ftp.xx.kernel.org, kjer je xx
  koda vae drave; v Sloveniji boste tako uporabili ftp.si.kernel.org,
  v Avstriji ftp.at.kernel.org, v Zdruenih dravah 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 (veina jih stori tako), bo tam e
  imenik ,,linux``, ki vsebuje celotno staro drevo izvorne kode.  e
  imate dovolj diskovnega prostora in bi se radi poutili varno,
  ohranite ta imenik.  Dobra ideja je, da izveste razliico sistema, ki
  jo trenutno uporabljate, in ustrezno preimenujete imenik.  Trenutno
  razliico 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 poutite malo bolj lahkomiselne, preprosto
  pobriite celoten imenik.  V vsakem primeru se prepriajte, 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 konnega .gz pa
  z ukazom ,,tar xpvf linux-x.y.z.tar``).  Na zaslonu boste videli
  izpisane datoteke izvorne kode.  Ko tar kona, 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``).  Upotevajte navodila, kjer je to primerno - simbolne
  povezave, ki morajo biti na pravih mestih, brisanje ostalih datotek .o
  itd.

  e imate datoteko .bz2 in pripomoek 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 poene nastavitveni
  skript, ki vas vpraa veliko vpraanj.  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 grafini sistem X, lahko poskusite
  ,,make xconfig``, e imate nameen 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 zamoite in med konfiguracijo izberete
  napano izbiro, lahko greste nazaj in zadevo popravite.

  Z uporabo ,,make menuconfig`` ali ,,make xconfig`` bodo nastavitvene
  izbire urejene hierarhino.

  Pripravljeni ste na odgovarjanje nekaj vpraanj, navadno z ,,y`` (da)
  ali ,,n`` (ne).  Gonilnik naprav imajo tipino izbiro ,,m``. Ta pomeni
  ,,modul``, se pravi, da ga bo sistem prevedel, ne pa tudi vkljuil
  neposredno v jedro.  Na voljo bo kot nalagalni modul.  Bolj duhovit
  nain za opis te izbire bi bil ,,mogoe``.  Nekatere bolj oitne in
  ne-kritine 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 poznejih je na voljo tudi izbira ,,?``, ki poda
  kratek opis posameznega nastavitvenega parametra.  Ta informacija je
  verjetno najbolj svea.  Tukaj je seznam nekaterih najpomembnejih
  odlik, s hierarhijo, v kateri jih najdete, in kratkim opisom.


  3.3.1.  Kernel math emulation (Processor type and features)

  [ Emulacija matematinih operacij v jedru (Vrsta in lastnosti
  procesorja) ]

  e nimate matematinega koprocesorja (imate le goli procesor 386 ali
  486SX), morate tukaj rei ,,y``.  e imate koprocesor in reete ,,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.


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

  [ Podpora izboljanim 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 raunalnikih veine ljudi.  Ta
  gonilnik ne vkljuuje pogonov SCSI; v nastavitvah pridejo ti na vrsto
  kasneje.

  Nastavitveni program vas bo nato vpraal ali elite podporo le starim
  diskom (,,old disk-only``) in novim diskom IDE (,,new IDE``). Izbrati
  morate eno od teh monosti; 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 veji od
  starejega in naj bi bil ,,izpopolnjen``, kar pomeni, da poleg
  vsebovanja razlinega tevila hroev verjetno tudi izbolja obnaanje
  vaega diska, posebej, e imate novejo strojno opremo tipa EIDE.


  3.3.3.  Networking support (General Setup)

  [ Omrena podpora (Splone nastavitve) ]

  Tukaj boste zelo verjetno rekli ,,y``, saj elite, da bo va
  raunalnik omreen 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 omreno podporo tudi, e va
  raunalnik ne ivi v pravem omreju, boste tukaj vseeno rekli ,,y``.
  Pozneje vas bo program vpraal, e elite omreno podporo protokolu
  TCP/IP; spet boste odgovorili z ,,y``, e niste absolutno prepriani v
  nasprotno.


  3.3.4.  System V IPC (General Setup)

  [ Medprocesna komunikacija Systema V (Splone nastavitve) ]

  Ena najboljih definicij IPC (Interprocess Communication, medprocesna
  komunikacija) je v slovarku knjige Programming Perl: ,,vasih se mora
  proces le pogovoriti z drugim procesom``.  Ne presenea nas torej, da
  nekateri perlovski programerji dovoljujejo procesom, da se pogovarjajo
  drug z drugim, kot to pone tudi veliko drugih paketov (najbolj znan
  je DOOM), torej izbira ,,n`` ni dobra ideja, razen, e tono veste,
  kaj ponete.


  3.3.5.  Processor family (Processor type and features)

  [ Procesorska druina (Vrsta in lastnosti procesorja) ]

  (v starejih jedrih: uporabite zastavico -m486 za optimizacije za 486)

  Vasih je to vkljuilo posebne optimizacije za doloen procesor; jedro
  je teklo povsem dobro na ostalih ipih, a je bilo morda malo veje.  V
  novejih jedrih pa to ni ve res, zato vnesite procesor, za katerega
  prevajate jedro.  Jedro za ,,386`` bo delovalo na vseh strojih.


  3.3.6.  SCSI support

  [ Podpora SCSI ]

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


  3.3.7.  Network device support

  [ Podpora omrenim napravam ]

  e imate mreno kartico ali bi radi uporabljali SLIP, PPP ali
  paralelni vmesnik za dostop na Internet, recite ,,y``.  Nastavitveni
  skript vas bo vpraal o tipu kartice in protokolu, ki ga boste
  uporabljali.


  3.3.8.  Filesystems

  [ Datoteni sistemi ]

  Nastavitveni skript vas bo vpraal, e elite imeti naslednje
  datotene sisteme podprte v jedru:

  *  Standard (minix) - noveje distribucije ne delajo datotenih
     sistemov minix in veliko ljudi jih ne uporablja, a mogoe je vseeno
     dobra zamisel, da bi jih podprli. Nekateri programi za izdelavo
     ,,reilnih diskov`` jih uporabljajo in veliko disket je
     formatiranih kot minix, saj je minixov datoteni sistem na disketah
     manj mukotrpen.

  *  Second extended - To je standardni datoteni sistem Linuxa.  Skoraj
     zagotovo ga imate in morate rei ,,y``.

  *  msdos - e elite uporabljate particije MS-DOS-a na trdem disku ali
     nameati dosovske formatirane diskete, recite ,,y``.

     Dostopnih je e mnogo drugih tujih datotenih sistemov.

  *  /proc - (zamisel iz Bell Labs, domnevam).  Datotenega sistema
     /proc se ne ustvari na disku; to je datoteni vmesnik do jedra in
     procesov.  Veliko izpisovalcev procesov (npr. ,,ps``) ga uporablja.
     Poskusite kdaj ,,cat /proc/meminfo`` ali ,,cat /proc/devices``.
     Nekatere ukazne lupine (posebej rc) uporabljajo /proc/self/fd (na
     drugih sistemih znan kot /dev/fd) za vhodno/izhodne (V/I)
     operacije.  Skoraj gotovo morate rei ,,y``; veliko pomembnih
     orodij za Linux je odvisnih od tega.

  *  NFS - e va stroj biva na omreju in elite uporabljati datotene
     sisteme, ki leijo na drugih sistemih z NFS, recite ,,y``.

  *  ISO9660 - Najdete ga na veini CD-ROM-ov.  e imate pogon za CD-ROM
     in ga elite uporabljati v Linuxu, recite ,,y``.

  3.3.8.1.  Vendar jaz ne vem, katere datotene sisteme potrebujem!

  Prav, napiite ,,mount``.  Izpis bo priblino taken:

     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 datotenega
  sistema.  V tem primeru sta moja datotena sistema / in /usr tipa
  ,,second extended``, uporabljam /proc in nameena je disketa z
  datotenim sistemom msdos (bljak).

  Poskusite tudi ,,cat /proc/filesystems``, e imate trenutno vklopljen
  /proc; to bo izpisalo vae trenutne datotene sisteme v jedru.

  Namestitev redko uporabljanih, ne-nujnih datotenih sistemov lahko
  povzroi napihnjeno jedro; glejte razdelek ``o modulih'' za nain,
  kako se temu izognete in razdelek ``,,Velika ali poasna jedra``'' o
  tem, zakaj je napihnjeno jedro nezaeljen pojav.


  3.3.9.  Character devices

  [ Znakovne naprave ]

  Tukaj vkljuite gonilnike za va tiskalnik (pravzaprav, tiskalnik na
  vzporednih vratih), miko, priklopljeno na vrata busmouse ali PS/2
  (veliko notesnikov uporablja mikovni protokol PS/2 za njihove
  vgrajene sledilne kroglice), nekatere trane enote in druge takne
  ,,znakovne`` naprave. Recite ,,y``, e je tako prav.

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


  3.3.10.  Sound

  [ Zvok ]

  e imate veliko eljo sliati, kako biff laja, recite ,,y``, in
  nastavitvenemu programu lahko poveste vse o vai zvoni kartici.
  (Opomba glede nastavitve zvone kartice: ko vas vpraa, e elite
  namestiti popolno razliico gonilnikov, lahko reete ,,n`` in
  prihranite nekaj pomnilnika jedra z izbiro le tistih lastnosti, ki se
  vam zdijo potrebne.)

  e zares potrebujete dobro podporo zvone kartice, poglejte proste
  gonilnike na naslovu <http://www.linux.org.uk/OSS/> in komercialni
  Open Sound System na <http://www.opensound.com/>.

  3.3.11.  Druge nastavitvene monosti

  Vse nastavitvene izbire tukaj niso natete, saj se prepogosto
  spreminjajo ali so same po sebi razvidne (na primer, podpora 3Com
  3C509 za tono to mreno kartico).  Obstaja precej obseen seznam vseh
  izbir (in nain, kako jih uvrstimo v skript Configure); projekt je
  zael in vzdreval 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 razliice Linuxa
  2.0 naprej.

  3.3.12.  Kernel hacking

  [ Hekanje jedra ]

  Iz Linusove datoteke README:

  Izbira ,,hekanje jedra`` navadno vodi v veje in poasneje jedro (ali
  v oboje) in lahko naredi jedro manj stabilno tako, da prekodira
  nekatere rutine, ki aktivno poskuajo 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 sporoilo pove, da je jedro nastavljeno
  in da naj pogledate ,,najvije-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 poutite izgubljeni, jo pa pozabite.


  4.  Prevajanje jedra


  4.1.  ienje in urejanje odvisnosti


  Ko konfiguracijski skript kona z delom, vam pove, da napravite ,,make
  dep`` in (morda) ,,clean``.  Torej napiete ,,make dep``.  To vam
  zagotovi, da so vse odvisnosti, na primer vkljune datoteke, na svojem
  mestu.  To ne traja dolgo, razen, e imate zelo poasen raunalnik.
  Pri starejih razliicah jedra morate po koncu delanja odvisnosti
  napisati e ,,make clean``.  To odstrani vse objektne datoteke in
  druge stvari, ki so jih pustile za sabo stare razliice.  V vsakem
  primeru ne pozabite narediti tega koraka preden zanete prevajati
  jedro.


  4.2.  as za prevajanje


  Po urejanju odvisnosti in ienju lahko napiete ,,make zImage`` ali
  ,,make zdisk`` (ta del traja veliko asa). ,,make zImage`` prevede
  jedro in v imeniku arch/i386/boot pusti datoteko, imenovano
  ,,bzImage`` (med drugim).  To je novo komprimirano jedro.  ,,make
  bzdisk`` naredi isto stvar, le da prepie novo datoteko bzImage na
  disketo, ki ste jo, upajmo, vstavili v pogon ,,A:`` (/dev/fd0).
  ,,bzdisk`` je prirono orodje za testiranje novih jeder; e novo jedro
  ne deluje v redu, preprosto odstranite disketo in zaenite staro
  jedro.  Vasih boste to disketo lahko uporabili tudi, e boste po
  pomoti odstranili svoje jedro (ali naredili kaj podobno groznega).
  Disketo lahko uporabite tudi pri intalaciji novih sistemov, ko
  preprosto prepiete vsebino enega diska na drugega (,,Vse to in e
  ve!  Koliko bi plaali zdaj?``).  Vsa, vsaj na pol razumno nova,
  jedra so komprimirana, odtod rka ,,bz`` pred njihovimi imeni.
  Komprimirano jedro se samodejno odkomprimira, ko se izvaja.

  V starejih jedrih ni izbire za gradnjo bzImage; le zImage.  Ta izbira
  je trenutno e vedno dostopna, vendar je glede na velikost kode
  novejih jeder uporaba bzImage bolj ali manj obvezna, saj stareje
  metode ne znajo uporabljati prevelikega jedra.


  4.3.  Drugi cilji ,,make``


  ,,make mrproper`` naredi bolj intenzivno ienje (,,clean``). Vasih
  je ta cilj potreben; morda ga elite uporabiti ob vsakem popravku.
  ,,make mrproper`` bo tudi pobrisal vao konfiguracijsko datoteko, zato
  shranite njeno rezervno kopijo (.config), e se vam zdi pomembna.

  ,,make oldconfig`` bo poskual nastaviti jedro s stare konfiguracijske
  datoteke; namesto vas bo el skozi proces ,,make config``. e e
  nikoli niste prevedli jedra ali nimate stare konfiguracijske datoteke,
  verjetno noete tega, saj hoete spremeniti privzeto nastavitev.

  Za ukaz ,,make modules`` glejte razdelek o modulih.


  4.4.  Namestitev jedra


  Ko imate novo jedro, za katerega menite, da deluje, kot elite, je as
  za njegovo namestitev.  Veina ljudi za ta korak uporablja LILO (Linux
  Loader).  Jedro namestite, poenete ez njega LILO in ga pripravite za
  zaganjanje z ukazom ,,make bzlilo``.  Vendar le, e je lilo nastavljen
  takole: jedro je /vmlinuz, lilo je v imeniku /sbin, in vaa
  nastavitvena datoteka /etc/lilo.conf se s tem strinja.

  V vseh drugih primerih morate pognati LILO neposredno.  Paket je
  precej enostaven za intalacijo in delo, a zna zmesti ljudi s
  konfiguracijsko datoteko.  Glejte nastavitveno datoteko (v starejih
  razliicah je to /etc/lilo/config, v novejih pa /etc/lilo.conf) in
  poglejte, kakne nastavitve imate.  Konfiguracijska datoteka mora
  izgledati podobno:

       image = /vmlinuz
           label = Linux
           root = /dev/hda1
           ...

  Nastavitev ,,image =`` kae na na novo nameeno jedro. Veina ljudi
  uporablja /vmlinuz. Lilo potrebuje oznako ,,label``, da ugotovi,
  katero jedro ali operacijski sistem naj zaene, oznaka ,,root`` je
  korenski imenik / doloenega operacijskega sistema. Napravite rezervno
  kopijo vaega starega jedra in prepiite datoteko bzImage, ki ste jo
  pravkar naredili na to mesto (napiete npr. ,,cp bzImage /vmlinuz``,
  e uporabljate ,,/vmlinuz``).  Potem e enkrat zaenete lilo - na
  novejih sistemih le napiete ,,lilo``, na starejih morate morda
  narediti /etc/lilo/install ali celo /etc/lilo/lilo -C
  /etc/lilo/config.

  e bi radi izvedeli ve o nastavitvi programa LILO ali e nimate
  programa LILO, dobite najnovejo razliico z vaega priljubljenega
  mesta za FTP in upotevate navodila.

  Za zaganjanje enega vaih starejih jeder s trdega diska (e en nain,
  kako si opomorete, e ste uniili novo jedro), prekopirajte vrstice
  pod (in vkljuno z) ,,image = xxx`` v LILO-vi nastavitveni datoteki na
  konec datoteke in spremenite ,,image = xxx`` v ,,image = yyy``, kjer
  je ,,yyy`` polna pot do datoteke, v katero ste shranili rezervno
  jedro. Potem spremenite ,,label = zzz`` v ,,label = linux-backup`` in
  e enkrat poenite lilo. V konfiguracijsko datoteko lahko dodate tudi
  vrstico z ,,delay=x``, kjer je ,,x`` asovni interval v desetinkah
  sekunde, v katerem LILO aka, da ga boste lahko prekinili (npr.  s
  tipko Shift) in vpisali oznako rezerve zaganjalne kopije (e se zgodi
  kaj neprijetnega).


  5.  Popravljanje jedra


  5.1.  Uporaba popravka


  Zaporedne nadgradnje jedra se distribuirajo kot popravki (patches). Na
  primer, e imate razliico 1.1.45 in opazite, da obstaja nekje
  datoteka ,,patch46.gz`` za njo, to pomeni, da lahko z uporabo programa
  patch nadgradite jedro na razliico 1.1.46. Morda boste najprej eleli
  napraviti rezervno kopijo drevesa izvorne kode (komprimiran arhiv
  naredite z ,,make clean`` in potem ,,cd /usr/src; tar zcvf old-
  tree.tar.gz linux``).

  Nadaljujmo zgornji primer in predpostavimo, da imate datoteko
  ,,patch46.gz`` v imeniku /usr/src. Naredite cd /usr/src in potem
  ,,zcat patch46.gz | patch -p0`` (ali ,,patch -p0 < patch46``, e
  popravek ni komprimiran).  Na zaslonu bodo mimo vas letele stvari, ki
  vam bodo sporoale, da patch poskua uporabiti doloene popravke in
  uspeh teh poskusov.  Navadno se vse odvija prehitro, da bi lahko
  brali. e niste prepriani, ali je lo vse po srei, boste morda
  uporabili zastavico -s za program patch, kar pove patchu naj sporoa
  le sporoila o napakah (v tem primeru ne boste imeli obutka ,,Hej,
  moj raunalnik za spremembo nekaj pone!``, a boste morda vseeno raje
  storili tako).  e vas zanima, kateri deli se niso popravili povsem
  gladko, napravite cd /usr/src/linux in poiite datoteke s podaljkom
  .rej.  Nekatere stareje razliice patcha pustijo podaljek #.  Za
  iskanje uporabite ,,find``:

        # find .
       -name '*.rej' -print

  To izpie vse datoteke s podaljkom .rej, ki prebivajo v trenutnem
  imeniku ali podimenikih, na standardni izhod.

  e je lo vse kot po maslu, napravite ,,make clean``, ,,config``, in
  ,,dep`` kot je opisano v razdelkih ``,,Kako zares sestaviti jedro``''
  in ``,,Prevajanje jedra``''.

  Ukaz patch ima e precej dodatnih izbir. Zgoraj smo e omenili patch
  -s, ki zadri izpis vseh sporoil, razen napak.  e imate izvorno kodo
  jedra v kaknem drugem imeniku kot /usr/src/linux, uporabite v tem
  imeniku patch -p1.  Ostale izbire najdete z man patch.


  5.2.  e se kje zalomi

  (Opomba: Ta razdelek se nanaa predvsem na zelo stara jedra.)

  Najpogosteji problem, ki se je vasih pojavljal, je bil, ko je
  popravek spremenil datoteko ,,config.in`` in ta ni bila isto prava,
  saj ste spremenili izbire, da bi opisali opremo svojega stroja.  To se
  je uredilo, a lahko v starejih izdajah e vedno sreate.  Popravite
  pa tako, da pogledate datoteko config.in.rej tako, da odgovarja
  originalnemu popravku.  Popravki bodo navadno oznaeni s simboloma
  ,,+`` in ,,-`` na zaetku vrstice.  Glejte okolike vrstice in se
  spomnite, ali so bile nastavljene kot ,,y`` ali kot ,,n``.  Zdaj
  popravite config.in in spremenite ,,y`` v ,,n`` in obratno, kjer je to
  primerno.  Naredite:

       # patch -p0 < config.in.rej

  in e patch sporoi, da je uspel, lahko nadaljujete z nastavitvami in
  prevajanjem.  Datoteka config.in.rej vam bo ostala, a jo lahko
  pobriete.

  e imate e vedno probleme, ste morda namestili popravek prek vrste.
  e patch pravi ,,previously applied patch detected: Assume -R?``,
  verjetno poskuate namestiti popravek, ki je stareji od trenutne
  razliice jedra; e odgovorite z ,,y``, bo patch poskual podgraditi
  vao izvorno kodo, in najverjetneje mu bo spodletelo. Potrebovali
  boste popolno isto novo drevo izvorne kode (kar je morda tako ali
  tako dobra ideja).

  Za razveljavitev popravkov uporabite ukaz ,,patch -R`` na originalnem
  popravku.

  Najbolja stvar, ki jo lahko naredite, ko ne morete uporabiti
  popravkov, je, da zanete znova s istim drevesom izvorne kode (na
  primer, z eno od datotek linux-x.y.z.tar.gz), in znova zanete.


  5.3.  Kako se znebite datotek .orig


  Po nekaj popravkih se bodo zaele kopiiti datoteke .orig.  Npr. neko
  drevo jedra 1.1.51, ki sem ga neko imel, je bilo zadnji oieno pri
  razliici 1.1.48.  Odstranitev datotek .orig je prihranila ve kot pol
  megabyta.

  Zadevo uredite z ukazom:

       # find .  -name '*.orig' -exec rm -f {} ';'

  Razliice programa patch, ki uporabljajo # za zavrnitvene datoteke,
  uporabljajo za podaljek tildo (,,.~``) namesto ,,.orig``.

  Obstajajo tudi bolji naini za odpravo datotek .orig, ki slonijo na
  GNU xargs:

       # find .  -name '*.orig' | xargs rm

  ali ,,precej varna, a malo bolj izrpna`` metoda:

       # find . -name '*.orig' -print0 | xargs --null rm --


  5.4.  Drugi popravki


  Razen Linusovih, obstajajo tudi drugi popravki (rekel jim bom
  ,,nestandardni``).  e jih uporabite, Linusovi popravki morda ne bodo
  delovali pravilno in jih boste morali obnoviti, urediti izvorno kodo
  popravka, namestiti novo drevo izvorne kode ali kombinacijo natetega.
  To lahko postane zelo frustrirajoe, zato, e ne elite spreminjati
  izvorne kode (z morda slabim izidom), napravite rezervne kopije
  nestandardnih popravkov, preden uporabite Linusove, ali le namestite
  novo drevo. Potem lahko pogledate, e nestandardni popravki delujejo.
  e ne, morate ostati pri starem jedru in se igrati s popravki ali
  izvorno kodo, da bi dosegli delovanje, ali akati (morda celo
  prosjaiti) za novo razliico popravkov.

  Kako pogosti so popravki, ki niso v standardnih distribucijah?
  Verjetno boste sliali o njih. Jaz uporabljam popravek noblink za moje
  navidezne zaslone, ker sovraim utripajoe kazalce (ta popravek je
  (ali je vsaj bil) redno osveen ob vsaki novi izdaji jedra). Z
  razvojem vse ve novejih gonilnikov naprav kot modulov pa uporaba
  ,,nestandardnih`` popravkov znatno upada.


  6.  Dodatni paketi


  Vae Linuxovo jedro ima veliko odlik, ki niso pojasnjene v sami
  izvorni kodi jedra; te posebnosti se navadno doseejo z uporabo
  zunanjih paketov.  Tukaj natevam nekaj najpogostejih.


  6.1.  kbd


  Linuxov zaslon (console) ima najbr ve zmonosti, kot si jih zaslui
  (op.: prevajalec se ne strinja).  Med temi so monost preklaplanja
  znakov, preslikave tipkovnice, preklop video nainov (v novejih
  jedrih) itd.  Paket kbd vsebuje programe, ki uporabniku omogoajo vse
  to, in e veliko znakov in nartov tipkovnic za skoraj vsako
  tipkovnico.  Paket dobite na istih mestih kot izvorno kodo jedra.


  6.2.  util-linux


  Rik Faith <faith@cs.unc.edu> je sestavil veliko zbirko uporabnih
  programov za Linux, ki se imenujejo util-linux.  Trenutno jih vzdruje
  Andries Brouwer <util-linux@math.uio.no>.  Po anonimnem FTP-ju dobite
  na  <ftp://metalab.unc.edu/pub/Linux/system/misc/> programe kot so
  setterm, rdev, in ctrlaltdel, ki se nanaajo na jedro.  Kot pravi Rik,
  niesar ne intalirajte, ne da bi prej premislili, ni vam treba
  intalirati vsega in lahko imate resne probleme, e bi radi
  intalirali vse.


  6.3.  hdparm


  Kot veliko paketov je bil tudi ta neko popravek za jedro in podporni
  programi.  Popravki so se prebili v uradno jedro, programi za
  optimizacijo in igranje z vaim trdim diskom pa se razirjajo posebej.


  6.4.  gpm


  gpm pomeni ,,splono uporabna mika`` (ang. general purpose mouse).  S
  tem programom lahko besedilo izrezujete in prilepljate med posameznimi
  navideznimi zasloni in ponete druge stvari s celo paleto razlinih
  mik.


  7.  Nekatere pasti


  7.1.  make clean


  e po rutinski nadgradnji jedra vae jedro pone zares udne rei, ste
  morda pozabili napisati make clean pred prevajanjem novega jedra.
  Simptomi so lahko karkoli, od zmrznjenega sistema, udnih V/I
  problemov, do slabega (poasnega) delovanja. Prepriajte se tudi, da
  boste ukazali make dep.


  7.2.  Velika ali poasna jedra


  e vae jedro poira velike koliine pomnilnika, je preveliko, in/ali
  le traja neskonno dolgo, da se prevede, eprav imate nov procesor
  Quadbazillium-III/440, ste najverjetneje vkljuili podporo veliko
  nepotrebnih zadev (gonilnikov naprav, datotenih sistemov, itd.).  e
  naprave ne uporabljate, je ne podprite v jedru, saj to zavzema
  pomnilnik.  Najbolj oiten simptom prenapihnjenega jedra je ekstremno
  izmenjavanje pomnilnika z diskom sem ter tja; e va disk nenehno
  oglaa in ni eden od tistih starih Fujitsujevih Eagles, katerih zvok
  lahko primerjamo s pristajanjem reaktivnih letal, preglejte nastavitve
  vaega jedra.

  Koliko pomnilnika zaseda jedro lahko izveste z odtevanjem vrednosti
  ,,total mem`` v izpisu /proc/meminfo ali izhodom ukaza ,,free``, od
  koliine vsega pomnilnika.


  7.3.  Vzporedna vrata ne delujejo/tiskalnik ne deluje


  Nastavitvene izbire za PC-je so: najprej v kategoriji Splonih
  nastavitev (angl. General Setup) vkljuite podporo zaporednih vrat
  (angl. Parallel port support) in strojno opremo osebnih raunalnikov
  (angl. PC-style hardware).  Nato v Znakovnih napravah (angl.
  Character devices) podprite tiskalnik na vzporednih vratih (angl.
  Parallel printer support).

  Potem so tu e imena.  Linux 2.2 poimenuje tiskalnike naprave drugae
  od prejnjih izdaj.  Posledica tega je, da napravi lp1 v vaem starem
  jedru v novem jedru verjetno ustreza naprava lp0.  Uporabite dmesg ali
  poglejte v dnevnik v imeniku /var/log ter ugotovite novo ime.


  7.4.  Jedro se ne prevede


  e se ne prevede, je to verjetno zato, ker je popravek spodletel, ali
  je vaa izvorna koda nekako pokvarjena.  Morda nimate prave razliice
  prevajalnika gcc, ali je tudi z njim kaj narobe (na primer, vkljune
  datoteke so lahko napane).  Prepriajte se, da so simboline
  povezave, ki jih Linus priporoa v datoteki README pravilno narejene.
  V splonem, e se standardna jedra ne prevajajo, je nekaj resno narobe
  s sistemom in ponovna intalacija nekaterih orodij je neizogibna.

  V nekaterih primerih lahko gcc odpove zaradi strojnih problemov.
  Sporoila o taknih napakah so nekaj kot ,,xxx exited with signal 15``
  in navadno izgledajo zelo skrivnostna.  Tega sploh ne bi omenil, a se
  mi je neko zgodilo - imel sem nekaj slabega predpomnilnika in
  prevajalnik se je pritoeval povsem nakljuno.  e imate teave,
  poskusite najprej ponovno namestiti gcc. Sumniavi postanite samo, e
  se vae jedro lepo prevede z izkljuenim zunanjim predpomnilnikom,
  zmanjano koliino RAM-a, ipd.

  Ljudje so navadno vznemirjeni, ko izvejo, da bi lahko imeli tudi
  teave s strojno opremo.  Hja, tega si ne izmiljujem. Obstajajo tudi
  pogosto zastavljena vpraanja o tej temi - najdete jih na
  <http://www.bitwizard.nl/sig11/>.


  7.5.  Novo jedro se noe zagnati


  Niste pognali programa LILO, ali pa ga niste pravilno nastavili.
  Neko me je zafrkavala vrstica v LILO-vi konfiguracijski datoteki, ki
  je bila ,,boot = /dev/hda1`` namesto ,,boot = /dev/hda``.  (To je
  lahko sprva zelo motee, a ko imate enkrat delujoo nastavitveno
  datoteko, vam je ni treba spreminjati.)


  7.6.  Pozabili ste pognati LILO, ali pa se sistem sploh ne zaene


  Ups!  Najbolje, kar lahko storite ta hip, je, da zaenete operacijski
  sistem z diskete ali CD-ROM-a in potem pripravite e eno zaganjalno
  disketo (kot bi jo naredil ukaz ,,make zdisk``).  Vedeti morate, kje
  je va korenski (/) datoteni sistem in katerega tipa je (npr. second
  extended, minix).  V spodnjem primeru morate vedeti tudi na kaknem
  datotenem sistemu lei vae drevo izvorne kode /usr/src/linux, njegov
  tip, in kje je navadno nameen (z mount).

  V naslednjem primeru je / enak /dev/hda1, in datoteni sistem, ki
  vsebuje /usr/src/linux na /dev/hda3, navadno nameen na /usr.  Oba
  sta datotena sistema tipa ext2 (second extended).  Delujoa slika
  jedra v imeniku /usr/src/linux/arch/i386/boot se imenuje bzImage.

  Zamisel je takna, da uporabimo delujoe jedro zImage na novi disketi.
  e ena monost, ki lahko deluje bolje, ali pa tudi ne (odvisno od
  konkretne metode, s katero ste zavozili svoj sistem), je opisana po
  tem primeru.

  Najprej zaenite sistem s kombinacije disket boot in root ali z
  reevalne diskete in namestite delujoo sliko jedra:

       # mkdir /mnt
       # mount -t ext2 /dev/hda3 /mnt

  e vam mkdir pravi, da imenik e obstaja, ga ignorirajte. Zdaj pojdite
  z ukazom cd na imenik, v katerem je delujoe jedro. Pozorni bodite na
  to, da je

  /mnt + /usr/src/linux/arch/i386/boot - /usr = /mnt/src/linux/arch/i386/boot

  V disketni pogon ,,A:`` vloite formatirano disketo (ne vaih diskov
  boot ali root!), prepiite sliko jedra na disketo in jo nastavite za
  svoj korenski datoteni sistem.

       # cd /mnt/src/linux/arch/i386/boot
       # dd if=bzImage of=/dev/fd0
       # rdev /dev/fd0 /dev/hda1

  Naredite cd na / in odmestite obiajni datoteni sistem /usr:

       # cd /
       # umount /mnt

  Zdaj lahko e enkrat zaenete svoj sistem z nove diskete.  Ne pozabite
  tokrat po zagonu pognati lilo (ali karkoli je bilo e narobe)!

  Kot smo omenili zgoraj, obstaja e ena obiajna pot. e imate delujoo
  sliko jedra v / (/vmlinuz, na primer), jo lahko uporabite za zagonsko
  disketo.  e veljajo vsi zgoraj nateti pogoji in je slika jedra
  /vmlinuz, naredite le te spremembe v zgoraj opisanem primeru:
  spremenite /dev/hda3 v /dev/hda1 (datoteni sistem /), /mnt/src/linux
  v /mnt, in if=bzImage v if=vmlinuz. Opombo o tem, kako dobimo
  /mnt/src/linux lahko spregledate.

  Uporaba programa LILO na velikih diskih (vejih od 1024 cilindrov)
  lahko povzroa probleme. Preberite LILO mini-HOWTO ali LILO-vo
  dokumentacijo, e potrebujete pomo pri tem.


  7.7.  Izpie ,, warning: bdflush not running ``


  To je lahko resen problem. Od jedra izdaje po 1.0 (okoli 20. aprila
  1994) se je program ,,update``, ki periodino izplakne vmesni
  pomnilnik datotenega sistema, posodabljal in nadomestil. Dobite
  izvorno kodo ,,bdflush`` (najdete jo tam, kjer ste nali jedro) in
  namestite ta program (verjetno boste medtem pognati va sistem pod
  starim jedrom). Ta program se sam namesti kot ,,update`` in po
  ponovnem zagonu se novo jedro ne bo ve pritoevalo.


  7.8.  Mojega CD-ROM-a IDE/ATAPI ne prepriam, da bi deloval


  udno, a veliko ljudi ne more pripraviti svoje pogone ATAPI k
  delovanju, verjetno zato, ker gre lahko veliko stvari narobe.

  e je va CD-ROM edina naprava na konkretnem vmesniku IDE, morate
  nastaviti skakae kot ,,master`` ali ,,single``. To je menda najbolj
  pogosta napaka.

  Creative Labs (na primer) je postavil vmesnik IDE na njihove zvone
  kartice.  A to vodi k zanimivem problemu, da imajo nekateri ljudje en
  sam vmesnik, veliko jih ima dva vmesnika IDE na njihovih matinih
  ploah (navadno na IRQ15), torej je splona praksa oznaiti vmesnik
  SoundBlaster-ja kot tretji IDE port (IRQ11, mi pravijo).

  To povzroa probleme z Linuxom, saj razliice 1.2.x ne podpirajo
  tretjega vmesnika IDE (obstaja podpora v serijah 1.3.x, a to je
  razvojna razliica, se e spomnite, in ne izvaja avtomatskega
  iskanja).  Temu se lahko izognemo na ve nainov.

  e e imate druga vrata IDE, jih morda ne uporabljate ali e nimajo na
  sebi dveh naprav.  Vzemite pogon ATAPI z zvone kartice in ga poveite
  na drugi vmesnik.  Potem lahko onemogoite vmesnik zvone kartice, kar
  tako ali tako privaruje IRQ.

  e nimate drugega vmesnika, nastavite skaka na vmesniku zvone
  kartice (ne na zvonem delu zvone kartice) kot IRQ15, drugi vmesnik.
  Moralo bi delovati.


  7.9.  Izpisuje udne rei o zastarelih zahtevah za usmerjanje (obso
  lete routing requests)


  Poiite novo razliico programa route in vseh drugih usmerjevalnih
  programov.  Datoteka /usr/include/linux/route.h (ki je pravzaprav v
  imeniku /usr/src/linux) se je spremenila.


  7.10.  Poarni zid ne deluje v 1.2.0


  Nadgradite vsaj na razliico 1.2.1.


  7.11.  ,, Not a compressed kernel Image file `` (datoteka s sliko
  jedra ni komprimirana)


  Ne uporabljajte datoteke vmlinux, ki je narejena v imeniku
  /usr/src/linux, kot vao zaganjalno sliko; [..]/arch/i386/boot/bzImage
  je prava datoteka.


  7.12.  Teave z zaslonskim terminalom po nadgradnji na 1.3.x


  Spremenite besedo dumb v linux v opisu zaslonskega terminala v
  datoteki /etc/termcap. Morda boste morali tudi narediti nov zapis.


  7.13.  Po nadgradnji jedra ne morem prevajati zadev


  Linuxova izvorna koda jedra vsebuje veliko vkljunih datotek
  (datoteke, ki se konujejo na .h), na katere se sklicujejo standardne
  datoteke v imeniku /usr/include. Na njih se navadno sklicujemo takole
  (tukaj je xyzzy.h nekaj v imeniku /usr/include/linux):

       #include <linux/xyzzy.h>

  Navadno je v imeniku /usr/include povezava, imenovana linux, na imenik
  include/linux vae izvorne kode jedra (/usr/src/linux/include/linux v
  tipinem sistemu). e te povezave ni tam, ali kae na napaen kraj, se
  veina stvari sploh ne bo prevedla. e ste se odloili, da porablja
  izvorna koda jedra preve prostora na disku in ste jo pobrisali, je
  oitno to problem. Lahko pa, da je kaj narobe z dovoljenji datotek; e
  ima va root nastavitev umask, ki ne dovoljuje drugim uporabnikom, da
  bi kot privzeto lahko gledali njegove datoteke, in ste izluili
  izvorno kodo jedra brez izbire p (ohrani datotene naine), ti
  uporabniki ne bodo mogli uporabljati prevajalnika za C. eprav lahko
  uporabite ukaz chmod in to popravite, je verjetno laje e enkrat
  izvlei vkljune datoteke. To lahko storite enako kot ste storili na
  zaetku z vso izvorno kodo, le z dodatnim argumentom:

       # tar zxvpf linux.x.y.z.tar.gz linux/include

  Opomba: ,,make config`` bo naredil povezavo /usr/src/linux, e je e
  nimate.


  7.14.  Poveanje omejitev


  Naslednji primer ukazov je lahko koristen za tiste, ki se spraujete,
  kako poveati nekatere mehke omejitve, ki jih privzame jedro:

       # echo 4096 > /proc/sys/kernel/file-max
       # echo 12288 > /proc/sys/kernel/inode-max
       # echo 300 400 500 > /proc/sys/vm/freepages


  8.  Opomba o nadgradnji na razliice 2.0.x, 2.2.x


  Jedra razliic 2.0.x in 2.2.x so uvedla precej sprememb pri njihovi
  namestitvi.  Berite datoteko Documentation/Changes v drevesu izvorne
  kode jedra za znanje, ki ga morate imeti, ko nadgrajujete na ta jedra.
  Verjetno boste morali nadgraditi veliko kljunih paketov, kot so gcc,
  libc in SysVInit, in spremeniti veliko sistemskih datotek, zato bodite
  na to pripravljeni.  A brez panike, prosim.


  9.  Moduli


  Nalagalni moduli lahko prihranijo pomnilnik in poenostavijo
  konfiguracijo.  Domet modulov je razirjen na datotene sisteme,
  gonilnike omrenih kratic, tranih enot, tiskalnikov in e ve.


  9.1.  Namestitev modulskih pripomokov


  Modulski pripomoki so na voljo, kadarkoli dobite izvorno kodo vaega
  jedra kot modutils-x.y.z.tar.gz; izberite najvijo tevilko razliice
  x.y.z, ki je enaka ali manja vaemu jedru.  Odpakirajte jih z ,, tar
  zxvf modutils-x.y.z.tar.gz``, pojdite s cd na imenik, ki ga ustvari
  tar (modutils-x.y.z), preglejte datoteko README, in upotevajte
  navodila (kar je navadno nekaj preprostega, kot, denimo, make
  install).  Zdaj morate imeti programe insmod, rmmod, ksyms, lsmod,
  genksyms, modprobe, in depmod v imeniku /sbin. e elite, lahko
  preskusite pripomoke s preizkuevalnim gonilnikom ,,hw`` v programu
  insmod; preberite datoteko INSTALL v tem podimeniku za podrobnosti.

  insmod vkljui modul v tekoe jedro. Moduli imajo navadno podaljek
  .o; preizkuevalni gonilnik, omenjen zgoraj, se imenuje drv_hello.o,
  torej morate napisati ,,insmod drv_hello.o``, e ga elite vkljuiti.
  Module, ki jih jedro trenutno uporablja, lahko izpiete z lsmod. Izhod
  izgleda takole:

       blah:# lsmod
       Module:        #pages:  Used by:
       drv_hello          1

  ,,drv_hello`` je ime modula, uporablja eno stran (4 KB) pomnilnika in
  noben drug jedrni modul trenutno ni odvisen od njega. Ta modul
  odstranite z ukazom ,,rmmod drv_hello``. Paziti morate, ker hoe rmmod
  ime modula, ne ime datoteke; dobite ga z izpisom lsmod. Nameni drugih
  modulskih pripomokov so nateti v njihovih referennih prironikih
  (npr. man ksyms).


  9.2.  Moduli, distribuirani poleg jedra


  Od razliice 2.0.30 je veina vsega dostopna kot nalagalni modul.  e
  jih elite uporabiti, morate nastaviti podatke o njih v obiajnem
  jedru; to se pravi, ne reete ,,y`` med ,,make config``, temve ,,m``.
  Prevedite novo jedro in z njim zaenite sistem.  Potem naredite ,,cd
  /usr/src/linux`` in ukaite ,,make modules``.  To prevede vse module,
  ki jih niste e navedli v konfiguraciji jedra in v imenik
  /usr/src/linux/modules namesti povezave na njih.  Uporabite jih lahko
  v tem imeniku ali pa izvedete ,,make modules_install`` in jih s tem
  namestite v imenik /lib/modules/x.y.z, kjer je x.y.z tevilka izdaje
  jedra.

  To je lahko e posebno uporabno z datotenimi sistemi. Morda ne
  uporabljate pogosto datotenih sistemov minix in/ali msdos. Na primer,
  kadar dobim dosovsko (brrr) disketo, naredim insmod
  /usr/src/linux/modules/msdos.o, in potem rmmod msdos, ko opravim z
  njo. Ta postopek privaruje okoli 50 KB RAM-a v jedru med normalnim
  delovanjem. Pri datotenem sistemu minix ne bo odve majhna pripomba:
  vedno ga podprite neposredno v jedru, da boste lahko uporabljali
  ,,reevalne`` diskete.


  10.  Nasveti in triki


  10.1.  Preusmeritev izhoda ukazov make  in patch


  e elite videti, kaj je naredil ukaz ,,make`` ali ,,patch``, lahko
  preusmerite standardni izhod programa v datoteko.  Najprej ugotovite
  katero ukazno lupino uporabljate: ,,grep root /etc/passwd`` in glejte
  nekaj podobnega temu: ,,/bin/csh``.

  e uporabljate sh ali bash, boste takole preusmerili izhod ukaza
  (ukaz) v datoteko (izhodna_datoteka):

       # (ukaz) 2>&1 | tee (izhodna_datoteka)

  Za csh ali tcsh uporabite:

       # (ukaz) |& tee (izhodna_datoteka)

  Za lupino rc (verjetno je ne uporabljate) je ustrezen ukaz

       # (ukaz) >[2=1] | tee (izhodna_datoteka)


  10.2.  Pogojna intalacija jedra

  Razen z uporabo disket je e ve metod preizkuanja novega jedra, ne
  da bi se dotaknili starega. Za razliko od mnogih Unixov je LILO
  sposoben zagnati jedro s kateregakoli mesta na disku (e imate disk
  veji od 500 MB, preberite LILO-vo dokumentacijo, kako prepreite
  teave). e torej na konec konfiguracijske datoteke dodate nekaj
  podobnega:

       image = /usr/src/linux/arch/i386/boot/bzImage
           label = new_kernel

  lahko izberete zagon novega jedra ne da bi se dotaknili vaega starega
  jedra /vmlinuz (seveda morate e pognati lilo). Najpreprosteji nain
  za zagon novega jedra je, da pritisnete ob zagonu tipko Shift (ko se
  na zaslonu izpie LILO in ni drugega), kar vam da pozivnik. Zdaj
  lahko vnesete ,,new_kernel`` in zagnalo se bo novo jedro.

  e elite obdrati ve dreves izvorne kode razlinih jeder (to lahko
  sicer zaseda veliko diskovnega prostora), je najpogosteji nain ta,
  da jih preimenujete v /usr/src/linux-x.y.z, kjer je x.y.z razliica
  jedra. Potem lahko ,,izberete`` drevo izvorne kode s simbolino
  povezavo, npr. ,,ln -sf linux-1.2.2 /usr/src/linux`` naredi drevo
  1.2.2 za trenutno aktualno drevo. Preden naredite to simbolino
  povezavo, se prepriajte, da zadnji argument programu ln ni pravi
  imenik (stare simboline povezave so v redu); rezultat ne bo tak, kot
  bi eleli.


  10.3.  Nadgradnje jedra


  Russell Nelson <nelson@crynwr.com> zbira spremembe v novih izdajah
  jedra.  Te so kratke, lahko jih pogledate, preden nadgradite svoje
  jedro.  Najdete jih na  <ftp://ftp.emlist.com/pub/kchanges/> ali prek
  svetovnega spleta na naslovu url
  url="http://www.crynwr.com/kchanges">.


  11.  Ostali HOWTO-ji, ki bi lahko bili uporabni


  *  Sound-HOWTO: zvone kartice in pripomoki,

  *  SCSI-HOWTO: vse o krmilnikih in napravah SCSI,

  *  NET-2-HOWTO: omreenost,

  *  PPP-HOWTO: omreenost s PPPjem, posebej,

  *  PCMCIA-HOWTO: o gonilnikih za va notesnik,

  *  ELF-HOWTO: ELF: kaj je to, prenos,

  *  Hardware-HOWTO: pregled podprte strojne opreme,

  *  Module mini-HOWTO: ve o modulih jedra,

  *  Kerneld mini-HOWTO: o demonu kerneld,

  *  BogoMips mini-HOWTO: e se sluajno spraujete.


  12.  Razno


  12.1.  Avtor


  Avtor in vzdrevalec prironika Linux Kernel-HOWTO je Brian Ward
  <bri@cs.uchicago.edu>.  Prosim, poljite mi vse pripombe, dodatke,
  popravke (predvsem popravki so zame najbolj pomembni).

  Mojo domao stran najdete na enem od teh dveh URL-jev:

  *   <http://www.math.psu.edu/bri/>

  *   <http://blah.math.tu-graz.ac.at/~bri/>

  eprav poskuam biti po poti pozoren kot se le da, se, prosim,
  zavedajte, da dobim vsak dan veliko pisem, zato lahko traja dolgo,
  preden vam odgovorim.  Posebno, kadar me po poti kaj spraujete,
  prosim, poskusite biti e posebej jasni in podrobni v svojem
  sporoilu.  e piete o nedelujoi strojni opremi (ali kaj takega),
  moram vedeti, kakna je vaa celotna strojna konfiguracija.  e
  poroate o napaki, ne recite le ,,Poskusil sem tole, pa mi je javil
  napako``; vedeti moram tudi, katera napaka je to bila. elim tudi
  vedeti razliico jedra, prevajalnika gcc in knjinice libc, ki jih
  uporabljate.  e le poveste, da uporabljate to-in-to distribucijo, mi
  s tem ne boste povedali kaj dosti.  Ne moti me, e vpraujete
  preprosta vpraanja; vedite, e nikoli ne vpraate, morda ne boste
  nikoli dobili odgovora!  elim se zahvaliti vsem, ki so mi posredovali
  povratne informacije.

  e vae vpraanje ni povezano z jedrom ali je v jeziku, ki ga ne
  razumem, morda ne bom odgovoril.

  e ste mi pisali in vam nisem odgovoril v razumnem asovnem roku
  (trije tedni ali ve), sem morda pomotoma pobrisal vae sporoilo ali
  kaj takega (oprostite).  Prosim, poskusite e enkrat.

  Dobivam veliko pote o stvareh, ki imajo pravzaprav opraviti s strojno
  opremo. To je v redu, a, prosim, zavedajte se, da nisem seznanjen z
  vso obstojeo strojno opremo tega sveta.  Osebno uporabljam procesorje
  AMD, krmilnike SCSI proizvajalcev Adaptec in Sybios, ter diske SCSI
  proizvajalca IBM.

  Razliica -0.1 anglekega izvirnika je bila napisana 3. oktobra 1994.
  Izvirnik je dostopen kot SGML, PostScript, TeX, roff, in kot navaden
  tekst.

  Avtor slovenskega prevoda z dne 24. julija 1999 je Roman Maurer
  <roman.maurer@hermes.si>.  Prosim, poljite mi pripombe na prevod.
  Slovenski prevod je dostopen kot SGML DTD LinuxDoc, HTML, DVI, PDF,
  PostScript in navaden tekst na streniku slovenskega Drutva
  uporabnikov Linuxa v imeniku <ftp://ftp.lugos.si/pub/lugos/doc/HOWTO-
  sl/> ali na spletnem naslovu <http://www.lugos.si/delo/slo/HOWTO-
  sl/Kernel-HOWTO-sl.html>.


  12.2.  Narediti


  Razdelek ``,,Nasveti in triki``'' je bolj majhen.  Upam, da ga bom
  raziril s predlogi drugih.

  Tako je tudi z razdelkom ``,,Dodatni paketi``''.

  Potrebujemo ve podatkov o razhroevanju/odpravljanju posledic
  sesutja sistema.


  12.3.  Prispevki


  Vkljuen je majhen del Linusove datoteke README (izbire za hekiranje
  jedra). (Hvala, Linus!)

  *  uc@brian.lunetix.de (Ulrich Callmeier): patch -s in xargs,

  *  quinlan@yggdrasil.com (Daniel Quinlan): popravki in dodatki ve
     razdelkov,

  *  nat@nataa.fr.eu.org (Nat Makarevitch): mrproper, tar -p, ve drugih
     rei,

  *  boldt@math.ucsb.edu (Axel Boldt): po omreju je zbral opise
     konfiguracijskih izbir jedra; potem mi je poslal seznam,

  *  lembark@wrkhors.psyber.com (Steve Lembark): predlog razlinega
     zaganjanja,
  *  kbriggs@earwax.pd.uwa.edu.au (Keith Briggs): nekateri popravki in
     predlogi,

  *  rmcguire@freenet.columbus.oh.us (Ryan McGuire): dodatki ciljev
     make,

  *  dumas@excalibur.ibp.fr (Eric Dumas): francoski prevod,

  *  simazaki@ab11.yamanashi.ac.jp (Yasutada Shimazaki): japonski
     prevod,

  *  jjamor@lml.ls.fi.upm.es (Juan Jose Amor Iglesias): panski prevod,

  *  mva@sbbs.se (Martin Wahlen): vedski prevod,

  *  jzp1218@stud.u-szeged.hu (Zoltan Vamosi): madarski prevod,

  *  bart@mat.uni.torun.pl (Bartosz Maruszewski): poljski prevod,

  *  roman.maurer@hermes.si (Roman Maurer): slovenski prevod,

  *  donahue@tiber.nist.gov (Michael J. Donahue): tipkarske napake,
     zmagovalec ,,tekmovanja narezanega kruha``,

  *  rms@gnu.ai.mit.edu (Richard Stallman): zamisel in distribucija
     ,,proste`` dokumentacije,

  *  dak@Pool.Informatik.RWTH-Aachen.DE (David Kastrup): re o NFS,

  *  esr@snark.thyrsus.com (Eric Raymond): razlini delki.

  Pomagali so mi tudi ljudje, ki so mi poslali poto z vpraanji in
  problemi.


  12.4.  Pravice razirjanja, licenca, in te stvari


  Copyright (C) Brian Ward, 1994-1999.

  Dovoljeno je izdelovati in razirjati kopije tega prironika, e
  ostane opomba o pravicah razirjanja in tale opomba o dovoljenju
  nespremenjena v vseh kopijah.

  Dovoljeno je kopirati in razirjati spremenjene razliice tega
  prironika pod pogoji za dobesedno kopiranje, e se izpeljano delo
  razirja z enako opombo glede dovoljenj.  Prevodi padejo v kategorijo
  ,,spremenjenih razliic``.

  Garancija: Ni je.

  Priporoila: Komercialno razirjanje je dovoljeno in celo zaeleno;
  vendar se mono priporoa, da distributer stopi v stik z avtorjem e
  pred distribucijo, da bi obdrali osveeno stanje stvari (lahko mi
  poljete tudi kopijo stvari, ki jo izdelujete, e ste e pri tem).
  Avtor svetuje tudi prevajalcem, da stopijo v stik z njim, preden
  zanejo prevajati.  Natisnjene razliice so videti bolje.  Lahko jih
  recikliramo.
