<!-- $Id: Kernel-HOWTO-sl.sgml,v 1.3 2002/06/03 18:40:51 roman Exp $ -->

<!-- Ta spis berite v znakovnem naboru ISO 8859-2 (ISO Latin 2) -->
<!-- Zadnji popravek prevoda: 24. julij 1998 -->

<!doctype linuxdoc system>

<article>

<title>Jedro Linuxa, HOWTO 
<author>Brian Ward, <tt>bri@cs.uchicago.edu</tt>
<date>v1.0, 5. junij 1999
<abstract>
To je slovenski prevod datoteke <tt>Kernel-HOWTO</tt>, podrobnega
vodnika po nastavitvah jedra operacijskega sistema Linux, prevajanju,
nadgradnji in odpravljanju težav za sisteme s procesorji ix86.
<toc>

<sect>Uvod
<p>
Ste tudi vi med tistimi, ki naj bi prebrali ta dokument? No,
pomislite, ali pri sebi opazite katerega od naštetih simptomov:
<itemize>
<item>,,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!``
<item>V enem novejših jeder je gonilnik za neko napravo, ki ga
 morate dobiti za vsako ceno.
<item>Še sanja se vam ne, kako prevesti jedro.
<item>,,Se res skrivnost vsega skriva v datoteki <tt>README</tt>?``
<item>Prišli ste, poskusili, pa ni delovalo.
<item>Potrebujete nekaj, kar bi lahko ponudili vsem tistim, ki vas mučijo s prošnjami,
 da namesto njih namestite njihova jedra.
</itemize>

<sect1>Najprej si preberite tole! (Resno mislim!)
<p>
Nekateri zgledi v tem spisu predpostavljajo, da imate GNU
<tt>tar</tt>, <tt>find</tt> in <tt>xargs</tt>. Ti so kar standardni;
to vam ne bi smelo povzročati preglavic. Predvidevam tudi, da poznate
datotečno strukturo vašega sistema; če je ne, je pomembno, da imate
pri roki izpisano kopijo izhoda ukaza <tt>mount</tt> med normalnim
delovanjem sistema (ali izpis datoteke <tt>/etc/fstab</tt>, če ga
znate brati). Te informacije so pomembne in se ne spreminjajo, razen
če razdelite disk, dodaste novega, namestite svoj
sistem znova ali kaj podobnega.
<p>
Zadnja stabilna različica jedra je bila med pisanjem tega spisa 2.2.9,
torej se sklicevanja in zgledi nanašajo nanjo. Čeprav se trudim, da bi
bil ta spis kar se da neodvisen od posameznih različic, se jedro
nenehno razvija, torej bo v novejši različici neizogibno nekaj
sprememb. To vam ne bi smelo povzročati večjih težav, lahko pa vas
malce zmede.

Poznamo dve različici izvirne kode jedra Linuxa; stabilno
(angl. ,,production``) in razvojno (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
razhroščene različice ob času njihove izdaje. Razvojna jedra (2.1.x,
2.3.x itd.) so jedra za preizkušanje, za tiste torej, ki bi radi
preizkusili nova in morda zelo hroščata jedra. Bili ste opozorjeni!

<sect1>O slogu
<p>
<tt>Besedilo, ki je videti takole</tt>, se prikaže na
vašem zaslonu. Je ime datoteke ali nekaj, kar lahko neposredno vtipkate,
na primer ukaz ali izbire pri ukazu (če gledate tekstovno različico
tega spisa, zgornje besedilo ni videti nič drugače). Ukazi in drugi
vnosi so pogosto citirani (z ,, ``), v slovenskem prevodu takole:
,,<tt>make config</tt>``.

<sect>Pomembna vprašanja in odgovori 
<p>
<sect1>Kaj pravzaprav sploh počne jedro?
<p>
Jedro Unixa deluje kot posrednik med vašimi programi in strojno
opremo. Najprej, upravlja pomnilnik za vse tekoče programe (procese)
ali poskrbi za to in preveri, da vsi dobijo pošten (ali nepošten, če
tako želite) delež ciklov procesorja. Poleg tega daje programom
prijazen, precej prenosljiv vmesnik za pogovor z vašo strojno opremo.
<p>
Gotovo ima jedro več dolžnosti kot samo ti dve, a najpomembneje je, da
poznate ti, osnovni.

<sect1>Zakaj bi želeli nadgraditi jedro?
<p>
Novejša jedra v splošnem ponujajo možnost za pogovor z več vrstami
opreme (to se pravi, imajo več gonilnikov naprav), imajo morda boljše
procesno upravljanje, lahko delujejo hitreje kakor starejše različice,
so stabilnejša od starejših različic in odpravijo neumne hrošče iz
starejših različic. Večina nadgradi jedra, ker želijo
gonilnike naprav in popravke hroščev.

<sect1>Katero strojno opremo podpirajo nova jedra?
<p>
Preberite si <tt>Hardware-HOWTO</tt>. Kot alternativo si lahko ogledate
datoteko <tt>config.in</tt> v izvirni kodi Linuxa, lahko pa tudi
izveste, ko poskusite ,,<tt>make config</tt>``. To vam pokaže 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 tračne enote) je nalagalnih modulov, ki se urejajo in
distribuirajo posebej.

<sect1>Katero različico prevajalnika gcc in knjižnice libc potrebujem? 
<p>
Linus priporoča različico gcc v datoteki <tt>README</tt>, priloženi
izvirni kodi Linuxa. Če nimate te različice, vam dokumentacija poleg
priporočene različice gcc pove, ali morate nadgraditi knjižnico libc.
To ni težko opravilo, pomembno pa je, da sledite navodilom.

<sect1>Kaj je nalagalni modul (loadable module)? 
<p>
To so delčki kode jedra, ki niso povezani (vključeni) neposredno v
jedro. Prevedemo jih posebej in jih lahko vključimo ali odstranimo v
delujoče jedro skoraj kadarkoli. Zaradi njihove fleksibilnosti je to
zdaj priporočeni način za uporabo določenih lastnosti jedra. Številni 
priljubljeni gonilniki, na primer gonilniki za PCMCIA in za tračno enoto
QIC-80/40, so nalagalni moduli.

<sect1>Koliko prostora potrebujem na disku?
<p>
Odvisno od konkretne konfiguracije sistema. Stisnjena izvirna
koda Linuxa različice 2.2.9 obsega približno 14 MB. Večina
računalnikov jo obdrži tudi po odpakiranju. Odpakirana in zgrajena
izvirna koda jedra za povprečno sestavo zasede dodatnih 67 MB.

<sect1>Kako dolgo traja?
<p>
Pri novejših strojih traja prevajanje znatno manj časa kot pri
starejših; AMD K6-2/300 s hitrim diskom lahko prevede jedro 2.2.x v
približno štirih minutah. Če pa želite prevesti jedro v starih
računalnikih Pentium, 486 in 386, bodite pripravljeni čakati, morda
ure ali celo dneve ...
<p>
Če vas to moti in imate na voljo tudi hitrejši stroj, na katerem lahko
prevajate, lahko gradite jedro na hitrejših strojih (če podaste
pravilna določila, če so vaši pripomočki osveženi in tako naprej) in
potem prenesete sliko jedra na počasnejši stroj.

<sect>Kako zares sestaviti jedro<label id="configuring">
<p>
<sect1>Nabava izvirne kode
<p>
Izvirno kodo lahko dobite po anonimnem FTP iz strežnika
<tt>ftp.kernel.org</tt> v imeniku <tt>/pub/linux/kernel/vx.y</tt>,
kjer je <tt>x.y</tt> različica (npr. 2.2) in, kot je bilo že omenjeno,
so lahko razvojne različice jedra, označene z lihimi končnimi
številkami, nestabilne. Izvirna koda jedra je navadno označena kot
<tt>linux-x.y.z.tar.gz</tt>, kjer je <tt>x.y.z</tt> številka
različice. Strežniki imajo navadno tudi datoteke s podaljškom
<tt>.bz2</tt>, ki so bile stisnjene s pripomočkom <tt>bzip2</tt> (te
datoteke bodo manjše, zato bo za njihov prenos treba manj časa).
<p>
Najbolje bo, če za prenos uporabite <tt>ftp.xx.kernel.org</tt>, pri čemer
je <tt>xx</tt> koda vaše države; v Sloveniji boste tako uporabili
<tt><htmlurl name="ftp.si.kernel.org"
url="ftp://ftp.si.kernel.org/pub/linux/kernel/"></tt>, v Avstriji
<tt>ftp.at.kernel.org</tt>, v Združenih državah Amerike pa
<tt>ftp.us.kernel.org</tt>.

<sect1>Odpakiranje izvirne kode
<p>
Prijavite se kot ,,<tt>root</tt>`` (ali pa uporabite ukaz <tt>su</tt>)
in s <tt>cd</tt> spremenite imenik na <tt>/usr/src</tt>. Če ste ob
prvi namestitvi Linuxa namestili tudi izvirno kodo jedra (večina jih
stori tako), bo tam že imenik ,,<tt>linux</tt>`` s celotnim
starim drevesom izvirne kode. Če imate dovolj diskovnega prostora in bi
se radi počutili varno, ohranite ta imenik. Pametno je 
izvesti različico sistema, ki jo trenutno uporabljate, in ustrezno
preimenovati imenik. Trenutno različico jedra izveste z ukazom
,,<tt>uname -r</tt>``. Če torej ,,<tt>uname -r</tt>`` pravi
,,1.0.9``, boste preimenovali (z ,,<tt>mv</tt>``) ,,<tt>linux</tt>`` v
,,<tt>linux-1.0.9</tt>``. Če ste malo bolj lahkomiselni,
preprosto zbrišite ves imenik. V vsakem primeru preverite,
da v <tt>/usr/src</tt> nimate imenika ,,<tt>linux</tt>``, preden
odpakirate celotno izvirno kodo.
<p>
Zdaj v imeniku <tt>/usr/src</tt> odpakirajte izvirno kodo z ukazom
,,<tt>tar zxpvf linux-x.y.z.tar.gz</tt>`` (če imate samo datoteko
<tt>.tar</tt> brez končnega <tt>.gz</tt>, pa z ukazom ,,<tt>tar xpvf
linux-x.y.z.tar</tt>``). Na zaslonu boste videli izpisane datoteke
izvirne kode. Ko <tt>tar</tt> konča, boste imeli nov imenik
<tt>/usr/src/linux</tt>. Naredite <tt>cd</tt> v <tt>linux</tt> in
preberite datoteko <tt>README</tt>. Nekje bo razdelek z naslovom
,,<tt>INSTALLING the kernel</tt>`` (,,NAMESTITEV jedra``).
Upoštevajte navodila, kjer je to primerno -- simbolne povezave, ki
morajo biti na pravih mestih, brisanje drugih datotek <tt>.o</tt>
itd.
<p>
Če imate datoteko <tt>.bz2</tt> in pripomoček <tt>bzip2</tt> (več o tem
si preberite na <tt><url url="http://www.muraroa.demon.co.uk/"></tt>),
naredite tole:
<tscreen><verb>
bz2cat linux-x.y.z.tar.bz2 | tar xvf -
</verb></tscreen>

<sect1>Nastavitev jedra
<p>
Opomba: Del tega je reiteracija/razjasnitev podobnega razdelka v
Linusovi datoteki <tt>README</tt>.
<p>
Ukaz ,,<tt>make config</tt>`` v imeniku <tt>/usr/src/linux</tt> požene
nastavitveni skript, ki vam zastavi kup vprašanj. Potrebuje ukazno
lupino <tt>bash</tt>, zato preverite, ali je ta
 v <tt>/bin/bash</tt>, <tt>/bin/sh</tt>, ali <tt>&dollar;BASH</tt>.
<p>
Verjetno boste raje uporabljali katero od alternativ ukazu ,,<tt>make
config</tt>``. Tisti, ki poganjate grafični sistem X, lahko poskusite z
,,<tt>make xconfig</tt>``, če imate nameščen programski paket Tk
(,,klik-o-rama`` - Nat). ,,<tt>make menuconfig</tt>`` je za tiste, ki
imate (n)curses in bi radi imeli tekstovne menuje. Ta dva vmesnika
imata bistveno prednost pred standardnim: če zamočite in med
konfiguracijo izberete napačno izbiro, se lahko vrnete in stvar popravite.
<p>
Z uporabo ,,<tt>make menuconfig</tt>`` ali ,,<tt>make xconfig</tt>``
bodo nastavitvene izbire urejene hierarhično.
<p>
Pripravljeni ste odgovarjati na nekaj vprašanj, navadno z
,,<tt>y</tt>`` (da) ali ,,<tt>n</tt>`` (ne). Gonilniki naprav imajo
tipično izbiro ,,<tt>m</tt>``. Ta pomeni ,,modul``, se pravi, da ga bo
sistem prevedel, ne pa tudi vključil neposredno v jedro. Na voljo bo
kot nalagalni modul. Duhovitejši način za opis te izbire bi bil
,,mogoče``. Nekatere očitnejše in nekritične izbire tu niso
opisane; glej razdelek <ref id="other_options" name=",,Druge
nastavitvene izbire``"> za kratek opis nekaterih posameznih izbir.
Pri ,,<tt>make menuconfig</tt>`` s presledkom spreminjate izbiro.
<p>
V jedrih 2.0.x in poznejših je na voljo tudi izbira ,,<tt>?</tt>``, ki
poda kratek opis posameznega nastavitvenega parametra. Ta informacija
je verjetno najbolj sveža. Tu je seznam nekaterih najpomembnejših
odlik, s hierarhijo, v kateri jih najdete, in kratkim opisom.

<sect2>Kernel math emulation (Processor type and features)
<p>
&lsqb; Posnemanje matematičnih operacij v jedru (Vrsta in lastnosti
procesorja) &rsqb;
<p>
Če nimate matematičnega koprocesorja (imate le goli procesor 386 ali
486SX), morate tu reči ,,<tt>y</tt>``. Če imate koprocesor in
rečete ,,<tt>y</tt>``, naj vas ne skrbi preveč -- koprocesor se bo še vedno
uporabljal, posnemanje pa ignoriralo. Za vsak napol sodoben stroj bo
odgovor ,,ne``, a ne skrbite, če boste pomotoma rekli ,,da``; če
posnemanje ni potrebno, se ne uporablja.

<sect2>Enhanced (MFM/RLL) disk and IDE disk/cdrom support (Block Devices)
<p>
&lsqb; Podpora izboljšanim diskom (MFM/RLL) in diskom/CD-ROM vrste
IDE (blokovne naprave) &rsqb;
<p>
Verjetno morate to podpreti; pomeni, da bo jedro podpiralo standardne
diske, ki jih najdemo v osebnih računalnikih večine ljudi. Ta
gonilnik ne vključuje pogonov SCSI; v nastavitvah pridejo ti na vrsto
pozneje.
<p>
Nastavitveni program vas bo nato vprašal, ali želite podporo le starim
diskom (,,old disk-only``) in novim diskom IDE (,,new IDE``). Izbrati
morate eno od teh možnosti; poglavitna razlika je v tem, da stari gonilnik
podpira le dva diska na enem vmesniku, novi pa drugi
vmesnik in CD-ROM IDE/ATAPI. Novi gonilnik je 4 KB večji od
starejšega in naj bi bil ,,izpopolnjen``, kar pomeni, da premore več ali manj 
hroščev, verjetno pa tudi izboljša vedenje
vašega diska, še posebej, če imate novejšo strojno opremo vrste EIDE.

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

<sect2>System V IPC (General Setup)
<p>
&lsqb; Medprocesna komunikacija Systema V (splošne nastavitve) &rsqb;
<p>
Eno najboljših definicij IPC (Interprocess Communication, medprocesna
komunikacija) najdemo v slovarčku knjige Programming Perl: ,,Včasih se
mora proces le pogovoriti z drugim procesom``. Ne preseneča nas torej,
da nekateri perlovski programerji dovoljujejo procesom, da se
pogovarjajo drug z drugim, kot to počne tudi veliko drugih paketov
(najbolj znan je DOOM), torej izbira ,,<tt>n</tt>`` ni najboljša,
razen če natanko veste, kaj počnete.

<sect2>Processor family (Processor type and features)
<p>
&lsqb; Procesorska družina (vrsta in značilnosti procesorja) &rsqb;
<p>
(v starejših jedrih: uporabite zastavico <tt>-m486</tt> za
optimizacije za 486)
<p>
Včasih je to zajemalo posebne optimizacije za določen procesor; jedro
je teklo povsem dobro na drugih čipih, a je bilo morda malo večje. V
novejših jedrih pa to ni več res, zato vnesite procesor, za katerega
prevajate jedro. Jedro za ,,<tt>386</tt>`` bo delovalo v vseh
strojih.

<sect2>SCSI support
<p>
&lsqb; Podpora SCSI &rsqb;
<p>
Če imate naprave vrste SCSI, recite ,,<tt>y</tt>``. Vprašani boste po
nadaljnjih podatkih, kot je podpora CD-ROM, diskom, in katere vrste
vmesnik SCSI imate. Podrobnosti si preberite v <tt>SCSI-HOWTO</tt>.

<sect2>Network device support
<p>
&lsqb; Podpora omrežnim napravam &rsqb;
<p>
Če imate omrežno kartico ali bi radi uporabljali SLIP, PPP ali
vzporedni vmesnik za dostop v internet, recite ,,<tt>y</tt>``.
Nastavitveni skript vas bo vprašal po vrsti kartice in protokolu, ki ga
boste uporabljali.

<sect2>Filesystems
<p>
&lsqb; Datotečni sistemi &rsqb;
<p>
Nastavitveni skript vas bo vprašal, ali želite imeti v jedru podprte naslednje
datotečne sisteme:

<itemize>
<item><tt>Standard (minix)</tt> -- novejše distribucije ne ustvarjajo
datotečnih sistemov minix in marsikdo jih ne uporablja, a morda
bi bilo vseeno dobro, da bi jih podprli. Nekateri programi za
izdelavo ,,rešilnih diskov`` jih uporabljajo in veliko disket je
formatiranih kot minix, saj je minixov datotečni sistem na disketah
manj mučen.

<item><tt>Second extended</tt> -- To je standardni datotečni sistem
Linuxa. Skoraj zagotovo ga imate, in morate odgovoriti ,,<tt>y</tt>``.

<item><tt>msdos</tt> -- Če želite uporabljate particije MS-DOS na 
disku ali nameščati dosovske formatirane diskete, recite
,,<tt>y</tt>``.
<p>
Dostopni so še številni drugi tuji datotečni sistemi.
 
<item><tt>/proc</tt> -- (zamisel iz Bell Labs, domnevam). Datotečnega
sistema <tt>/proc</tt> se ne ustvari na disku; to je datotečni vmesnik
do jedra in procesov. Številni izpisovalci procesov
(npr. ,,<tt>ps</tt>``) ga uporabljajo. Poskusite kdaj s ,,<tt>cat
/proc/meminfo</tt>`` ali ,,<tt>cat /proc/devices</tt>``. Nekatere
ukazne lupine (posebej <tt>rc</tt>) uporabljajo <tt>/proc/self/fd</tt>
(v drugih sistemih znan kot <tt>/dev/fd</tt>) za vhodno/izhodne (V/I)
operacije. Skoraj gotovo morate odgovoriti ,,<tt>y</tt>``; številna
pomembna orodja za Linux so odvisna od tega.

<item><tt>NFS</tt> -- Če vaš stroj biva v omrežju in želite
uporabljati datotečne sisteme, ki ležijo v drugih sistemih z NFS,
recite ,,<tt>y</tt>``.

<item><tt>ISO9660</tt> -- Najdete ga na večini CD-ROM. Če imate
pogon za CD-ROM in ga želite uporabljati v Linuxu, odgovorite ,,<tt>y</tt>``.

</itemize>

<sect3>Kako naj vem, katere datotečne sisteme potrebujem?!
<p>
Prav, napišite ,,<tt>mount</tt>``. Izpis bo približno tak: 
<tscreen><verb>
blah:&num; 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)
</verb></tscreen>
<p>
Poglejte v vsako vrstico; beseda poleg ,,<tt>type</tt>`` je ime
datotečnega sistema. V tem primeru sta moja datotečna sistema
<tt>/</tt> in <tt>/usr</tt> vrste ,,second extended``, uporabljam
<tt>/proc</tt> in nameščena je disketa z datotečnim sistemom msdos
(fej).
<p>
Poskusite tudi ,,<tt>cat /proc/filesystems</tt>``, če imate trenutno
vklopljen <tt>/proc</tt>; to bo izpisalo vaše trenutne datotečne
sisteme v jedru.
<p>
Namestitev redko rabljenih, ne nujnih datotečnih sistemov lahko
povzroči napihnjeno jedro; glej razdelek <ref id="moduls" name="o
modulih"> za način, kako se temu izogniti, in razdelek <ref
id="big_n_slow" name=",,Velika ali počasna jedra``"> o tem, zakaj je
napihnjeno jedro nezaželen pojav.

<sect2>Character devices
<p>
&lsqb; Znakovne naprave &rsqb;
<p>
Tu vključite gonilnike za vaš tiskalnik (pravzaprav tiskalnik na
vzporednih vratih), miško, priklopljeno na vrata busmouse ali PS/2
(veliko notesov uporablja miškovni protokol PS/2 za vgrajene sledilne
kroglice), nekatere tračne enote in druge take ,,znakovne``
naprave. Odgovorite z ,,<tt>y</tt>``, če je tako prav.
<p>
Opomba: <tt>gpm</tt> je program, ki omogoča uporabo miške zunaj
sistema X window za izrezovanje in lepljenje besedila med
navideznimi zasloni. Dobro je, če imate miško na zaporednih vratih,
saj lepo shaja z Okni X, za druge miške pa morate uporabiti posebne
zvijače.

<sect2>Sound
<p>
&lsqb; Zvok &rsqb;
<p>
Če si zelo želite slišati, kako <tt>biff</tt> laja, odgovorite
,,<tt>y</tt>`` in nastavitvenemu programu lahko poveste vse o vaši
zvočni kartici. (Opomba k nastavitvi zvočne kartice: ko vas vpraša,
ali želite namestiti popolno različico gonilnikov, lahko odgovorite
,,<tt>n</tt>`` in prihranite nekaj pomnilnika jedra z izbiro le tistih
značilnosti, ki se vam zdijo potrebne.)
<p>
Če zares potrebujete dobro podporo zvočni kartici, si oglejte proste
gonilnike na naslovu <tt><url url="http://www.linux.org.uk/OSS/"></tt>
in komercialni Open Sound System na <tt><url
url="http://www.opensound.com/"></tt>.

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

<sect2>Kernel hacking
<p>
&lsqb; Hekanje jedra &rsqb;
<p>
Iz Linusove datoteke <tt>README</tt>: 
<p>
Izbira ,,hekanje jedra`` navadno vodi v večje in počasnejše jedro (ali
v oboje) in lahko naredi jedro manj stabilno tako, da prekodira
nekatere rutine, ki aktivno poskušajo sesuti slabo kodo in s tem najti
jedrne probleme (<tt>kmalloc()</tt>). Torej boste, če ste navadni
smrtnik, tu odgovorili z ,,<tt>n</tt>``.

<sect1>Pa zdaj? (Datoteka <tt>Makefile</tt>) 
<p>
Ko opravite nastavljanje, vam sporočilo pove, da je jedro nastavljeno
in da si oglejte ,,najvišje nivojsko datoteko Makefile za dodatno
nastavitev`` itd.
<p>
Poglejte torej <tt>Makefile</tt>. Verjetno vam je ne bo treba
spreminjati, a nikoli ne škodi, če pogledate. Po namestitvi novega
jedra lahko spreminjate izbire tudi z ukazom ,,<tt>rdev</tt>``. Če se
ob ogledovanju te datoteke počutite izgubljeni, pač pozabite nanjo.

<sect>Prevajanje jedra<label id="compiling">
<p>
<sect1>Čiščenje in urejanje odvisnosti
<p>
Ko konfiguracijski skript konča delo, vam pove, da napravite
,,<tt>make dep</tt>`` in (morda) ,,<tt>clean</tt>``. Torej napišete
,,<tt>make dep</tt>``. To vam zagotovi, da so vse odvisnosti, na
primer vključne datoteke, na svojem mestu. Ne traja dolgo, razen
če imate zelo počasen računalnik. Pri starejših različicah jedra
morate po koncu izdelave odvisnosti napisati še ,,<tt>make
clean</tt>``. 
To odstrani vse objektne datoteke in drugo, kar
so pustile za sabo stare različice. V vsakem primeru ne pozabite
narediti tega koraka, preden začnete prevajati jedro.

<sect1>Čas za prevajanje 
<p>
Po urejanju odvisnosti in čiščenju lahko napišete ,,<tt>make
zImage</tt>`` ali ,,<tt>make zdisk</tt>`` (ta del traja dolgo
časa). ,,<tt>make zImage</tt>`` prevede jedro in v imeniku
<tt>arch/i386/boot</tt> pusti datoteko, imenovano ,,<tt>bzImage</tt>``
(med drugim). To je novo stisnjeno jedro. ,,<tt>make bzdisk</tt>``
naredi isto, le da prepiše novo datoteko <tt>bzImage</tt> na disketo,
ki ste jo, upajmo, vstavili v pogon ,,A:`` (<tt>/dev/fd0</tt>).
,,<tt>bzdisk</tt>`` je priročno orodje za preskušanje novih jeder; če
novo jedro ne deluje v redu, preprosto odstranite disketo in zaženite
staro jedro. Včasih boste to disketo lahko uporabili tudi, če boste po
pomoti odstranili svoje jedro (ali naredili kaj podobno
groznega). Disketo lahko uporabite tudi pri namestitvi novih sistemov,
ko preprosto prepišete vsebino enega diska na drugega (,,Vse to in še
več! Koliko bi plačali <bf>zdaj</bf>?``).  Vsa vsaj napol razumno nova
jedra so stisnjena, odtod črka ,,<tt>bz</tt>`` pred njihovimi
imeni. Stisnjeno jedro se samodejno raztegne, ko se izvaja.
<p>
V starejših jedrih ni izbire za gradnjo <tt>bzImage</tt>; le
<tt>zImage</tt>. Ta izbira je trenutno še vedno dostopna, vendar je
glede na velikost kode novejših jeder uporaba <tt>bzImage</tt> bolj
ali manj obvezna, saj starejše metode ne znajo uporabljati prevelikega
jedra.
 
<sect1>Drugi cilji ,,make`` 
<p>
,,<tt>make mrproper</tt>`` ustvari intenzivnejše čiščenje
(,,<tt>clean</tt>``). Včasih je ta cilj potreben; morda ga želite
uporabiti ob vsakem popravku. ,,<tt>make mrproper</tt>`` bo tudi
zbrisal vašo konfiguracijsko datoteko, zato shranite njeno rezervno
kopijo (<tt>.config</tt>), če se vam zdi pomembna.

,,<tt>make oldconfig</tt>`` bo poskušal nastaviti jedro s stare
konfiguracijske datoteke; namesto vas bo šel skozi proces ,,<tt>make
config</tt>``. Če še nikoli niste prevedli jedra ali nimate stare
konfiguracijske datoteke, verjetno nočete tega, saj ne želite spremeniti
privzete nastavitve.

Za ukaz ,,<tt>make modules</tt>`` glej razdelek o modulih. 

<sect1>Namestitev jedra
<p>
Ko imate novo jedro, za katerega menite, da deluje, kakor želite, je
čas, da ga namestite. Večina ljudi za ta korak uporablja LILO (Linux
Loader). Jedro namestite, poženete čezenj LILO in ga pripravite za
zaganjanje z ukazom ,,<tt>make bzlilo</tt>``. <bf>Vendar le</bf>, če
je <tt>lilo</tt> nastavljen takole: jedro je <tt>/vmlinuz</tt>, lilo
je v imeniku <tt>/sbin</tt> in vaša nastavitvena datoteka
<tt>/etc/lilo.conf</tt> se s tem strinja.

V vseh drugih primerih morate pognati LILO neposredno. Paket je
precej enostavno namestiti in delati z njim, a zna zmesti s
konfiguracijsko datoteko. Poglejte v nastavitveno datoteko (v starejših
različicah je to <tt>/etc/lilo/config</tt>, v novejših pa
<tt>/etc/lilo.conf</tt>), kakšne nastavitve imate.
Konfiguracijska datoteka mora biti podobna:
<tscreen><verb>
image = /vmlinuz
  label = Linux
  root = /dev/hda1
  ...
</verb></tscreen>

Nastavitev ,,<tt>image =</tt>`` kaže na novo nameščeno
jedro. Večina uporablja <tt>/vmlinuz</tt>. Lilo potrebuje oznako
,,<tt>label</tt>``, da ugotovi, katero jedro ali operacijski sistem
naj zažene, oznaka ,,<tt>root</tt>`` je korenski imenik <tt>/</tt>
določenega operacijskega sistema. Naredite rezervno kopijo vašega
starega jedra in prepišite datoteko <tt>bzImage</tt>, ki ste jo pravkar
naredili, na to mesto (napišete npr. ,,<tt>cp bzImage /vmlinuz</tt>``,
če uporabljate ,,<tt>/vmlinuz</tt>``). Potem še enkrat zaženete lilo
-- na novejših sistemih le napišete ,,<tt>lilo</tt>``, na starejših
morate morda narediti <tt>/etc/lilo/install</tt> ali celo
<tt>/etc/lilo/lilo -C /etc/lilo/config</tt>.
<p>
Če bi radi izvedeli več o nastavitvi programa LILO ali če nimate
programa LILO, dobite najnovejšo različico z vašega priljubljenega
mesta za FTP in upoštevate navodila.
<p>
Za zaganjanje enega vaših starejših jeder z diska (še en način,
kako si opomorete, če ste uničili novo jedro), prekopirajte vrstice
pod (skupaj z) ,,<tt>image = xxx</tt>`` v nastavitveni
datoteki lila na konec datoteke in spremenite ,,<tt>image = xxx</tt>`` v
,,<tt>image = yyy</tt>``, kjer je ,,<tt>yyy</tt>`` polna pot do
datoteke, v katero ste shranili rezervno jedro. Potem spremenite
,,<tt>label = zzz</tt>`` v ,,<tt>label = linux-backup</tt>`` in še
enkrat poženite <tt>lilo</tt>. V konfiguracijsko datoteko lahko dodaste
tudi vrstico z ,,<tt>delay=x</tt>``, kjer je ,,<tt>x</tt>`` č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).

<sect>Popravljanje jedra 
<p>
<sect1>Uporaba popravka
<p>
Zaporedne nadgradnje jedra se distribuirajo kot popravki (patches). Na
primer, če imate različico 1.1.45 in opazite, da je nekje
datoteka ,,<tt>patch46.gz</tt>`` za njo, to pomeni, da lahko z uporabo
programa <tt>patch</tt> nadgradite jedro na različico 1.1.46. Morda
boste najprej želeli narediti rezervno kopijo drevesa izvirne kode
(stisnjen arhiv naredite z ,,<tt>make clean</tt>`` in potem
,,<tt>cd /usr/src; tar zcvf old-tree.tar.gz linux</tt>``).
<p>
Nadaljujmo zgornji zgled in predpostavimo, da imate datoteko
,,<tt>patch46.gz</tt>`` v imeniku <tt>/usr/src</tt>.<tt> </tt>Naredite
<tt>cd /usr/src</tt> in potem ,,<tt>zcat patch46.gz | patch -p0</tt>``
(ali ,,<tt>patch -p0 &lt; patch46</tt>``, če popravek ni stisnjen).
Na zaslonu bodo letele mimo stvari, ki vam bodo sporočale, da
<tt>patch</tt> poskuša uporabiti določene popravke in uspeh teh
poskusov. Navadno se vse odvija prehitro, da bi utegnili prebrati. Če niste
prepričani, ali je šlo vse po sreči, boste morda uporabili zastavico
<tt>-s</tt> za program <tt>patch</tt>, kar pove <tt>patch</tt>u, naj
sporoča le o napakah (v tem primeru boste sicer oropani za občutek, 
da vaš računalnik za spremembo nekaj počne, a boste morda
vseeno raje storili tako). Če vas zanima, kateri deli se niso
popravili povsem gladko, naredite cd<tt> /usr/src/linux</tt> in
poiščite datoteke s podaljškom <tt>.rej</tt>. Nekatere starejše
različice <tt>patch</tt>a pustijo podaljšek <tt>&num;</tt>. Za
iskanje uporabite ,,<tt>find</tt>``: <tscreen><verb> &num; find .
-name '*.rej' -print </verb></tscreen>
<p>
To izpiše vse datoteke s podaljškom <tt>.rej</tt>, ki prebivajo v
trenutnem imeniku ali podimenikih, na standardni izhod.
<p>
Če je šlo vse kot po maslu, napravite ,,<tt>make clean</tt>``,
,,<tt>config</tt>``, in ,,<tt>dep</tt>``, kot je opisano v razdelkih
<ref id="configuring" name=",,Kako zares sestaviti jedro``"> in <ref
id="compiling" name=",,Prevajanje jedra``">.
<p>
Ukaz <tt>patch</tt> ima še precej dodatnih izbir. Zgoraj smo že
omenili <tt>patch -s</tt>, ki zadrži izpis vseh sporočil, razen napak.
Če imate izvirno kodo jedra v kakem drugem imeniku kot
<tt>/usr/src/linux</tt>, uporabite v tem imeniku <tt>patch -p1</tt>.
Druge izbire najdete z <tt>man patch</tt>.

<sect1>Če se kje zalomi
<p>
(Opomba: Ta razdelek se nanaša predvsem na zelo stara jedra.) 
<p>
Včasih je bil najpogostejši problem, da je
popravek spremenil datoteko ,,<tt>config.in</tt>`` in ta ni bila čisto
prava, saj ste spremenili izbire, da bi opisali opremo svojega stroja.
To se je uredilo, a v starejših izdajah še vedno naletite na te nevšečnosti.
Popravite jih tako, da si ogledate datoteko <tt>config.in.rej</tt> tako,
da odgovarja prvotnemu popravku. Popravki bodo navadno označeni s 
simboloma ,,<tt>+</tt>`` in ,,<tt>-</tt>`` na začetku vrstice. Oglejte si
okoliške vrstice in se spomnite, ali so bile nastavljene kot
,,<tt>y</tt>`` ali kot ,,<tt>n</tt>``. Zdaj popravite
<tt>config.in</tt> in spremenite ,,<tt>y</tt>`` v ,,<tt>n</tt>`` in
nasprotno, kjer je primerno. Naredite:
<tscreen><verb>
&num; patch -p0 &lt; config.in.rej
</verb></tscreen>
in če <tt>patch</tt> sporoči, da mu je uspelo, lahko nadaljujete
nastavljanje in prevajanje.  Datoteka <tt>config.in.rej</tt> vam bo
ostala, a jo lahko zbrišete.
<p>
Če imate še vedno težave, ste morda namestili popravek prek
vrste. Če <tt>patch</tt> pravi ,,<tt>previously applied patch
detected: Assume -R?</tt>``, verjetno poskušate namestiti popravek, ki
je starejši od trenutne različice jedra; če odgovorite z
,,<tt>y</tt>``, bo <tt>patch</tt> poskušal podgraditi vašo izvirno
kodo in najverjetneje mu bo spodletelo. Potrebovali boste popolno
čisto novo drevo izvirne kode (kar je morda tako ali tako dobra
zamisel).
<p>
Za razveljavitev popravkov uporabite ukaz ,,<tt>patch -R</tt>`` na
prvotnem popravku.
<p>
Najbolje, kar lahko naredite, ko ne morete uporabiti
popravkov, je, da začnete znova s čistim drevesom izvirne kode (na
primer z eno od datotek <tt>linux-x.y.z.tar.gz</tt>) in znova
začnete.

<sect1>Kako se znebite datotek <tt>.orig</tt>
<p>
Po nekaj popravkih se bodo začele kopičiti datoteke <tt>.orig</tt>.
Npr. neko drevo jedra 1.1.51, ki sem ga nekoč imel, je bilo zadnjič
očiščeno pri različici 1.1.48. Odstranitev datotek <tt>.orig</tt> je
prihranila več kot pol megabajta.

Zadevo uredite z ukazom: 
<tscreen><verb>
&num; find . -name '*.orig' -exec rm -f {} ';'
</verb></tscreen>

Različice programa <tt>patch</tt>, ki uporabljajo <tt>&num;</tt> za
zavrnitvene datoteke, uporabljajo za podaljšek tildo
(,,<tt>.&tilde;</tt>``) namesto ,,<tt>.orig</tt>``.

Na voljo so tudi boljši načini za odpravo datotek <tt>.orig</tt>, ki
temeljijo na GNU <tt>xargs</tt>:
<tscreen><verb>
&num; find . -name '*.orig' | xargs rm
</verb></tscreen>
ali ,,precej varna, a malo bolj izčrpna`` metoda:
<tscreen><verb>
&num; find . -name '*.orig' -print0 | xargs --null rm --
</verb></tscreen>

<sect1>Drugi popravki 
<p>
Razen Linusovih so na voljo tudi drugi popravki (rekel jim bom
,,nestandardni``). Če jih uporabite, Linusovi popravki morda ne bodo
delovali pravilno in jih boste morali obnoviti, urediti izvirno kodo
popravka, namestiti novo drevo izvirne kode ali kombinacijo
naštetega. To lahko postane zelo naporno, zatorej, če ne želite
spreminjati izvirne kode (z morda slabim izidom), naredite rezervne
kopije nestandardnih popravkov, preden uporabite Linusove, ali le
namestite novo drevo. Potem lahko preverite, ali nestandardni popravki
delujejo. Če ne, morate ostati pri starem jedru in se igrati s
popravki ali izvirno kodo, da bi dosegli delovanje, ali čakati (morda
celo prosjačiti) za novo različico popravkov.
<p>
Kako pogosti so popravki, ki niso v standardnih distribucijah?
Verjetno boste slišali zanje. Jaz uporabljam popravek
<tt>noblink</tt> za navidezne zaslone, ker sovražim utripajoče
kazalce (ta popravek je (ali je vsaj bil redno osvežen ob vsaki novi
izdaji jedra). Z razvojem vse več novejših gonilnikov naprav kot
modulov pa se uporaba ,,nestandardnih`` popravkov znatno manjša.

<sect>Dodatni paketi<label id="additional_packages">
<p>
Vaše Linuxovo jedro ima vrsto odlik, ki niso pojasnjene v sami
izvirni kodi jedra; te posebnosti se navadno dosežejo z uporabo
zunanjih paketov. Tu naštevam nekaj najpogostejših.

<sect1>kbd
<p>
Linuxov zaslon (console) ima najbrž več zmožnosti, kot si jih zasluži
(op.: prevajalec se ne strinja). Med temi so možnost preklapljanja
znakov, preslikave tipkovnice, preklop video načinov (v novejših
jedrih) itd. V paketu kbd so programi, ki uporabniku omogočajo vse
to, in še veliko znakov in načrtov tipkovnic za skoraj vsako 
tipkovnico. 
Paket dobite na istih mestih kakor izvirno kodo jedra.

<sect1>util-linux
<p>
Rik Faith &lt;<tt><htmlurl url="mailto:faith@cs.unc.edu"
name="faith@cs.unc.edu"></tt>&gt; je sestavil veliko zbirko uporabnih
programov za Linux, ki se imenujejo util-linux. Trenutno jih vzdržuje
Andries Brouwer &lt;<tt><htmlurl url="mailto:util-linux@math.uio.no"
name="util-linux@math.uio.no"></tt>&gt;. Po anonimnem FTP dobite
na <tt><url url="ftp://metalab.unc.edu/pub/Linux/system/misc/"></tt>
programe, kot so <tt>setterm</tt>, <tt>rdev</tt> in
<tt>ctrlaltdel</tt>, ki se nanašajo na jedro. Kakor pravi Rik, ničesar
ne nameščajte, ne da bi prej premislili, ni vam treba nameščati
vsega in lahko imate resne težave, če boste namestili vse.

<sect1>hdparm
<p>
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 diskom pa se razširjajo posebej.

<sect1>gpm
<p>
gpm pomeni ,,splošno uporabna miška`` (ang. general purpose mouse).  S
tem programom lahko besedilo izrezujete in lepite z enega navideznega
zaslona na drugega in počnete še druge stvari s celo paleto različnih
mišk.

<sect>Nekatere pasti
<p>
<sect1>make clean
<p>
Če po rutinski nadgradnji jedro počne zares čudne reči, ste 
pred prevajanjem novega jedra morda pozabili napisati 
<tt>make clean</tt>. Simptomi so lahko karkoli, od zmrznjenega 
sistema, čudnih V/I problemov do slabega (počasnega) delovanja. 
Preverite tudi, ali ste ukazali <tt>make dep</tt>.

<sect1>Velika ali počasna jedra<label id="big_n_slow">
<p>
Če vaše jedro požira velike količine pomnilnika, je preveliko in/ali
le traja neskončno dolgo, da se prevede, čeprav imate nov procesor
Quadbazillium-III/440, ste najverjetneje vključili podporo veliko
nepotrebnih zadevščin (gonilnikov naprav, datotečnih sistemov itd.). Če
naprave ne uporabljate, je ne podprite v jedru, saj to zasede
pomnilnik. Najočitnejši simptom prenapihnjenega jedra je ekstremno
izmenjavanje pomnilnika z diskom sem ter tja; če se vaš disk nenehno
oglaša in ni eden tistih starih Fujitsujevih Eagles, katerih zvok
lahko primerjamo s pristajanjem reaktivnih letal, preglejte nastavitve
jedra.
<p>
Koliko pomnilnika zaseda jedro, izveste z odštevanjem vrednosti
,,total mem`` v izpisu <tt>/proc/meminfo</tt> ali z izhodom ukaza
,,<tt>free</tt>`` od količine vsega pomnilnika.

<sect1>Vzporedna vrata ne delujejo/tiskalnik ne deluje
<p>
Nastavitvene izbire za računalnike PC so: najprej v kategoriji splošnih
nastavitev (angl. General Setup) vključite podporo zaporednih vrat
(angl. Parallel port support) in strojno opremo osebnih računalnikov
(angl. PC-style hardware). Nato v Znakovnih napravah (angl.
Character devices) podprite tiskalnik na vzporednih vratih
(angl. Parallel printer support).
<p>
Potem so tu še imena. Linux 2.2 poimenuje tiskalniške naprave drugače
od prejšnjih izdaj. Posledica tega je, da napravi <tt>lp1</tt> v
vašem starem jedru v novem jedru verjetno ustreza naprava
<tt>lp0</tt>. Uporabite <tt>dmesg</tt> ali poglejte v dnevnik v
imeniku <tt>/var/log</tt> ter ugotovite novo ime.

<sect1>Jedro se ne prevede 
<p>
Če se ne prevede, je verjetno krivo to, da je popravek spodletel ali pa
je vaša izvirna koda nekako pokvarjena. Morda nimate prave različice
prevajalnika <tt>gcc</tt> ali pa je tudi z njim kaj narobe (na primer,
vključne datoteke so lahko napačne). Preverite, ali so simbolične
povezave, ki jih Linus priporoča v datoteki <tt>README</tt>, pravilno
izvedene. V splošnem, če se standardna jedra ne prevajajo, je nekaj
resno narobe s sistemom in vnovična namestitev nekaterih orodij je
neizogibna.
<p>
V nekaterih primerih lahko <tt>gcc</tt> odpove zaradi strojnih
težav. Sporočila o takih napakah so nekaj kot ,,xxx exited with
signal 15`` in so navadno videti zelo skrivnostno. Tega sploh ne bi
omenil, a se mi je nekoč zgodilo, da sem imel nekaj slabega
predpomnilnika in prevajalnik se je pritoževal povsem naključno. Če
imate težave, poskusite najprej znova namestiti gcc. Sumničavi
postanite samo, če se vaše jedro lepo prevede z izključenim zunanjim
predpomnilnikom, zmanjšano količino RAM ipd.
<p>
Ljudje so navadno vznemirjeni, ko izvejo, da bi lahko imeli tudi
težave s strojno opremo. Hja, tega si ne izmišljujem. Cel kup 
pogostih vprašanj je tudi na to temo -- najdete jih na <tt><url
url="http://www.bitwizard.nl/sig11/"></tt>.

<sect1>Novo jedro se noče zagnati
<p>
Niste pognali programa lilo ali pa ga niste pravilno nastavili.
Nekoč me je zafrkavala vrstica v konfiguracijski datoteki lila, ki
je bila ,,<tt>boot = /dev/hda1</tt>`` namesto ,,<tt>boot =
/dev/hda</tt>``. (To je lahko sprva zelo moteče, a ko imate enkrat
delujočo nastavitveno datoteko, vam je ni treba spreminjati.)

<sect1>Pozabili ste pognati lilo ali pa se sistem sploh ne zažene
<p>
Ojoj! Najboljše, kar lahko storite ta hip, je, da zaženete operacijski
sistem z diskete ali s plošče CD-ROM in potem pripravite še eno
zaganjalno disketo (kot bi jo naredil ukaz ,,<tt>make zdisk</tt>``).
Vedeti morate, kje je vaš korenski (<tt>/</tt>) datotečni sistem in
katere vrste je (npr. second extended, minix). V spodnjem primeru
morate vedeti tudi, v kakšnem datotečnem sistemu leži vaše drevo
izvirne kode <tt>/usr/src/linux</tt>, kakšne vrste je in kje je
navadno nameščen (z <tt>mount</tt>).
<p>
V naslednjem primeru je <tt>/</tt> enak <tt>/dev/hda1</tt> in
datotečni sistem, ki vsebuje <tt>/usr/src/linux</tt> na
<tt>/dev/hda3</tt>, navadno nameščen na <tt>/usr</tt>. Oba sta
datotečna sistema vrste ext2 (second extended). Delujoča slika jedra v
imeniku <tt>/usr/src/linux/arch/i386/boot</tt> se imenuje
<tt>bzImage</tt>.
<p>
Zamisel je taka, da uporabimo delujoče jedro <tt>zImage</tt> na novi
disketi. Še ena možnost, ki lahko deluje bolje ali pa tudi ne
(odvisno od konkretne metode, s katero ste zavozili svoj sistem), je
opisana za tem zgledom.
<p>
Najprej zaženite sistem s kombinacije disket boot in root ali z reševalne
diskete in namestite delujočo sliko jedra: 
<tscreen><verb>
&num; mkdir /mnt
&num; mount -t ext2 /dev/hda3 /mnt 
</verb></tscreen>
<p>
Če vam <tt>mkdir</tt> pravi, da imenik že obstaja, se ne
zmenite zanj. Zdaj pojdite z ukazom <tt>cd</tt> na imenik, v katerem je
delujoče jedro. Pozorni bodite na to, da je
<verb>
/mnt + /usr/src/linux/arch/i386/boot - /usr = /mnt/src/linux/arch/i386/boot
</verb>

V disketni pogon ,,A:`` vložite formatirano disketo (ne diskov
boot ali root!), prepišite sliko jedra na disketo in jo nastavite za 
svoj korenski datotečni sistem.
<tscreen><verb>
&num; cd /mnt/src/linux/arch/i386/boot 
&num; dd if=bzImage of=/dev/fd0 
&num; rdev /dev/fd0 /dev/hda1 
</verb></tscreen>

Naredite <tt>cd</tt> na <tt>/</tt> in odmestite običajni datotečni
sistem <tt>/usr</tt>:
<tscreen><verb>
&num; cd /
&num; umount /mnt
</verb></tscreen>

Zdaj lahko še enkrat zaženete sistem z nove diskete. Ne pozabite
tokrat po zagonu pognati <tt>lilo</tt> (ali karkoli je že bilo 
narobe)!

Kot smo omenili zgoraj, je možna še ena običajna pot. Če imate delujočo
sliko jedra v <tt>/</tt> (<tt>/vmlinuz</tt>, na primer), jo lahko
uporabite za zagonsko disketo. Če veljajo vsi zgoraj našteti pogoji
in je slika jedra <tt>/vmlinuz</tt>, izvedite te spremembe v zgoraj 
opisanem zgledu: spremenite <tt>/dev/hda3</tt> v <tt>/dev/hda1</tt>
(datotečni sistem <tt>/</tt>), <tt>/mnt/src/linux</tt> v
<tt>/mnt</tt>, in <tt>if=bzImage</tt> v <tt>if=vmlinuz</tt>. Opombo o
tem, kako dobimo <tt>/mnt/src/linux</tt>, lahko spregledate.

Uporaba programa lilo na velikih diskih (večjih od 1024 cilindrov)
lahko povzroča težave. Preberite lilo mini-HOWTO ali 
dokumentacijo lila, če potrebujete pomoč pri tem.

<sect1>Izpiše ,,<tt>warning: bdflush not running</tt>`` 
<p>
To je lahko resen problem. Od jedra izdaje po 1.0 (okoli 20. aprila
1994) se je program ,,<tt>update</tt>``, ki periodično izplakne vmesni
pomnilnik datotečnega sistema, posodabljal in nadomestil. Dobite
izvirno kodo ,,<tt>bdflush</tt>`` (najdete jo tam, kjer ste našli
jedro) in namestite ta program (verjetno boste medtem pognati vaš
sistem pod starim jedrom). Program se sam namesti kot
,,<tt>update</tt>`` in po vnovičnem zagonu se novo jedro ne bo več
pritoževalo.

<sect1>Mojega pogona CD-ROM IDE/ATAPI ne prepričam, da bi deloval
<p>
Čudno, a marsikdo ne more pripraviti pogona ATAPI do tega, da bi
deloval, verjetno zato, ker gre lahko marsikaj narobe.
<p>
Če je vaš CD-ROM edina naprava na konkretnem vmesniku IDE, morate
nastaviti skakače kot ,,master`` ali ,,single``. To je menda najpogostejša napaka.
<p>
Creative Labs (na primer) je postavil vmesnik IDE na zvočne
kartice. A posledica tega je, da imajo nekateri ljudje en
sam vmesnik, veliko jih ima dva vmesnika IDE na matičnih
ploščah (navadno na IRQ15), torej je splošna praksa označiti vmesnik
SoundBlasterja kot tretji vhod IDE (IRQ11, pravijo).
<p>
To pri Linuxu povzroča težave, saj različice 1.2.x ne podpirajo
tretjega vmesnika IDE (ta podpora je v serijah 1.3.x, a to je
razvojna različica, saj se spomnite, in ne izvaja avtomatskega
iskanja). Temu se lahko izognemo na več načinov.
<p>
Če že imate druga vrata IDE, jih morda ne uporabljate ali še nimajo na
sebi dveh naprav. Vzemite pogon ATAPI z zvočne kartice in ga povežite
na drugi vmesnik. Potem lahko onemogočite vmesnik zvočne kartice, kar
tako ali tako privarčuje IRQ.
<p>
Če nimate drugega vmesnika, nastavite skakač na vmesniku zvočne
kartice (ne na zvočnem delu zvočne kartice) kot IRQ15, drugi vmesnik.
Moralo bi delovati.

<sect1>Izpisuje čudne reči o zastarelih zahtevah za usmerjanje (obsolete routing requests)
<p>
Poiščite novo različico programa <tt>route</tt> in vseh drugih
usmerjevalnih programov. Datoteka <tt>/usr/include/linux/route.h</tt>
(ki je pravzaprav v imeniku <tt>/usr/src/linux</tt>) se je spremenila.

<sect1>Požarni zid ne deluje v 1.2.0
<p>
Nadgradite vsaj na različico 1.2.1. 

<sect1>,,<tt>Not a compressed kernel Image file</tt>`` (datoteka s sliko jedra ni stisnjena)
<p>
Ne uporabljajte datoteke <tt>vmlinux</tt>, ki je narejena v imeniku
<tt>/usr/src/linux</tt>, kot zaganjalno sliko;
<tt>[..]/arch/i386/boot/bzImage</tt> je prava datoteka.

<sect1>Težave z zaslonskim terminalom po nadgradnji na 1.3.x
<p>
Spremenite besedo <tt>dumb</tt> v <tt>linux</tt> v opisu zaslonskega 
terminala v datoteki <tt>/etc/termcap</tt>. Morda boste morali tudi
narediti nov zapis.

<sect1>Po nadgradnji jedra ne morem prevajati 
<p>
Izvirno kodo jedra Linuxa sestavljajo številne datoteke
(datoteke, ki se končujejo na <tt>.h</tt>), na katere se sklicujejo
standardne datoteke v imeniku <tt>/usr/include</tt>. Nanje se 

navadno sklicujemo takole (tu je <tt>xyzzy.h</tt> nekaj v imeniku
<tt>/usr/include/linux</tt>):
<tscreen><verb>
&num;include &lt;linux/xyzzy.h&gt;
</verb></tscreen>

Navadno je v imeniku <tt>/usr/include</tt> povezava, imenovana
<tt>linux</tt>, z imenikom <tt>include/linux</tt> vaše izvirne kode
jedra (<tt>/usr/src/linux/include/linux</tt> v tipičnem sistemu). Če
te povezave ni tam ali če kaže na napačen kraj, se večina stvari sploh
ne bo prevedla. Če ste se odločili, da zaseda izvirna koda jedra
preveč prostora na disku in ste jo zbrisali, je očitno v tem težava. 
Lahko pa je tudi kaj narobe z dovoljenji datotek; če ima vaš
<tt>root</tt> nastavitev umask, ki ne dovoljuje drugim uporabnikom, da
bi kot privzeto lahko gledali njegove datoteke, in ste izluščili
izvirno kodo jedra brez izbire <tt>p</tt> (ohrani datotečne načine),
ti uporabniki ne bodo mogli uporabljati prevajalnika za C. Čeprav
lahko uporabite ukaz <tt>chmod</tt> in to popravite, je verjetno laže
še enkrat izvleči vključene datoteke. To lahko storite enako, kot ste
storili na začetku z vso izvirno kodo, le z dodatnim argumentom:
<tscreen><verb>
&num; tar zxvpf linux.x.y.z.tar.gz linux/include
</verb></tscreen>

Opomba: ,,<tt>make config</tt>`` bo naredil povezavo
<tt>/usr/src/linux</tt>, če je še nimate.

<sect1>Povečanje omejitev
<p>

Naslednji zgled ukazov utegne koristiti tistim, ki se sprašujete,
kako povečati nekatere mehke omejitve, ki jih privzame jedro:
<tscreen><verb>
&num; echo 4096 &gt; /proc/sys/kernel/file-max
&num; echo 12288 &gt; /proc/sys/kernel/inode-max
&num; echo 300 400 500 &gt; /proc/sys/vm/freepages
</verb></tscreen>

<sect>Opomba o nadgradnji na različice 2.0.x, 2.2.x
<p>
Jedra različic 2.0.x in 2.2.x so uvedla precej sprememb pri 
namestitvi. Preberite si datoteko <tt>Documentation/Changes</tt> v drevesu
izvirne kode jedra in se naučite nadgraditi na
ta jedra. Verjetno boste morali nadgraditi veliko ključnih paketov,
kot so gcc, libc in SysVInit, in spremeniti veliko sistemskih datotek,
zato bodite na to pripravljeni. A brez panike, prosim.

<sect>Moduli<label id="moduls">
<p>
Nalagalni moduli lahko prihranijo pomnilnik in poenostavijo
konfiguracijo. Domet modulov je razširjen na datotečne sisteme,
gonilnike omrežnih kratic, tračnih enot, tiskalnikov in še več.

<sect1>Namestitev modulskih pripomočkov
<p>
Modulski pripomočki so na voljo, kadarkoli dobite izvirno kodo vašega
jedra kot <tt>modutils-x.y.z.tar.gz</tt>; izberite najvišjo številko
različice <tt>x.y.z</tt>, ki je enaka vašemu jedru ali manjša.
Odpakirajte jih z ,,<tt> tar zxvf modutils-x.y.z.tar.gz</tt>``, pojdite
s <tt>cd</tt> na imenik, ki ga ustvari <tt>tar</tt>
(<tt>modutils-x.y.z</tt>), preglejte datoteko <tt>README</tt> in
upoštevajte navodila (kar je navadno preprosto, denimo
<tt>make install</tt>). Zdaj morate imeti programe <tt>insmod</tt>,
<tt>rmmod</tt>, <tt>ksyms</tt>, <tt>lsmod</tt>, <tt>genksyms</tt>,
<tt>modprobe</tt> in <tt>depmod</tt> v imeniku <tt>/sbin</tt>. Če
želite, lahko preskusite pripomočke s preizkuševalnim gonilnikom
,,hw`` v programu <tt>insmod</tt>; preberite si datoteko <tt>INSTALL</tt>
v tem podimeniku, če vas zanimajo podrobnosti.
<p>
<tt>insmod</tt> vključi modul v tekoče jedro. Moduli imajo navadno
podaljšek <tt>.o</tt>; preizkuševalni gonilnik, omenjen zgoraj, se
imenuje <tt>drv_hello.o</tt>, torej morate napisati ,,<tt>insmod
drv_hello.o</tt>``, če ga želite vključiti. Module, ki jih jedro 
trenutno uporablja, lahko izpišete z <tt>lsmod</tt>. Izhod je videti takole:
<tscreen><verb>
blah:&num; lsmod 
Module:    &num;pages: Used by: 
drv_hello     1
</verb></tscreen>

,,<tt>drv_hello</tt>`` je ime modula, uporablja eno stran (4 KB)
pomnilnika in noben drug jedrni modul trenutno ni odvisen od njega. Ta
modul odstranite z ukazom ,,<tt>rmmod drv_hello</tt>``. Paziti morate,
ker hoče <tt>rmmod</tt> ime modula, ne imena datoteke; dobite ga z
izpisom <tt>lsmod</tt>. Nameni drugih modulskih pripomočkov so našteti
v njihovih referenčnih priročnikih (npr. <tt>man ksyms</tt>).

<sect1>Moduli, distribuirani poleg jedra
<p>
Od različice 2.0.30 je večina dostopna kot nalagalni modul. Če
jih želite uporabiti, morate nastaviti podatke o njih v običajnem
jedru; to se pravi, ne odgovorite ,,<tt>y</tt>`` med ,,<tt>make
config</tt>``, temveč ,,<tt>m</tt>``. Prevedite novo jedro in z njim
zaženite sistem. Potem naredite ,,<tt>cd /usr/src/linux</tt>`` in
ukažite ,,<tt>make modules</tt>``. To prevede vse module, ki jih
niste že navedli v konfiguraciji jedra, in v imenik
<tt>/usr/src/linux/modules</tt> namesti povezave do njih. Uporabite
jih lahko v tem imeniku ali pa izvedete ,,<tt>make
modules_install</tt>`` ter jih s tem namestite v imenik
<tt>/lib/modules/x.y.z</tt>, kjer je <tt>x.y.z</tt> številka izdaje
jedra.
<p> 
To je lahko še posebno uporabno pri datotečnih sistemih. Morda ne
uporabljate pogosto datotečnih sistemov minix in/ali msdos. Na primer,
kadar dobim dosovsko (brrr) disketo, naredim <tt>insmod
/usr/src/linux/modules/msdos.o</tt>, in potem <tt>rmmod msdos</tt>, ko
opravim z njo. Ta postopek privarčuje okoli 50 KB RAM v jedru med
normalnim delovanjem. Pri datotečnem sistemu minix ne bo odveč drobna
pripomba: vedno ga podprite neposredno v jedru, da boste lahko
uporabljali ,,reševalne`` diskete.

<sect>Nasveti in triki<label id="tips_n_tricks">
<p>
<sect1>Preusmeritev izhoda ukazov <tt>make</tt> in <tt>patch</tt>
<p>
Če želite videti, kaj je naredil ukaz ,,<tt>make</tt>`` ali
,,<tt>patch</tt>``, lahko preusmerite standardni izhod programa v
datoteko. Najprej ugotovite, katero ukazno lupino uporabljate:
,,<tt>grep root /etc/passwd</tt>``, in glejte nekaj podobnega temu:
,,<tt>/bin/csh</tt>``.

Če uporabljate <tt>sh</tt> ali <tt>bash</tt>, boste takole preusmerili
izhod ukaza <em>(ukaz)</em> v datoteko <em>(izhodna_datoteka)</em>:
<tscreen><verb>
&num; (ukaz) 2&gt;&amp;1 | tee (izhodna_datoteka)
</verb></tscreen>

Za <tt>csh</tt> ali <tt>tcsh</tt> uporabite:
<tscreen><verb>
&num; (ukaz) |&amp; tee (izhodna_datoteka)
</verb></tscreen>

Za lupino <tt>rc</tt> (verjetno je ne uporabljate) je ustrezen ukaz 
<tscreen><verb>
&num; (ukaz) &gt;[2=1] | tee (izhodna_datoteka)
</verb></tscreen>

<sect1>Pogojna namestitev jedra 
<p>
Poleg rabe disket je še več metod preizkušanja novega jedra, ne
da bi se dotaknili starega. Za razliko od številnih Unixov je lilo
sposoben zagnati jedro s kateregakoli mesta na disku (če imate disk,
večji od 500 MB, preberite dokumentacijo lila, kako preprečiti
težave). Če torej na konec konfiguracijske datoteke dodaste nekaj
podobnega:
<tscreen><verb>
image = /usr/src/linux/arch/i386/boot/bzImage
  label = new_kernel
</verb></tscreen>,

lahko izberete zagon novega jedra, ne da bi se dotaknili starega
jedra <tt>/vmlinuz</tt> (seveda morate še pognati
<tt>lilo</tt>). Najpreprostejši zagon novega jedra je, da
pritisnete ob zagonu tipko Shift (ko se na zaslonu izpiše
<tt>LILO</tt> in nič drugega), kar vam da pozivnik. Zdaj lahko vnesete
,,<tt>new_kernel</tt>`` in zagnalo se bo novo jedro.

Če želite obdržati več dreves izvirne kode različnih jeder (to lahko
sicer zasede veliko diskovnega prostora), je najpogostejši način ta,
da jih preimenujete v <tt>/usr/src/linux-x.y.z</tt>, pri čemer je
<tt>x.y.z</tt> različica jedra. Potem lahko ,,izberete`` drevo izvirne
kode s simbolično povezavo, npr. ,,<tt>ln -sf linux-1.2.2
/usr/src/linux</tt>`` naredi drevo 1.2.2 za trenutno aktualno. 
Preden naredite to simbolično povezavo, preverite, ali
 zadnji argument 
programu <tt>ln</tt> ni pravi imenik (stare simbolične
povezave so v redu); rezultat ne bo tak, kakor bi želeli.

<sect1>Nadgradnje jedra
<p>
Russell Nelson &lt;<tt>nelson@crynwr.com</tt>&gt; zbira spremembe v
novih izdajah jedra. Te so kratke, lahko si jih ogledate, preden
nadgradite jedro. Najdete jih na <tt><url
url="ftp://ftp.emlist.com/pub/kchanges/"></tt> ali v svetovnem
spletu na naslovu <tt>url url="http://www.crynwr.com/kchanges"></tt>.

<sect>Drugi HOWTO, ki bi lahko bili uporabni
<p>
<itemize>
<item><tt>Sound-HOWTO</tt>: zvočne kartice in pripomočki,
<item><tt>SCSI-HOWTO</tt>: vse o krmilnikih in napravah SCSI,
<item><tt>NET-2-HOWTO</tt>: omreženost,
<item><tt>PPP-HOWTO</tt>: omreženost s PPP še posebej, 
<item><tt>PCMCIA-HOWTO</tt>: o gonilnikih za notes, 
<item><tt>ELF-HOWTO</tt>: ELF: kaj je prenos, 
<item><tt>Hardware-HOWTO</tt>: pregled podprte strojne opreme, 
<item><tt>Module mini-HOWTO</tt>: več o modulih jedra, 
<item>Kerneld mini-HOWTO: o demonu <tt>kerneld</tt>, 
<item>BogoMips mini-HOWTO: če se slučajno sprašujete. 
</itemize>

<sect>Razno
<p>
<sect1>Avtor
<p>
Avtor in vzdrževalec priročnika Linux Kernel-HOWTO je Brian Ward
&lt;<tt><htmlurl url="mailto:bri@cs.uchicago.edu"
name="bri@cs.uchicago.edu"></tt>&gt;. Prosim, pošiljajte mi morebitne
pripombe, dodatke, popravke (ti so zame najpomembnejši).
<p>
Mojo domačo stran najdete na enem od teh dveh URL:
<itemize>
<item><tt><url url="http://www.math.psu.edu/bri/"></tt>
<item><tt><url url="http://blah.math.tu-graz.ac.at/~bri/"></tt>
</itemize>

Čeprav se trudim odgovoriti čisto vsakomur, vedite, da prejmem vsak
dan veliko pošte, zato bo lahko trajalo dolgo, preden boste dobili moj
odgovor. Kadar me pisno kaj sprašujete, bodite čim bolj jasni in
podrobni. Če pišete o nedelujoči strojni opremi (ali čem podobnem),
moram vedeti, kakšna je vaša celotna strojna konfiguracija. Če
poročate o napaki, ne recite le ,,Poskusil sem to in to, pa mi je
sporočilo napako``; vedeti moram tudi, za katero napaka je šlo. Vedeti
želim tudi za različico jedra, prevajalnika gcc in knjižnice libc, ki
jih uporabljate. Če mi poveste, da uporabljate to-in-to distribucijo,
mi s tem ne boste povedali kaj dosti. Ne moti me, če vprašate kaj
preprostega; če ne boste vprašali, potem tudi nikoli ne boste
izvedeli, kar vas zanima! Želim se zahvaliti vsem, ki so mi
posredovali povratne informacije.
<p>
Če vaše vprašanje ni povezano z jedrom ali je v jeziku, ki ga ne
razumem, vam morda ne bom odgovoril.
<p>
Če ste mi pisali in vam nisem odgovoril v razumnem roku
(trije tedni ali več), sem vaše sporočilo morda pomotoma zbrisal ali
kaj takega (oproščam se za to). Prosim, poskusite znova.
<p>
Pogosto mi pišejo o stvareh v zvezi s strojno
opremo. S tem ni nič narobe, vendar morate vedeti, da ne poznam 
vse strojne opreme tega sveta. Osebno uporabljam procesorje
AMD, krmilnike SCSI izdelovalcev Adaptec in Sybios ter diske SCSI
znamke IBM.
<p>
Različica -0.1 angleškega izvirnika je bila napisana 3. oktobra 1994.
Izvirnik je dostopen kot SGML, postscript, TeX, roff in kot navadno 
besedilo.
<p>
Avtor slovenskega prevoda z dne 24. julija 1999 je Roman Maurer
&lt;<tt><htmlurl url="mailto:roman.maurer@hermes.si"
name="roman.maurer@hermes.si"></tt>&gt;. Prosim, pošljite mi morebitne
pripombe na prevod. Slovenski prevod je dostopen kot SGML DTD
LinuxDoc, HTML, DVI, PDF, postscript in navadno besedilo v strežniku
slovenskega Društva uporabnikov Linuxa na imeniku
<url url="ftp://ftp.lugos.si/pub/lugos/doc/HOWTO-sl/">
ali spletnem naslovu
<url url="http://www.lugos.si/delo/slo/HOWTO-sl/Kernel-HOWTO-sl.html">.

<sect1>Narediti
<p>
Razdelek <ref id="tips_n_tricks" name=",,Nasveti in zvijače``"> je bolj
kratek. Upam, da ga bom razširil s predlogi drugih ljudi.
<p>
Enako velja za razdelek <ref id="additional_packages" name=",,Dodatni
paketi``">.
<p>
Potrebujemo več podatkov o razhroščevanju/odpravljanju posledic
sesutja sistema.

<sect1>Prispevki
<p>
Vključen je majhen del Linusove datoteke <tt><htmlurl
url="file:/usr/src/linux/README" name="README"></tt> (izbire za
hekiranje jedra). (Hvala, Linus!)

<itemize>
<item><tt><htmlurl url="mailto:uc@brian.lunetix.de"
name="uc@brian.lunetix.de"></tt> (Ulrich Callmeier): <tt>patch -s</tt>
in <tt>xargs</tt>,

<item><tt><htmlurl url="mailto:quinlan@yggdrasil.com"
name="quinlan@yggdrasil.com"></tt> (Daniel Quinlan): popravki in
dodatki več razdelkov,

<item><tt><htmlurl url="mailto:nat@nataa.fr.eu.org"
name="nat@nataa.fr.eu.org"></tt> (Nat Makarevitch): <tt>mrproper</tt>,
<tt>tar -p</tt>, več drugih reči,

<item><tt><htmlurl url="mailto:boldt@math.ucsb.edu"
name="boldt@math.ucsb.edu"></tt> (Axel Boldt): po omrežju je zbral
opise konfiguracijskih izbir jedra; potem mi je poslal seznam,

<item><tt><htmlurl url="mailto:lembark@wrkhors.psyber.com"
name="lembark@wrkhors.psyber.com"></tt> (Steve Lembark): predlog
različnega zaganjanja,

<item><tt><htmlurl url="mailto:kbriggs@earwax.pd.uwa.edu.au"
name="kbriggs@earwax.pd.uwa.edu.au"></tt> (Keith Briggs): nekateri
popravki in predlogi,

<item><tt><htmlurl url="mailto:rmcguire@freenet.columbus.oh.us"
name="rmcguire@freenet.columbus.oh.us"></tt> (Ryan McGuire): dodatki
ciljev <tt>make</tt>,

<item><tt><htmlurl url="mailto:dumas@excalibur.ibp.fr"
name="dumas@excalibur.ibp.fr"></tt> (Eric Dumas): francoski prevod,

<item><tt><htmlurl url="mailto:simazaki@ab11.yamanashi.ac.jp"
name="simazaki@ab11.yamanashi.ac.jp"></tt> (Yasutada Shimazaki):
japonski prevod,

<item><tt><htmlurl url="mailto:jjamor@lml.ls.fi.upm.es"
name="jjamor@lml.ls.fi.upm.es"></tt> (Juan Jose Amor Iglesias):
španski prevod,

<item><tt><htmlurl url="mailto:mva@sbbs.se" name="mva@sbbs.se"></tt>
(Martin Wahlen): švedski prevod,

<item><tt><htmlurl url="mailto:jzp1218@stud.u-szeged.hu"
name="jzp1218@stud.u-szeged.hu"></tt> (Zoltan Vamosi): madžarski
prevod,

<item><tt><htmlurl url="mailto:bart@mat.uni.torun.pl"
name="bart@mat.uni.torun.pl"></tt> (Bartosz Maruszewski): poljski
prevod,

<item><tt><htmlurl url="mailto:roman.maurer@hermes.si"
name="roman.maurer@hermes.si"></tt> (Roman Maurer): slovenski
prevod,

<item><tt><htmlurl url="mailto:donahue@tiber.nist.gov"
name="donahue@tiber.nist.gov"></tt> (Michael J. Donahue): tipkarske
napake, zmagovalec ,,tekmovanja narezanega kruha``,

<item><tt><htmlurl url="mailto:rms@gnu.ai.mit.edu"
name="rms@gnu.ai.mit.edu"></tt> (Richard Stallman): zamisel in
distribucija ,,proste`` dokumentacije,

<item><tt><htmlurl url="mailto:dak@Pool.Informatik.RWTH-Aachen.DE"
name="dak@Pool.Informatik.RWTH-Aachen.DE"></tt> (David Kastrup):
reč o NFS,

<item><tt><htmlurl url="mailto:esr@snark.thyrsus.com"
name="esr@snark.thyrsus.com"></tt> (Eric Raymond): različni delčki.
</itemize>

Pomagali so mi tudi vsi tisti, ki so mi po pošti posredovali svoja
vprašanja in težave.

<sect1>Pravice razširjanja, licenca in podobno
<p>
Copyright &copy; Brian Ward, 1994--1999.
<p>
Dovoljeno je izdelovati in razširjati kopije tega priročnika, če
ostaneta v njih nespremenjeni opomba o pravicah razširjanja 
in tale opomba o dovoljenju.
<p>
Dovoljeno je kopirati in razširjati spremenjene različice tega
priročnika pod pogoji za dobesedno kopiranje, če se izpeljano delo
razširja z enako opombo o dovoljenju. Prevodi sodijo v kategorijo
,,spremenjenih različic``.
<p>
Garancija: Ni je.
<p>
Priporočila: Komercialno razširjanje je dovoljeno in celo zaželeno;
vendar se močno priporoča, da se distributer poveže z avtorjem še pred
distribucijo, da bi obdržali stvari osvežene (lahko mi pošljete tudi
kopijo tistega, kar izdelujete, če ste že pri tem).  Avtor svetuje
tudi prevajalcem, naj stopijo v stik z njim, preden se lotijo
prevajanja. Natisnjene različice so videti bolje.  Lahko jih
recikliramo.

</article>
