  Linuxovo jedro, HOWTO
  Brian Ward, bri@blah.math.tu-graz.ac.at
  v0.80, 26. maj 1997

  To je slovenski prevod datoteke Kernel-HOWTO, podrobnega vodnika nas
  tavitev Linuxovega jedra, prevajanja, nadgradnje in odpravljanja prob
  lemov 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 elel nadgraditi svoje jedro?
     2.3 Katero strojno opremo podpirajo nova jedra?
     2.4 Katero verzijo 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 (emulacija matematinih operacij
              v jedru)
        3.3.2 Normal (MFM/RLL) disk and IDE disk/cdrom support
              (podpora normalnim diskom (MFM/RLL) in diskom/CD-ROM-om
              tipa IDE)
        3.3.3 Networking support (omrena podpora)
        3.3.4 Limit memory to low 16MB  (omejitev pomnilnika na spodnjih 16 MB)
        3.3.5 System V IPC (medprocesna komunikacija Systema V)
        3.3.6 Processor type (386, 486, Pentium, PPro) (tip procesorja)
        3.3.7 SCSI support (podpora SCSI)
        3.3.8 Network device support (podpora omrenim napravam)
        3.3.9 Filesystems (datoteni sistemi)
           3.3.9.1 Vendar jaz ne vem, katere datotene sisteme potrebujem!
        3.3.10 Character devices (znakovne naprave)
        3.3.11 Sound card (zvona kartica)
        3.3.12 Druge nastavitvene monosti
        3.3.13 Kernel hacking (hekanje jedra)
     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 nekje 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 Jedro se ne prevede
     7.4 Novo jedro se noe zagnati
     7.5 Pozabili ste pognati LILO, ali pa se sistem sploh ne zaene
     7.6 Izpie ,,warning: bdflush not running``
     7.7 Izpisuje stvari o nedefiniranih simbolih in se noe prevesti
     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 verzijo 2.0.x

  9. Moduli

     9.1 Namestitev modulskih pripomokov
     9.2 Moduli, distribuirani poleg jedra

  10. Druge nastavitvene izbire

     10.1 Splone nastavitve
     10.2 Omrene izbire

  11. Nasveti in triki

     11.1 Preusmeritev izhoda ukazov make in patch
     11.2 Pogojna intalacija jedra
     11.3 Nadgradnje jedra

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

  13. Razno

     13.1 Avtor
     13.2 Narediti
     13.3 Prispevki
     13.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 1.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 razliica jedra je bila v asu pisanja tega spisa 2.0.30, torej
  se sklicevanja in primeri nanaajo na to izdajo. eprav poskuam
  narediti ta spis karseda neodvisen od verzije, se jedro nenehno
  razvija, torej bo noveja verzija neizogibno vsebovala nekaj sprememb.
  To vam ne bi smelo delati vejih teav, lahko pa vas malce zmede.

  Obstajata dve razliico izvorne kode Linuxovega jedra, stabilna
  (,,production``) in razvojna (,,development``).  Stabilne izdaje so se
  zaele z 1.0.x in so trenutno sodo otevilene izdaje: 1.0.x je bila
  stabilna, 1.2.x prav tako, in tudi 2.0.x.  Ta jedra se smatrajo za
  najbolj stabilne in razhroene verzije v asu njihove izdaje.
  Razvojna jedra (1.1.x, 1.3.x itd.) so jedra, namenjena preizkuanju,
  za ljudi, ki bi radi preizkusili nova in morda zelo hroata jedra.
  Opozorjeni ste bili!


  1.2.  O stilu


  Besedilo, ki izgleda 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 verzijo 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?

  Unixovo jedro 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 procesorjevih ciklov. 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 elel 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 verzije, so
  bolj stabilna od starejih verzij in odpravijo neumne hroe v
  starejih verzijah. 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 verzijo prevajalnika gcc in knjinice libc potrebujem?

  Linus priporoa verzijo gcc v datoteki README, priloeni izvorni kodi
  Linuxa.  e nimate te verzije, vam dokumentacija poleg priporoene
  verzije 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 verzije 2.0.10 je velika priblino 6 MB. Veina
  raunalnikov jo obdri tudi po odpakiranju. Nekomprimirana zasede do
  24 MB. A to e ni vse -- za prevajanje potrebujete e ve prostora. To
  je odvisno od tega, koliko stvari vkonfigurirate v svoje jedro. Na
  primer, na doloenem stroju, kjer imam omreno podporo, gonilnik za
  mreno kartico 3Com 3C509 in tri datotene sisteme, mi vse to zaseda
  blizu 30 MB. e temu pritejemo e komprimirano izvorno kodo Linuxa,
  potrebujete za to konkretno konfiguracijo priblino 36 MB. Na drugem
  sistemu, brez podpore omrenih naprav (a e vedno z omreno podporo)
  in s podporo zvone kartice, porabi to e ve diska.  Noveja jedra
  imajo poleg tega bolj razvejena drevesa izvorne kode kot stareja,
  zato se v splonem, e imate veliko strojnih naprav, prepriajte, da
  imate dovolj velik disk za vso to zmenjavo (in pri dananjih cenah si
  ne morem kaj, da vam ne bi priporoil nakupa drugega diska kot odgovor
  na vae teave s prostorom).


  2.7.  Kako dolgo traja?

  Za veino ljudi je odgovor ,,zmerno dolgo``. Hitrost vaega sistema in
  koliina pomnilnika vsekakor doloata as prevajanja, toda majhen
  asovni dele ima kaj opraviti tudi z nastavitvami stvari, ki bi jih
  radi podprli v jedru.  Na raunalniku s procesorjem 486DX4/100 s 16 MB
  RAM-a, prevajanje jedra v1.2 s petimi datotenimi sistemi, omreno
  podporo in gonilniki za zvono kartico, traja okoli 20 minut. Na
  386DX/40 (8 MB RAM) s podobno konfiguracijo, traja prevajanje skoraj
  poldrugo uro. V splonem je dobro priporoilo, da si skuhate kakno
  kavico, gledate TV, pletete ali karkoli delate za kratkoasenje, ko
  va stroj prevaja jedro. Jedro vam lahko prevede tudi kdo drug s
  hitrejim strojem, e imate res poasen raunalnik.


  3.  Kako zares sestaviti jedro


  3.1.  Nabava izvorne kode

  Izvorno kodo lahko dobite po anonimnem ftp-ju z naslova
  ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus, zrcalnega strenika, ali z
  drugih strenikov. Navadno je oznaena kot linux-x.y.z.tar.gz, kjer je
  x.y.z  tevilka verzije.  Noveje (bolje?) verzije in popravki so
  navadno v podimenikih kot npr. ,,v1.1`` in ,,v1.2``.  Verzija z
  najvejim tevilom je zadnja verzija in je navadno ,,testna izdaja``,
  kar pomeni, da ostanite raje pri glavni izdaji, e se poutiteob beta
  in alfa izdajah jedra poutite nelagodno.
  Mono vam priporoam, da uporabite zrcalni strenik namesto
  ftp.funet.fi.  Tukaj je kratek seznam zrcal in drugih strenikov:

  *  Slovenija, Ljubljana:
     <ftp://ftp.lugos.si/pub/lugos/arhiv/kernels/>

  *  Slovenija, Murska Sobota:
     <ftp://mercur.s-gms.ms.edus.si/pub/UNIX/linux/Kernel/src/>

  *  Slovenija, Portoro:
     <ftp://ftp.fpp.uni-lj.si/pub/linux/slackware-3.5/source/kernel-source/>

  *  Avstrija:  <ftp://ftp.univie.ac.at/systems/linux/sunsite/kernel/>

  *  Nemija:
     <ftp://ftp.Germany.EU.net/pub/os/Linux/Local.EUnet/Kernel/Linus/>

  *  Nemija:  <ftp://sunsite.informatik.rwth-
     aachen.de/pub/Linux/PEOPLE/Linus>

  *  Francija:  <ftp://ftp.ibp.fr/pub/linux/sources/system/patches/>

  *  Zdrueno kraljestvo:
     <ftp://sunsite.doc.ic.ac.uk/pub/unix/Linux/sunsite.unc-
     mirror/kernel/>

  *  ZDA:  <ftp://sunsite.unc.edu/pub/Linux/kernel/>

  *  ZDA:  <ftp://tsx-11.mit.edu/pub/linux/sources/system/>

  *  Avstralija:  <ftp://sunsite.anu.edu.au/pub/linux/kernel/>

  V splonem najprej poglejte na zrcalo mesta sunsite.unc.edu.  Datoteka
  /pub/Linux/MIRRORS vsebuje seznam vseh znanih zrcal. e nimate dostopa
  do ftp-ja, je v noviarski skupini news:comp.os.linux.announce vsak
  mesec objavljen spisek BBS-ov, ki imajo Linux, poskuajte ga nekako
  dobiti.

  e iete splone podatke o Linuxu in distribucijah, poskusite
  obiskati http://www.linux.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 zveste razliico sistema, ki jo
  trenutno uporabljate, in ustrezno preimenujete imenik. Trenutno
  razliico jedra zveste 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 -- simboline
  povezave, ki morajo biti na pravih mestih, brisanje ostalih datotek .o
  itd.


  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 nastavitveno
  skripto, ki vas vpraa veliko vpraanj. Potrebuje ukazno lupino bash,
  zato preverite, e ta obstaja v /bin/bash, /bin/sh, ali $BASH.

  Morda 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.

  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 nekaj posameznih izbir.

  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.


  3.3.1.  Kernel math emulation (emulacija matematinih operacij v
  jedru)

  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.  Edina posledica bo, da bo jedro veje (in zato tudi
  veja potronja pomnilnika).  Baje je emulacija matematike poasna;
  eprav to nima dosti opraviti s tem razdelkom, je mogoe nekaj, esar
  se je vredno spomniti, e imate opraviti s poljim obnaanjem
  grafinega sistema X.


  3.3.2.  (podpora normalnim diskom (MFM/RLL) in diskom/CD-ROM-om tipa
  IDE) Normal (MFM/RLL) disk and IDE disk/cdrom support

  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 (omrena podpora)

  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.  (omejitev pomnilnika na spodnjih 16 MB) Limit memory to low
  16MB

  Obstajajo nekateri hroati krmilniki za 386 z DMA, ki imajo probleme
  z naslavljanjem esarkoli ve kot 16 MB RAM; v (redkem) primeru, da
  imate taknega, boste odgovorili z ,,y``.


  3.3.5.  System V IPC (medprocesna komunikacija Systema V)


  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.6.  Processor type (386, 486, Pentium, PPro) (tip 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 mogoe 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.7.  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.8.  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``. Nastavitvena
  skripta vas bo vpraala o tipu kartice in protokolu, ki ga boste
  uporabljali.


  3.3.9.  Filesystems (datoteni sistemi)

  Nastavitvena skripta vas bo vpraala, 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.

  *  Extended fs -- To je bila prva razliica razirjenega datotenega
     sistema (,,extended filesystem``), ki danes ni ve v iri uporabi.
     Verjetno bi vedeli, e bi ga potrebovali, e ste v dvomih, ga ne
     potrebujete.

  *  Second extended -- Ta je na iroko uporabljan v novih
     distribucijah. Verjetno ga imate in morate rei ,,y``.

  *  xiafs filesystem -- Vasih ni bil tako redek, a v asu tega pisanja
     ne poznam nikogar, ki bi ga uporabljal.

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

  *  umsdos -- Ta datoteni sistem razirja datoteni sistem MS-DOS-a z
     obiajnimi lastnostmi Unixa, kot so dolga imena datotek in
     dovoljenja. Ni uporaben za ljudi (kot sem jaz), ki ,,ne DOS-ajo``.

  *  /proc -- e ena izmed najboljih stvari po izumu mleka v prahu
     (zamisel brez sramu ukradena Bell Labs, domnevam). Datoteni sistem
     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
     Linuxovih orodij 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``.

  *  OS/2 HPFS -- V asu pisanja podpira datoteni sistem OS/2 HPFS le
     branje.


  *  System V in Coherent -- za particije sistemov System V in Coherent
     (to sta e dve razliici Unixa za osebne raunalnike).


  3.3.9.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.10.  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: Selection je program, ki vam omogoa uporabo mike izven
  sistema X window za izrezovanje in prilepljanje besedila med
  navideznimi zasloni.  Dobro je, e imate serijsko miko, saj ta lepo
  shaja z X-i, za druge mike pa morate uporabiti posebne trike.  Vasih
  je bila podpora programu selection izbira pri prevajanju jedra, a je
  zdaj standardna.

  e ena opomba: Selection je zastarel program. Ime novega programa je
  ,,gpm``.  Lahko pone zanimive zadeve, kot preslikavanje mijih
  protokolov, uporabo ve mii ipd.


  3.3.11.  Sound card (zvona kartica)

  e imate veliko eljo sliati, kako biff laja, recite ,,y``, in
  pozneje vas bo drug program vpraal o vai zvoni kartici. (Opomba
  glede konfiguracije zvone kartice: ko vas vpraa, e elite namestiti
  polno razliico gonilniko, lahko reete ,,n`` in prihranite nekaj
  jedrnega pomnilnika z izbiro le tistih lastnosti, ki se vam zdijo
  potrebne.) Zelo priporoam ogled  Sound-HOWTO za ve podrobnosti, e
  imate zvono kartico.


  3.3.12.  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 kartico ethernet). Obstaja precej obseen seznam
  vseh izbir (in nain, kako jih uvrstimo v skripto Configure), ki ga je
  zbral Axel Boldt <axel@uni-paderborn.de> na naslovu http://math-
  www.uni-paderborn.de/~axel/config_help.html ali po anonimnem ftp-ju na
  ftp://sunsite.unc.edu/pub/Linux/kernel/config/ v datoteki
  krnl_cnfg_hlp.x.yz.tgz, kjer je x.yz tevilka verzije.

  V novejih jedrih (2.0.x in pozneje) je ta seznam integriran v drevo
  izvorne kode.


  3.3.13.  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 naredite make config, vam sporoilo pove, da je jedro nastavljeno
  in da naj pogledate ,,najvije-nivojsko datoteko Makefile za dodatno
  nastavitev`` itd.

  Poglejte torej Makefile. Verjetno vam ga ne bo treba spreminjati, a
  nikoli ne kodi, e pogledate. Po namestitvi novega jedra lahko
  spreminjate izbire tudi z ukazom ,,rdev``.


  4.  Prevajanje jedra


  4.1.  ienje in urejanje odvisnosti


  Ko konfiguracijska skripta 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 ,,zImage``
  (med drugim). To je novo komprimirano jedro. ,,make zdisk`` naredi
  isto stvar, le da prepie novo datoteko zImage na disketo, ki ste jo,
  upajmo, vstavili v pogon ,,A:`` (/dev/fd0). ,,zdisk`` 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 razumna, jedra so komprimirana, odtod rka
  ,,z`` pred njihovimi imeni. Komprimirano jedro se samodejno
  odkomprimira, ko se izvruje.


  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 zlilo``. 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 verzijah 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 zImage, ki ste jo
  pravkar naredili na to mesto (napiete npr. ,,cp zImage /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 verzijo 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 nastaviveni 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 verzijo 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 verzije 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 nekje 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
  verzije 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 itak 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
  verziji 1.1.48.  Odstranitev datotek .orig je prihranila ve kot pol
  megabyta.

  Zadevo uredite z ukazom:

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

  Verzije 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 verzijo 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
  Nicolai Langfeldt <util-linux@math.uio.no>.  Po anonimnem ftp-ju
  dobite na ftp://sunsite.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
  786DX6/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. Pogledate lahko tudi izpis ,,dmesg`` (ali
  pogledate v jedrov dnevnik, kar pa imate na sistemu). Tam bo vrstica,
  ki bo izgledala takole:

    Memory: 15124k/16384k available (552k kernel code, 384k reserved, 324k data)

  Jedro torej zavzema 552 KB. Moja 386 (ki ima nastavljenih malo manj
  smeti) pravi takole:

    Memory: 7000k/8192k available (496k kernel code, 384k reserved, 312k data)

  e ,,preprosto morate`` imeti veliko jedro, a vam sistem tega ne
  pusti, lahko poskusite ,,make bzimage``. Morda boste morali namestiti
  novo razliico programa LILO.


  7.3.  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 verzije
  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.

  Morda pa prevajate jedro verzije 1.2.x s prevajalnikom ELF (gcc 2.6.3
  ali viji). e dobivate med prevajanjem veliko sporoil ,,so-and-so
  undefined``, je verjetno to pravi problem. V veini primerov je
  popravek zelo preprost.  Dodajte te vrstice na vrh datoteke
  arch/i386/Makefile:

       AS=/usr/i486-linuxaout/bin/as
       LD=/usr/i486-linuxaout/bin/ld -m i386linux
       CC=gcc -b i486-linuxaout -D__KERNEL__ -I$(TOPDIR)/include

  Potem spet ukaite izdelavo make dep in zImage.

  V redkih 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 zvejo, da bi lahko imeli tudi teave
  s strojno opremo. Hja, jaz si tega ne izmiljujem. Obstajajo tudi
  pogosto zastavljena vpraanja o tej temi -- najdete jih na
  http://www.bitwizard.nl/sig11/.


  7.4.  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.5.  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 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 zImage.

  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=zImage 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=zImage 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.6.  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.7.  Izpisuje stvari o nedefiniranih simbolih in se noe prevesti


  Verjetno imate prevajalnik za ELF (gcc 2.6.3 ali pozneji) in izvorno
  kodo jedra 1.2.x (ali e starejo). Navadno zadostuje dodati te tri
  vrstice na vrh vae datoteke arch/i386/Makefile:

       AS=/usr/i486-linuxaout/bin/as
       LD=/usr/i486-linuxaout/bin/ld -m i386linux
       CC=gcc -b i486-linuxaout -D__KERNEL__ -I$(TOPDIR)/include

  To bo prevedlo jedro 1.2.x s knjinicami tipa a.out.


  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 verzije 1.2.x ne podpirajo
  tretjega vmesnika IDE (obstaja podpora v serijah 1.3.x, a to je
  razvojna verzija, se e spomnite, in ne izvaja avtomatskega iskanja).
  Temu se lahko izognemo na ve nainov.

  e e imate drugi port IDE, ga morda ne uporabljate ali e nima 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.

  e mora biti iz nekega vzroka brezpogojno ravno na ,,tretjem``
  vmesniku, ali, e so prisotne e druge teave, nabavite jedro 1.3.x
  (1.3.57, na primer, to podpira), in preberite datoteko
  drivers/block/README.ide. Tam je precej informacij.


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


  Poiite novo verzijo 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 verzijo 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/zImage
  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 verzijo 2.0.x


  Jedra verzij 2.0.x so uvedla precej sprememb pri njihovi namestitvi.
  Berite datoteko Documentation/Changes v drevesu izvorne kode jedra
  2.0.x za znanje, ki ga morate imeti, ko nadgrajujete na 2.0.x.
  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 modules-x.y.z.tar.gz; izberite najvijo tevilko verzije
  x.y.z, ki je enaka ali manja vaemu jedru. Odpakirajte jih z ,, tar
  zxvf modules-x.y.z.tar.gz``, pojdite s cd na imenik, ki ga ustvari tar
  (modules-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 verzije 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.  Druge nastavitvene izbire


  Ta razdelek vsebuje opise nastavitvenih monosti pri prevajanju jedra
  (v make config), ki niso opisane v nastavitvenem razdelku. Tukaj ni
  vsebovana veina gonilnikov naprav.


  10.1.  Splone nastavitve


  *  Normal floppy disk support -- obiajna podpora disketam -- je tono
     to.  Morda elite prebrati datoteko drivers/block/README.fd; to je
     e posebej pomembno za uporabnike notesnika IBM Thinkpad.

  *  XT harddisk support -- e elite uporabljati 8-bitni vmesnik XT, ki
     se vam prai nekje v kotu.

  *  PCI bios support -- e imate raunalnik z arhitekturo PCI, boste
     morda poskusili s tem; vendar bodite previdni, saj nekatere
     stareje matine ploe tipa PCI ne delujejo s to izbiro. Ve
     podatkov o PCI vodilu pod Linuxom najdete v PCI-HOWTO.

  *  Kernel support for ELF binaries -- jedrna podpora binarnim
     datotekam ELF -- ELF je poskus binarnih datotek, ki bi se lahko
     razirjale na ve arhitekturah in operacijskih sistemih; Linux je
     naravnan v to smer, torej najverjetneje potrebujete to podporo.

  *  Set version information on all symbols for modules -- v preteklosti
     so se jedrni moduli prevajali skupaj z vsakim novim jedrom. e
     reete y, bo mogoe uporabiti module, prevedene za drugo razliico
     jedra. Za podrobnosti berite datoteko README.modules.


  10.2.  Omrene izbire


  Omrene izbire so opisane v NET-3-HOWTO (ali NET-nekaj-HOWTO).


  11.  Nasveti in triki


  11.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 rc (verjetno je ne uporabljate) je ustrezen ukaz

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


  11.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/zImage
           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.


  11.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 http://www.crynwr.com/kchanges.


  12.  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-HOWTO: ve o modulih jedra,

  *  Kerneld mini-HOWTO: o demonu kerneld,

  *  BogoMips mini-HOWTO: e se sluajno spraujete.


  13.  Razno


  13.1.  Avtor


  Avtor in vzdrevalec prironika Linux Kernel-HOWTO je Brian Ward
  <bri@blah.math.tu-graz.ac.at>.  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/ward/

  *  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 vedeli
  odgovora! elim se zahvaliti vsem, ki so mi dali povratno informacijo.

  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 in da ne vem, kako bom lahko
  pomagal; osebno uporabljam stroje z diski IDE in SCSI, SCSI CD-ROM-e,
  omrene kartice 3Com in WD, serijske mii, matine ploe s PCI,
  krmilnike NCR 810 SCSI controllers, procesor AMD 386DX40 s Cyrixovim
  koprocesorjem, procesorje AMD 5x86, AMD 486DX4, in Intel 486DX4 (to je
  pregled opreme, ki jo uporabljam in sem z njo seznanjen, vsekakor pa
  ni priporoilo, e pa bi radi to, me kar vpraajte :-) ).

  Verzija -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 je Roman Maurer. Prosim, poljite mi pripombe
  na prevod na naslov <roman.maurer@fmf.uni-lj.si>. Slovenski prevod je
  dostopen kot SGML, HTML in navaden tekst na Lugosovem streniku 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>.


  13.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.


  13.3.  Prispevki


  Vkljuen je majhen del Linosove 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@fmf.uni-lj.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): NFS-jeva re,

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

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


  13.4.  Pravice razirjanja, licenca, in te stvari


  Copyright (C) Brian Ward, 1994-1998.

  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 verzije tega
  prironika pod pogoji za dobesedno kopiranje, e se izpeljano delo
  razirja z enako opombo glede dovoljenj. Prevodi padejo v kategorijo
  ,,spremenjenih verzij``.

  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 verzije izgledajo bolje.  Lahko jih
  recikliramo.
