Jedro Linuxa, HOWTO
Brian Ward,
[email protected]
v1.0, 5. junij 1999
To je slovenski prevod datoteke Kernel-HOWTO, podrobnega vodnika nas�
tavitev jedra operacijskega sistema Linux, prevajanja, nadgradnje in
odpravljanja problemov za sisteme s procesorji ix86.
______________________________________________________________________
Kazalo
1. Uvod
1.1 Najprej preberite tole! (In to res mislim!)
1.2 O stilu
2. Pomembna vpra�anja in njihovi odgovori
2.1 Kaj pravzaprav sploh po�ne jedro?
2.2 Zakaj bi si �eleli nadgraditi svoje jedro?
2.3 Katero strojno opremo podpirajo nova jedra?
2.4 Katero razli�ico prevajalnika gcc in knji�nice libc potrebujem?
2.5 Kaj je nalagalni modul (loadable module)?
2.6 Koliko prostora potrebujem na disku?
2.7 Kako dolgo traja?
3. Kako zares sestaviti jedro
3.1 Nabava izvorne kode
3.2 Odpakiranje izvorne kode
3.3 Nastavitev jedra
3.3.1 Kernel math emulation (Processor type and features)
3.3.2 Enhanced (MFM/RLL) disk and IDE disk/cdrom support
(Block Devices)
3.3.3 Networking support (General Setup)
3.3.4 System V IPC (General Setup)
3.3.5 Processor family (Processor type and features)
3.3.6 SCSI support
3.3.7 Network device support
3.3.8 Filesystems
3.3.8.1 Vendar jaz ne vem, katere datote�ne sisteme potrebujem!
3.3.9 Character devices
3.3.10 Sound
3.3.11 Druge nastavitvene mo�nosti
3.3.12 Kernel hacking
3.4 Pa zdaj? (Datoteka Makefile)
4. Prevajanje jedra
4.1 �i��enje in urejanje odvisnosti
4.2 �as za prevajanje
4.3 Drugi cilji ,,make``
4.4 Namestitev jedra
5. Popravljanje jedra
5.1 Uporaba popravka
5.2 �e se kje zalomi
5.3 Kako se znebite datotek .orig
5.4 Drugi popravki
6. Dodatni paketi
6.1 kbd
6.2 util-linux
6.3 hdparm
6.4 gpm
7. Nekatere pasti
7.1 make clean
7.2 Velika ali po�asna jedra
7.3 Vzporedna vrata ne delujejo/tiskalnik ne deluje
7.4 Jedro se ne prevede
7.5 Novo jedro se no�e zagnati
7.6 Pozabili ste pognati LILO, ali pa se sistem sploh ne za�ene
7.7 Izpi�e ,,warning: bdflush not running``
7.8 Mojega CD-ROM-a IDE/ATAPI ne prepri�am, da bi deloval
7.9 Izpisuje �udne re�i o zastarelih zahtevah za usmerjanje
(obsolete routing requests)
7.10 Po�arni zid ne deluje v 1.2.0
7.11 ,,Not a compressed kernel Image file`` (datoteka s sliko
jedra ni komprimirana)
7.12 Te�ave z zaslonskim terminalom po nadgradnji na 1.3.x
7.13 Po nadgradnji jedra ne morem prevajati zadev
7.14 Pove�anje omejitev
8. Opomba o nadgradnji na razli�ice 2.0.x, 2.2.x
9. Moduli
9.1 Namestitev modulskih pripomo�kov
9.2 Moduli, distribuirani poleg jedra
10. Nasveti in triki
10.1 Preusmeritev izhoda ukazov make in patch
10.2 Pogojna in�talacija jedra
10.3 Nadgradnje jedra
11. Ostali HOWTO-ji, ki bi lahko bili uporabni
12. Razno
12.1 Avtor
12.2 Narediti
12.3 Prispevki
12.4 Pravice raz�irjanja, licenca, in te stvari
______________________________________________________________________
1. Uvod
Naj sploh berete ta dokument? No, poglejte, �e imate katerega od
na�tetih simptomov:
* ,,Aaa! Tale paket wizzo-46.5.6 pravi, da potrebuje jedro izdaje
vsaj 2.8.193, jaz pa imam �e vedno izdajo 1.0.9!``
* V enem novej�ih jeder je gonilnik za neko napravo, ki ga preprosto
morate imeti.
* Nimate najmanj�ega pojma, kako prevesti jedro.
* ,,Je stvar v datoteki README res vsa zgodba?``
* Pri�li ste, poskusili, ni delovalo.
* Potrebujete nekaj, kar bi dali ljudem, ki vas mu�ijo s pro�njami,
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 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 mount med normalnim delovanjem sistema (ali izpis
datoteke /etc/fstab, �e ga znate brati). Te informacije so pomembne
in se ne spreminjajo, razen, �e razparcionirate svoj disk, dodate
novega, ponovno namestite svoj sistem, ali kaj podobnega.
Zadnja stabilna razli�ica jedra je bila v �asu pisanja tega spisa
2.2.9, torej se sklicevanja in primeri nana�ajo na to izdajo. �eprav
posku�am narediti ta spis karseda neodvisen od razli�ice, se jedro
nenehno razvija, torej bo novej�a razli�ica neizogibno vsebovala nekaj
sprememb. To vam ne bi smelo povzro�ati ve�jih te�av, lahko pa vas
malce zmede.
Obstajata dve razli�ici izvorne kode jedra Linuxa; stabilna (angl.
,,production``) in razvojna (angl. ,,development``). Stabilne izdaje
imajo sodo malo �tevilo: 1.2.x je bila stabilna, 2.0.x prav tako, in
tudi 2.2.x. Ta jedra se smatrajo za najbolj stabilne in razhro��ene
razli�ice v �asu njihove izdaje. Razvojna jedra (2.1.x, 2.3.x itd.)
so jedra, namenjena preizku�anju, za ljudi, ki bi radi preizkusili
nova in morda zelo hro��ata jedra. Bili ste opozorjeni!
1.2. O stilu
Besedilo, ki je videti takole je nekaj, kar se prika�e na va�em
zaslonu, ime datoteke ali nekaj, kar lahko neposredno vtipkate, na
primer ukaz ali izbire pri ukazu (�e gledate tekstovno razli�ico tega
spisa, zgornje besedilo ne izgleda ni� druga�e). Ukazi in drugi vnosi
so pogosto citirani (z ,, ``), v slovenskem prevodu takole: ,,make
config``.
2. Pomembna vpra�anja in njihovi odgovori
2.1. Kaj pravzaprav sploh po�ne jedro?
Jedro Unixa deluje kot posrednik med va�imi programi in strojno
opremo. Najprej, dela (ali poskrbi za) upravljanje s pomnilnikom za
vse teko�e programe (procese) in poskrbi, 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.
Gotovo ima jedro ve� dol�nosti kot samo ti dve, a najpomembneje je, da
poznate ti, osnovni.
2.2. Zakaj bi si �eleli nadgraditi svoje jedro?
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 kot starej�e razli�ice,
so bolj stabilna od starej�ih razli�ic in odpravijo neumne hro��e v
starej�ih razli�icah. Ve�ina ljudi nadgradi jedra, ker �elijo
gonilnike naprav in popravke hro��ev.
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 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.
2.4. Katero razli�ico prevajalnika gcc in knji�nice libc potrebujem?
Linus priporo�a razli�ico gcc v datoteki README, prilo�eni izvorni
kodi Linuxa. �e nimate te razli�ice, vam dokumentacija poleg
priporo�ene razli�ice gcc pove, �e morate nadgraditi knji�nico libc.
To ni te�ko opravilo, pomembno pa je, da sledite navodilom.
2.5. Kaj je nalagalni modul (loadable module)?
To so del�ki kode jedra, ki niso povezani (vklju�eni) direktno 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�en na�in za uporabo dolo�enih lastnosti jedra. Mnogi
popularni gonilniki, na primer gonilniki za PCMCIA in za tra�no enoto
QIC-80/40, so nalagalni moduli.
2.6. Koliko prostora potrebujem na disku?
Odvisno od va�e konkretne konfiguracije sistema. Komprimirana izvorna
koda Linuxa razli�ice 2.2.9 je velika pribli�no 14 MB. Ve�ina
ra�unalnikov jo obdr�i tudi po odpakiranju. Odpakirana in zgrajena
izvorna koda jedra za povpre�no sestavo zasede dodatnih 67 MB.
2.7. Kako dolgo traja?
Na novej�ih strojih traja prevajanje znatno manj �asa kot na
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 na starih
ra�unalnikih Pentium, 486 in 386, bodite pripravljeni �akati, morda
ure ali celo dneve ...
�e vas to moti in imate na voljo tudi hitrej�i stroj, na katerem lahko
prevajate, lahko gradite jedro na hitrej�ih strojih (�e podate
pravilna dolo�ila, �e so va�i pripomo�ki osve�eni, in tako naprej) in
potem prenesete sliko jedra na po�asnej�i stroj.
3. Kako zares sestaviti jedro
3.1. Nabava izvorne kode
Izvorno kodo lahko dobite po anonimnem FTP-ju s stre�nika
ftp.kernel.org v imeniku /pub/linux/kernel/vx.y, kjer je x.y razli�ica
(npr. 2.2), in kot je bilo �e omenjeno, so lahko razvojne razli�ice
jedra, ozna�ene z lihimi kon�nimi �tevilkami, nestabilne. Izvorna
koda jedra je navadno ozna�ena kot linux-x.y.z.tar.gz, kjer je x.y.z
�tevilka razli�ice. Stre�niki navadno premorejo tudi datoteke s
podalj�kom .bz2, ki so bile stisnjene s pripomo�kom bzip2 (te datoteke
bodo manj�e, zato bo za njihov prenos potrebno manj �asa).
Najbolj�e bo, �e za prenos uporabite ftp.xx.kernel.org, kjer je xx
koda va�e dr�ave; v Sloveniji boste tako uporabili ftp.si.kernel.org,
v Avstriji ftp.at.kernel.org, v Zdru�enih dr�avah Amerike pa
ftp.us.kernel.org.
3.2. Odpakiranje izvorne kode
Prijavite se kot ,,root`` (ali pa uporabite ukaz su) in s cd
spremenite imenik na /usr/src. �e ste ob prvi namestitvi Linuxa
namestili tudi izvorno kodo jedra (ve�ina jih stori tako), bo tam �e
imenik ,,linux``, ki vsebuje celotno staro drevo izvorne kode. �e
imate dovolj diskovnega prostora in bi se radi po�utili varno,
ohranite ta imenik. Dobra ideja je, da izveste razli�ico sistema, ki
jo trenutno uporabljate, in ustrezno preimenujete imenik. Trenutno
razli�ico jedra izveste z ukazom ,,uname -r``. �e torej ,,uname -r``
pravi ,,1.0.9``, boste preimenovali (z ,,mv``) ,,linux`` v
,,linux-1.0.9``. �e se po�utite malo bolj lahkomiselne, preprosto
pobri�ite celoten imenik. V vsakem primeru se prepri�ajte, da v
/usr/src nimate imenika ,,linux``, preden odpakirate celotno izvorno
kodo.
Zdaj v imeniku /usr/src odpakirajte izvorno kodo z ukazom ,,tar zxpvf
linux-x.y.z.tar.gz`` (�e imate samo datoteko .tar brez kon�nega .gz pa
z ukazom ,,tar xpvf linux-x.y.z.tar``). Na zaslonu boste videli
izpisane datoteke izvorne kode. Ko tar kon�a, boste imeli nov imenik
/usr/src/linux. Naredite cd v linux in preberite datoteko README.
Nekje bo razdelek z naslovom ,,INSTALLING the kernel`` (,,NAMESTITEV
jedra``). Upo�tevajte navodila, kjer je to primerno - simbolne
povezave, ki morajo biti na pravih mestih, brisanje ostalih datotek .o
itd.
�e imate datoteko .bz2 in pripomo�ek bzip2 (ve� o tem preberite na
<
http://www.muraroa.demon.co.uk/>), naredite tole:
bz2cat linux-x.y.z.tar.bz2 | tar xvf -
3.3. Nastavitev jedra
Opomba: Nekaj tega je reiteracija/razjasnitev podobnega razdelka v
Linusovi datoteki README.
Ukaz ,,make config`` v imeniku /usr/src/linux po�ene nastavitveni
skript, ki vas vpra�a veliko vpra�anj. Potrebuje ukazno lupino bash,
zato preverite, �e ta obstaja v /bin/bash, /bin/sh, ali $BASH.
Verjetno boste raje uporabljali katero od alternativ ukazu ,,make
config``. Tisti, ki poganjate grafi�ni sistem X, lahko poskusite
,,make xconfig``, �e imate name��en programski paket Tk (,,klik-o-
rama`` - Nat). ,,make menuconfig`` je za tiste, ki imate (n)curses in
bi radi imeli tekstovne menuje. Ta dva vmesnika imata bistveno
prednost pred standardnim: �e zamo�ite in med konfiguracijo izberete
napa�no izbiro, lahko greste nazaj in zadevo popravite.
Z uporabo ,,make menuconfig`` ali ,,make xconfig`` bodo nastavitvene
izbire urejene hierarhi�no.
Pripravljeni ste na odgovarjanje nekaj vpra�anj, navadno z ,,y`` (da)
ali ,,n`` (ne). Gonilnik naprav imajo tipi�no izbiro ,,m``. Ta pomeni
,,modul``, se pravi, da ga bo sistem prevedel, ne pa tudi vklju�il
neposredno v jedro. Na voljo bo kot nalagalni modul. Bolj duhovit
na�in za opis te izbire bi bil ,,mogo�e``. Nekatere bolj o�itne in
ne-kriti�ne izbire tukaj niso opisane; glejte razdelek ``,,Druge
nastavitvene izbire``'' za kratek opis nekaterih posameznih izbir.
Pri ,,make menuconfig`` s presledkom spreminjate izbiro.
V jedrih 2.0.x in poznej�ih je na voljo tudi izbira ,,?``, ki poda
kratek opis posameznega nastavitvenega parametra. Ta informacija je
verjetno najbolj sve�a. Tukaj je seznam nekaterih najpomembnej�ih
odlik, s hierarhijo, v kateri jih najdete, in kratkim opisom.
3.3.1. Kernel math emulation (Processor type and features)
[ Emulacija matemati�nih operacij v jedru (Vrsta in lastnosti
procesorja) ]
�e nimate matemati�nega koprocesorja (imate le goli procesor 386 ali
486SX), morate tukaj re�i ,,y``. �e imate koprocesor in re�ete ,,y``,
ne skrbite preve� - koprocesor se bo �e vedno uporabljal, emulacija pa
ignorirala. Za vsak napol sodoben stroj bo odgovor ,,ne``, a ne
skrbite, �e boste pomotoma rekli ,,da``; �e emulacija ni potrebna, se
ne uporablja.
3.3.2. Enhanced (MFM/RLL) disk and IDE disk/cdrom support (Block
Devices)
[ Podpora izbolj�anim diskom (MFM/RLL) in diskom/CD-ROM-om tipa IDE
(Blokovne naprave) ]
Verjetno morate to podpreti; pomeni, da bo jedro podpiralo standardne
trde diske, ki jih najdemo v osebnih ra�unalnikih ve�ine ljudi. Ta
gonilnik ne vklju�uje pogonov SCSI; v nastavitvah pridejo ti na vrsto
kasneje.
Nastavitveni program vas bo nato vpra�al ali �elite podporo le starim
diskom (,,old disk-only``) in novim diskom IDE (,,new IDE``). Izbrati
morate eno od teh mo�nosti; glavna razlika je v tem, da stari gonilnik
podpira le dva diska na enem vmesniku, medtem ko novi podpira drugi
vmesnik in CD-ROM-e IDE/ATAPI. Novi gonilnik je 4 KB ve�ji od
starej�ega in naj bi bil ,,izpopolnjen``, kar pomeni, da poleg
vsebovanja razli�nega �tevila hro��ev verjetno tudi izbolj�a obna�anje
va�ega diska, posebej, �e imate novej�o strojno opremo tipa EIDE.
3.3.3. Networking support (General Setup)
[ Omre�na podpora (Splo�ne nastavitve) ]
Tukaj boste zelo verjetno rekli ,,y``, saj �elite, da bo va�
ra�unalnik omre�en na Internet ali da bo dostopal vanj preko SLIP,
PPP, term itd., torej s klicnim dostopom. Vendar, ker veliko paketov
(kot na primer sistem X window) potrebuje omre�no podporo tudi, �e va�
ra�unalnik ne �ivi v pravem omre�ju, boste tukaj vseeno rekli ,,y``.
Pozneje vas bo program vpra�al, �e �elite omre�no podporo protokolu
TCP/IP; spet boste odgovorili z ,,y``, �e niste absolutno prepri�ani v
nasprotno.
3.3.4. System V IPC (General Setup)
[ Medprocesna komunikacija Systema V (Splo�ne nastavitve) ]
Ena najbolj�ih definicij IPC (Interprocess Communication, medprocesna
komunikacija) je v slovar�ku knjige Programming Perl: ,,v�asih se mora
proces le pogovoriti z drugim procesom``. Ne presene�a nas torej, da
nekateri perlovski programerji dovoljujejo procesom, da se pogovarjajo
drug z drugim, kot to po�ne tudi veliko drugih paketov (najbolj znan
je DOOM), torej izbira ,,n`` ni dobra ideja, razen, �e to�no veste,
kaj po�nete.
3.3.5. Processor family (Processor type and features)
[ Procesorska dru�ina (Vrsta in lastnosti procesorja) ]
(v starej�ih jedrih: uporabite zastavico -m486 za optimizacije za 486)
V�asih je to vklju�ilo posebne optimizacije za dolo�en procesor; jedro
je teklo povsem dobro na ostalih �ipih, a je bilo morda malo ve�je. V
novej�ih jedrih pa to ni ve� res, zato vnesite procesor, za katerega
prevajate jedro. Jedro za ,,386`` bo delovalo na vseh strojih.
3.3.6. SCSI support
[ Podpora SCSI ]
�e imate naprave tipa SCSI, recite ,,y``. Vpra�ani boste po nadaljnih
podatkih, kot je podpora CD-ROM-om, diskom in katere vrste vmesnik
SCSI imate. Za ve� podrobnosti preberite SCSI-HOWTO.
3.3.7. Network device support
[ Podpora omre�nim napravam ]
�e imate mre�no kartico ali bi radi uporabljali SLIP, PPP ali
paralelni vmesnik za dostop na Internet, recite ,,y``. Nastavitveni
skript vas bo vpra�al o tipu kartice in protokolu, ki ga boste
uporabljali.
3.3.8. Filesystems
[ Datote�ni sistemi ]
Nastavitveni skript vas bo vpra�al, �e �elite imeti naslednje
datote�ne sisteme podprte v jedru:
* Standard (minix) - novej�e distribucije ne delajo datote�nih
sistemov minix in veliko ljudi jih ne uporablja, a mogo�e je vseeno
dobra zamisel, 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 mukotrpen.
* Second extended - To je standardni datote�ni sistem Linuxa. Skoraj
zagotovo ga imate in morate re�i ,,y``.
* msdos - �e �elite uporabljate particije MS-DOS-a na trdem disku ali
name��ati dosovske formatirane diskete, recite ,,y``.
Dostopnih je �e mnogo drugih tujih datote�nih sistemov.
* /proc - (zamisel iz Bell Labs, domnevam). Datote�nega sistema
/proc se ne ustvari na disku; to je datote�ni 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 re�i ,,y``; veliko pomembnih
orodij za Linux je odvisnih od tega.
* NFS - �e va� stroj biva na omre�ju in �elite uporabljati datote�ne
sisteme, ki le�ijo na drugih sistemih z NFS, recite ,,y``.
* ISO9660 - Najdete ga na ve�ini CD-ROM-ov. �e imate pogon za CD-ROM
in ga �elite uporabljati v Linuxu, recite ,,y``.
3.3.8.1. Vendar jaz ne vem, katere datote�ne sisteme potrebujem!
Prav, napi�ite ,,mount``. Izpis bo pribli�no tak�en:
blah:# mount
/dev/hda1 on / type ext2 (defaults)
/dev/hda3 on /usr type ext2 (defaults)
none on /proc type proc (defaults)
/dev/fd0 on /mnt type msdos (defaults)
Poglejte v vsako vrstico; beseda poleg ,,type`` je ime datote�nega
sistema. V tem primeru sta moja datote�na sistema / in /usr tipa
,,second extended``, uporabljam /proc in name��ena je disketa z
datote�nim sistemom msdos (bljak).
Poskusite tudi ,,cat /proc/filesystems``, �e imate trenutno vklopljen
/proc; to bo izpisalo va�e trenutne datote�ne sisteme v jedru.
Namestitev redko uporabljanih, ne-nujnih datote�nih sistemov lahko
povzro�i napihnjeno jedro; glejte razdelek ``o modulih'' za na�in,
kako se temu izognete in razdelek ``,,Velika ali po�asna jedra``'' o
tem, zakaj je napihnjeno jedro neza�eljen pojav.
3.3.9. Character devices
[ Znakovne naprave ]
Tukaj vklju�ite gonilnike za va� tiskalnik (pravzaprav, tiskalnik na
vzporednih vratih), mi�ko, priklopljeno na vrata busmouse ali PS/2
(veliko notesnikov uporablja mi�kovni protokol PS/2 za njihove
vgrajene sledilne kroglice), nekatere tra�ne enote in druge tak�ne
,,znakovne`` naprave. Recite ,,y``, �e je tako prav.
Opomba: gpm je program, ki vam omogo�a uporabo mi�ke izven sistema X
window za izrezovanje in prilepljanje besedila med navideznimi
zasloni. Dobro je, �e imate mi�ko na zaporednih vratih, saj ta lepo
shaja z Okni X, za druge mi�ke pa morate uporabiti posebne trike.
3.3.10. Sound
[ Zvok ]
�e imate veliko �eljo sli�ati, kako biff laja, recite ,,y``, in
nastavitvenemu programu lahko poveste vse o va�i zvo�ni kartici.
(Opomba glede nastavitve zvo�ne kartice: ko vas vpra�a, �e �elite
namestiti popolno razli�ico gonilnikov, lahko re�ete ,,n`` in
prihranite nekaj pomnilnika jedra z izbiro le tistih lastnosti, ki se
vam zdijo potrebne.)
�e zares potrebujete dobro podporo zvo�ne kartice, poglejte proste
gonilnike na naslovu <
http://www.linux.org.uk/OSS/> in komercialni
Open Sound System na <
http://www.opensound.com/>.
3.3.11. Druge nastavitvene mo�nosti
Vse nastavitvene izbire tukaj niso na�tete, saj se prepogosto
spreminjajo ali so same po sebi razvidne (na primer, podpora 3Com
3C509 za to�no to mre�no kartico). Obstaja precej obse�en seznam vseh
izbir (in na�in, kako jih uvrstimo v skript Configure); projekt je
za�el in vzdr�eval Axel Boldt (
[email protected]) in je dostopen kot
pomo� na zvezi. Na voljo je tudi kot ena sama velika datoteka
Documentation/Configure.help v izvorni kodi jedra od razli�ice Linuxa
2.0 naprej.
3.3.12. Kernel hacking
[ Hekanje jedra ]
Iz Linusove datoteke README:
Izbira ,,hekanje jedra`` navadno vodi v ve�je in po�asnej�e jedro (ali
v oboje) in lahko naredi jedro manj stabilno tako, da prekodira
nekatere rutine, ki aktivno posku�ajo sesuti slabo kodo in s tem najti
jedrne probleme (kmalloc()). Torej boste, �e ste navadni smrtnik,
tukaj odgovorili z ,,n``.
3.4. Pa zdaj? (Datoteka Makefile )
Ko opravite nastavljanje, vam sporo�ilo pove, da je jedro nastavljeno
in da naj pogledate ,,najvi�je-nivojsko datoteko Makefile za dodatno
nastavitev`` itd.
Poglejte torej Makefile. Verjetno vam je ne bo treba spreminjati, a
nikoli ne �kodi, �e pogledate. Po namestitvi novega jedra lahko
spreminjate izbire tudi z ukazom ,,rdev``. �e se ob ogledu te
datoteke po�utite izgubljeni, jo pa� pozabite.
4. Prevajanje jedra
4.1. �i��enje in urejanje odvisnosti
Ko konfiguracijski skript kon�a z delom, vam pove, da napravite ,,make
dep`` in (morda) ,,clean``. Torej napi�ete ,,make dep``. To vam
zagotovi, da so vse odvisnosti, na primer vklju�ne datoteke, na svojem
mestu. To ne traja dolgo, razen, �e imate zelo po�asen ra�unalnik.
Pri starej�ih razli�icah 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 razli�ice. V vsakem
primeru ne pozabite narediti tega koraka preden za�nete prevajati
jedro.
4.2. �as za prevajanje
Po urejanju odvisnosti in �i��enju lahko napi�ete ,,make zImage`` ali
,,make zdisk`` (ta del traja veliko �asa). ,,make zImage`` prevede
jedro in v imeniku arch/i386/boot pusti datoteko, imenovano
,,bzImage`` (med drugim). To je novo komprimirano jedro. ,,make
bzdisk`` naredi isto stvar, le da prepi�e novo datoteko bzImage na
disketo, ki ste jo, upajmo, vstavili v pogon ,,A:`` (/dev/fd0).
,,bzdisk`` je priro�no orodje za testiranje 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 in�talaciji novih sistemov, ko
preprosto prepi�ete vsebino enega diska na drugega (,,Vse to in �e
ve�! Koliko bi pla�ali zdaj?``). Vsa, vsaj na pol razumno nova,
jedra so komprimirana, odtod �rka ,,bz`` pred njihovimi imeni.
Komprimirano jedro se samodejno odkomprimira, ko se izvaja.
V starej�ih jedrih ni izbire za gradnjo bzImage; le zImage. Ta izbira
je trenutno �e vedno dostopna, vendar je glede na velikost kode
novej�ih jeder uporaba bzImage bolj ali manj obvezna, saj starej�e
metode ne znajo uporabljati prevelikega jedra.
4.3. Drugi cilji ,,make``
,,make mrproper`` naredi bolj intenzivno �i��enje (,,clean``). V�asih
je ta cilj potreben; morda ga �elite uporabiti ob vsakem popravku.
,,make mrproper`` bo tudi pobrisal va�o konfiguracijsko datoteko, zato
shranite njeno rezervno kopijo (.config), �e se vam zdi pomembna.
,,make oldconfig`` bo posku�al 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 no�ete tega, saj ho�ete 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. Ve�ina ljudi za ta korak uporablja LILO (Linux
Loader). Jedro namestite, po�enete �ez njega LILO in ga pripravite za
zaganjanje z ukazom ,,make bzlilo``. Vendar le, �e je lilo nastavljen
takole: jedro je /vmlinuz, lilo je v imeniku /sbin, in va�a
nastavitvena datoteka /etc/lilo.conf se s tem strinja.
V vseh drugih primerih morate pognati LILO neposredno. Paket je
precej enostaven za in�talacijo in delo, a zna zmesti ljudi s
konfiguracijsko datoteko. Glejte nastavitveno datoteko (v starej�ih
razli�icah je to /etc/lilo/config, v novej�ih pa /etc/lilo.conf) in
poglejte, kak�ne nastavitve imate. Konfiguracijska datoteka mora
izgledati podobno:
image = /vmlinuz
label = Linux
root = /dev/hda1
...
Nastavitev ,,image =`` ka�e na na novo name��eno jedro. Ve�ina ljudi
uporablja /vmlinuz. Lilo potrebuje oznako ,,label``, da ugotovi,
katero jedro ali operacijski sistem naj za�ene, oznaka ,,root`` je
korenski imenik / dolo�enega operacijskega sistema. Napravite rezervno
kopijo va�ega starega jedra in prepi�ite datoteko bzImage, ki ste jo
pravkar naredili na to mesto (napi�ete npr. ,,cp bzImage /vmlinuz``,
�e uporabljate ,,/vmlinuz``). Potem �e enkrat za�enete lilo - na
novej�ih sistemih le napi�ete ,,lilo``, na starej�ih 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 najnovej�o razli�ico z va�ega priljubljenega
mesta za FTP in upo�tevate navodila.
Za zaganjanje enega va�ih starej�ih jeder s trdega diska (�e en na�in,
kako si opomorete, �e ste uni�ili novo jedro), prekopirajte vrstice
pod (in vklju�no z) ,,image = xxx`` v LILO-vi nastavitveni datoteki na
konec datoteke in spremenite ,,image = xxx`` v ,,image = yyy``, kjer
je ,,yyy`` polna pot do datoteke, v katero ste shranili rezervno
jedro. Potem spremenite ,,label = zzz`` v ,,label = linux-backup`` in
�e enkrat po�enite 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 razli�ico 1.1.45 in opazite, da obstaja nekje
datoteka ,,patch46.gz`` za njo, to pomeni, da lahko z uporabo programa
patch nadgradite jedro na razli�ico 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 sporo�ale, da patch posku�a uporabiti dolo�ene popravke in
uspeh teh poskusov. Navadno se vse odvija prehitro, da bi lahko
brali. �e niste prepri�ani, ali je �lo vse po sre�i, boste morda
uporabili zastavico -s za program patch, kar pove patchu naj sporo�a
le sporo�ila o napakah (v tem primeru ne boste imeli ob�utka ,,Hej,
moj ra�unalnik za spremembo nekaj po�ne!``, a boste morda vseeno raje
storili tako). �e vas zanima, kateri deli se niso popravili povsem
gladko, napravite cd /usr/src/linux in poi��ite datoteke s podalj�kom
.rej. Nekatere starej�e razli�ice patcha pustijo podalj�ek #. Za
iskanje uporabite ,,find``:
# find .
-name '*.rej' -print
To izpi�e vse datoteke s podalj�kom .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 zadr�i izpis vseh sporo�il, razen napak. �e imate izvorno kodo
jedra v kak�nem drugem imeniku kot /usr/src/linux, uporabite v tem
imeniku patch -p1. Ostale izbire najdete z man patch.
5.2. �e se kje zalomi
(Opomba: Ta razdelek se nana�a predvsem na zelo stara jedra.)
Najpogostej�i problem, ki se je v�asih 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 starej�ih izdajah �e vedno sre�ate. Popravite
pa tako, da pogledate datoteko config.in.rej tako, da odgovarja
originalnemu popravku. Popravki bodo navadno ozna�eni s simboloma
,,+`` in ,,-`` na za�etku vrstice. Glejte okoli�ke 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 sporo�i, da je uspel, lahko nadaljujete z nastavitvami in
prevajanjem. Datoteka config.in.rej vam bo ostala, a jo lahko
pobri�ete.
�e imate �e vedno probleme, ste morda namestili popravek prek vrste.
�e patch pravi ,,previously applied patch detected: Assume -R?``,
verjetno posku�ate namestiti popravek, ki je starej�i od trenutne
razli�ice jedra; �e odgovorite z ,,y``, bo patch posku�al podgraditi
va�o izvorno kodo, in najverjetneje mu bo spodletelo. Potrebovali
boste popolno �isto novo drevo izvorne kode (kar je morda tako ali
tako dobra ideja).
Za razveljavitev popravkov uporabite ukaz ,,patch -R`` na originalnem
popravku.
Najbolj�a stvar, ki jo lahko naredite, ko ne morete uporabiti
popravkov, je, da za�nete znova s �istim drevesom izvorne kode (na
primer, z eno od datotek linux-x.y.z.tar.gz), in znova za�nete.
5.3. Kako se znebite datotek .orig
Po nekaj popravkih se bodo za�ele kopi�iti datoteke .orig. 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 .orig je prihranila ve� kot pol
megabyta.
Zadevo uredite z ukazom:
# find . -name '*.orig' -exec rm -f {} ';'
Razli�ice programa patch, ki uporabljajo # za zavrnitvene datoteke,
uporabljajo za podalj�ek tildo (,,.~``) namesto ,,.orig``.
Obstajajo tudi bolj�i na�ini za odpravo datotek .orig, ki slonijo na
GNU xargs:
# find . -name '*.orig' | xargs rm
ali ,,precej varna, a malo bolj iz�rpna`` 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 na�tetega.
To lahko postane zelo frustrirajo�e, 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
prosja�iti) za novo razli�ico popravkov.
Kako pogosti so popravki, ki niso v standardnih distribucijah?
Verjetno boste sli�ali o njih. Jaz uporabljam popravek noblink za moje
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 uporaba
,,nestandardnih`` popravkov znatno upada.
6. Dodatni paketi
Va�e Linuxovo jedro ima veliko odlik, ki niso pojasnjene v sami
izvorni kodi jedra; te posebnosti se navadno dose�ejo z uporabo
zunanjih paketov. Tukaj na�tevam nekaj najpogostej�ih.
6.1. kbd
Linuxov zaslon (console) ima najbr� ve� zmo�nosti, kot si jih zaslu�i
(op.: prevajalec se ne strinja). Med temi so mo�nost preklaplanja
znakov, preslikave tipkovnice, preklop video na�inov (v novej�ih
jedrih) itd. Paket kbd vsebuje programe, ki uporabniku omogo�ajo vse
to, in �e veliko znakov in na�rtov tipkovnic za skoraj vsako
tipkovnico. Paket dobite na istih mestih kot izvorno kodo jedra.
6.2. util-linux
Rik Faith <
[email protected]> je sestavil veliko zbirko uporabnih
programov za Linux, ki se imenujejo util-linux. Trenutno jih vzdr�uje
Andries Brouwer <
[email protected]>. Po anonimnem FTP-ju dobite
na <
ftp://metalab.unc.edu/pub/Linux/system/misc/> programe kot so
setterm, rdev, in ctrlaltdel, ki se nana�ajo na jedro. Kot pravi Rik,
ni�esar ne in�talirajte, ne da bi prej premislili, ni vam treba
in�talirati vsega in lahko imate resne probleme, �e bi radi
in�talirali 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 va�im trdim diskom pa se raz�irjajo posebej.
6.4. gpm
gpm pomeni ,,splo�no uporabna mi�ka`` (ang. general purpose mouse). S
tem programom lahko besedilo izrezujete in prilepljate med posameznimi
navideznimi zasloni in po�nete druge stvari s celo paleto razli�nih
mi�k.
7. Nekatere pasti
7.1. make clean
�e po rutinski nadgradnji jedra va�e jedro po�ne zares �udne re�i, ste
morda pozabili napisati make clean pred prevajanjem novega jedra.
Simptomi so lahko karkoli, od zmrznjenega sistema, �udnih V/I
problemov, do slabega (po�asnega) delovanja. Prepri�ajte se tudi, da
boste ukazali make dep.
7.2. Velika ali po�asna jedra
�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 (gonilnikov naprav, datote�nih sistemov, itd.). �e
naprave ne uporabljate, je ne podprite v jedru, saj to zavzema
pomnilnik. Najbolj o�iten simptom prenapihnjenega jedra je ekstremno
izmenjavanje pomnilnika z diskom sem ter tja; �e va� disk nenehno
ogla�a in ni eden od tistih starih Fujitsujevih Eagles, katerih zvok
lahko primerjamo s pristajanjem reaktivnih letal, preglejte nastavitve
va�ega jedra.
Koliko pomnilnika zaseda jedro lahko izveste z od�tevanjem vrednosti
,,total mem`` v izpisu /proc/meminfo ali izhodom ukaza ,,free``, od
koli�ine vsega pomnilnika.
7.3. Vzporedna vrata ne delujejo/tiskalnik ne deluje
Nastavitvene izbire za PC-je 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).
Potem so tu �e imena. Linux 2.2 poimenuje tiskalni�ke naprave druga�e
od prej�njih izdaj. Posledica tega je, da napravi lp1 v va�em starem
jedru v novem jedru verjetno ustreza naprava lp0. Uporabite dmesg ali
poglejte v dnevnik v imeniku /var/log ter ugotovite novo ime.
7.4. Jedro se ne prevede
�e se ne prevede, je to verjetno zato, ker je popravek spodletel, ali
je va�a izvorna koda nekako pokvarjena. Morda nimate prave razli�ice
prevajalnika gcc, ali je tudi z njim kaj narobe (na primer, vklju�ne
datoteke so lahko napa�ne). Prepri�ajte se, da so simboli�ne
povezave, ki jih Linus priporo�a v datoteki README pravilno narejene.
V splo�nem, �e se standardna jedra ne prevajajo, je nekaj resno narobe
s sistemom in ponovna in�talacija nekaterih orodij je neizogibna.
V nekaterih primerih lahko gcc odpove zaradi strojnih problemov.
Sporo�ila o tak�nih 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 prito�eval povsem naklju�no. �e imate te�ave,
poskusite najprej ponovno namestiti gcc. Sumni�avi postanite samo, �e
se va�e jedro lepo prevede z izklju�enim zunanjim predpomnilnikom,
zmanj�ano koli�ino RAM-a, ipd.
Ljudje so navadno vznemirjeni, ko izvejo, da bi lahko imeli tudi
te�ave s strojno opremo. Hja, tega si ne izmi�ljujem. Obstajajo tudi
pogosto zastavljena vpra�anja o tej temi - najdete jih na
<
http://www.bitwizard.nl/sig11/>.
7.5. Novo jedro se no�e 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 mote�e, a ko imate enkrat delujo�o nastavitveno
datoteko, vam je ni treba spreminjati.)
7.6. Pozabili ste pognati LILO, ali pa se sistem sploh ne za�ene
Ups! Najbolj�e, kar lahko storite ta hip, je, da za�enete operacijski
sistem z diskete ali CD-ROM-a in potem pripravite �e eno zaganjalno
disketo (kot bi jo naredil ukaz ,,make zdisk``). Vedeti morate, kje
je va� korenski (/) datote�ni sistem in katerega tipa je (npr. second
extended, minix). V spodnjem primeru morate vedeti tudi na kak�nem
datote�nem sistemu le�i va�e drevo izvorne kode /usr/src/linux, njegov
tip, in kje je navadno name��en (z mount).
V naslednjem primeru je / enak /dev/hda1, in datote�ni sistem, ki
vsebuje /usr/src/linux na /dev/hda3, navadno name��en na /usr. Oba
sta datote�na sistema tipa ext2 (second extended). Delujo�a slika
jedra v imeniku /usr/src/linux/arch/i386/boot se imenuje bzImage.
Zamisel je tak�na, da uporabimo delujo�e jedro zImage 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 po
tem primeru.
Najprej za�enite sistem s kombinacije disket boot in root ali z
re�evalne diskete in namestite delujo�o 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 delujo�e 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:`` vlo�ite formatirano disketo (ne va�ih diskov
boot ali root!), prepi�ite sliko jedra na disketo in jo nastavite za
svoj korenski datote�ni sistem.
# cd /mnt/src/linux/arch/i386/boot
# dd if=bzImage of=/dev/fd0
# rdev /dev/fd0 /dev/hda1
Naredite cd na / in odmestite obi�ajni datote�ni sistem /usr:
# cd /
# umount /mnt
Zdaj lahko �e enkrat za�enete 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 obi�ajna pot. �e imate delujo�o
sliko jedra v / (/vmlinuz, na primer), jo lahko uporabite za zagonsko
disketo. �e veljajo vsi zgoraj na�teti pogoji in je slika jedra
/vmlinuz, naredite le te spremembe v zgoraj opisanem primeru:
spremenite /dev/hda3 v /dev/hda1 (datote�ni sistem /), /mnt/src/linux
v /mnt, in if=bzImage v if=vmlinuz. Opombo o tem, kako dobimo
/mnt/src/linux lahko spregledate.
Uporaba programa LILO na velikih diskih (ve�jih od 1024 cilindrov)
lahko povzro�a probleme. Preberite LILO mini-HOWTO ali LILO-vo
dokumentacijo, �e potrebujete pomo� pri tem.
7.7. Izpi�e ,, warning: bdflush not running ``
To je lahko resen problem. Od jedra izdaje po 1.0 (okoli 20. aprila
1994) se je program ,,update``, ki periodi�no izplakne vmesni
pomnilnik datote�nega sistema, posodabljal in nadomestil. Dobite
izvorno kodo ,,bdflush`` (najdete jo tam, kjer ste na�li 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� prito�evalo.
7.8. Mojega CD-ROM-a IDE/ATAPI ne prepri�am, 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 skaka�e kot ,,master`` ali ,,single``. To je menda najbolj
pogosta napaka.
Creative Labs (na primer) je postavil vmesnik IDE na njihove zvo�ne
kartice. A to vodi k zanimivem problemu, da imajo nekateri ljudje en
sam vmesnik, veliko jih ima dva vmesnika IDE na njihovih mati�nih
plo��ah (navadno na IRQ15), torej je splo�na praksa ozna�iti vmesnik
SoundBlaster-ja kot tretji IDE port (IRQ11, mi pravijo).
To povzro�a probleme z Linuxom, saj razli�ice 1.2.x ne podpirajo
tretjega vmesnika IDE (obstaja podpora v serijah 1.3.x, a to je
razvojna razli�ica, se �e spomnite, in ne izvaja avtomatskega
iskanja). Temu se lahko izognemo na ve� na�inov.
�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.
�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.
7.9. Izpisuje �udne re�i o zastarelih zahtevah za usmerjanje (obso�
lete routing requests)
Poi��ite novo razli�ico 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. Po�arni zid ne deluje v 1.2.0
Nadgradite vsaj na razli�ico 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 va�o zaganjalno sliko; [..]/arch/i386/boot/bzImage
je prava datoteka.
7.12. Te�ave 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 vklju�nih datotek
(datoteke, ki se kon�ujejo 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 va�e izvorne kode jedra (/usr/src/linux/include/linux v
tipi�nem sistemu). �e te povezave ni tam, ali ka�e na napa�en kraj, se
ve�ina stvari sploh ne bo prevedla. �e ste se odlo�ili, da porablja
izvorna koda jedra preve� prostora na disku in ste jo pobrisali, je
o�itno 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 izlu��ili
izvorno kodo jedra brez izbire p (ohrani datote�ne na�ine), ti
uporabniki ne bodo mogli uporabljati prevajalnika za C. �eprav lahko
uporabite ukaz chmod in to popravite, je verjetno la�je �e enkrat
izvle�i vklju�ne datoteke. To lahko storite enako kot ste storili na
za�etku 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. Pove�anje omejitev
Naslednji primer ukazov je lahko koristen za tiste, ki se spra�ujete,
kako pove�ati 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 razli�ice 2.0.x, 2.2.x
Jedra razli�ic 2.0.x in 2.2.x so uvedla precej sprememb pri njihovi
namestitvi. Berite datoteko Documentation/Changes v drevesu izvorne
kode jedra za znanje, ki ga morate imeti, ko nadgrajujete na ta jedra.
Verjetno boste morali nadgraditi veliko klju�nih 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 raz�irjen na datote�ne sisteme,
gonilnike omre�nih kratic, tra�nih enot, tiskalnikov in �e ve�.
9.1. Namestitev modulskih pripomo�kov
Modulski pripomo�ki so na voljo, kadarkoli dobite izvorno kodo va�ega
jedra kot modutils-x.y.z.tar.gz; izberite najvi�jo �tevilko razli�ice
x.y.z, ki je enaka ali manj�a va�emu jedru. Odpakirajte jih z ,, tar
zxvf modutils-x.y.z.tar.gz``, pojdite s cd na imenik, ki ga ustvari
tar (modutils-x.y.z), preglejte datoteko README, in upo�tevajte
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 pripomo�ke s preizku�evalnim gonilnikom ,,hw`` v programu
insmod; preberite datoteko INSTALL v tem podimeniku za podrobnosti.
insmod vklju�i modul v teko�e jedro. Moduli imajo navadno podalj�ek
.o; preizku�evalni gonilnik, omenjen zgoraj, se imenuje drv_hello.o,
torej morate napisati ,,insmod drv_hello.o``, �e ga �elite vklju�iti.
Module, ki jih jedro trenutno uporablja, lahko izpi�ete 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 ho�e rmmod
ime modula, ne ime datoteke; dobite ga z izpisom lsmod. Nameni drugih
modulskih pripomo�kov so na�teti v njihovih referen�nih priro�nikih
(npr. man ksyms).
9.2. Moduli, distribuirani poleg jedra
Od razli�ice 2.0.30 je ve�ina vsega dostopna kot nalagalni modul. �e
jih �elite uporabiti, morate nastaviti podatke o njih v obi�ajnem
jedru; to se pravi, ne re�ete ,,y`` med ,,make config``, temve� ,,m``.
Prevedite novo jedro in z njim za�enite sistem. Potem naredite ,,cd
/usr/src/linux`` in uka�ite ,,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 datote�nimi sistemi. Morda ne
uporabljate pogosto datote�nih 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 privar�uje okoli 50 KB RAM-a v jedru med normalnim
delovanjem. Pri datote�nem sistemu minix ne bo odve� majhna pripomba:
vedno ga podprite neposredno v jedru, da boste lahko uporabljali
,,re�evalne`` diskete.
10. Nasveti in triki
10.1. Preusmeritev izhoda ukazov make in patch
�e �elite videti, kaj je naredil ukaz ,,make`` ali ,,patch``, lahko
preusmerite standardni izhod programa v datoteko. Najprej ugotovite
katero ukazno lupino uporabljate: ,,grep root /etc/passwd`` in glejte
nekaj podobnega temu: ,,/bin/csh``.
�e uporabljate sh ali bash, boste takole preusmerili izhod ukaza
(ukaz) v datoteko (izhodna_datoteka):
# (ukaz) 2>&1 | tee (izhodna_datoteka)
Za csh ali tcsh uporabite:
# (ukaz) |& tee (izhodna_datoteka)
Za lupino rc (verjetno je ne uporabljate) je ustrezen ukaz
# (ukaz) >[2=1] | tee (izhodna_datoteka)
10.2. Pogojna in�talacija jedra
Razen z uporabo disket je �e ve� metod preizku�anja 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
ve�ji od 500 MB, preberite LILO-vo dokumentacijo, kako prepre�ite
te�ave). �e torej na konec konfiguracijske datoteke dodate nekaj
podobnega:
image = /usr/src/linux/arch/i386/boot/bzImage
label = new_kernel
lahko izberete zagon novega jedra ne da bi se dotaknili va�ega starega
jedra /vmlinuz (seveda morate �e pognati lilo). Najpreprostej�i na�in
za zagon novega jedra je, da pritisnete ob zagonu tipko Shift (ko se
na zaslonu izpi�e LILO in ni� drugega), kar vam da pozivnik. Zdaj
lahko vnesete ,,new_kernel`` in zagnalo se bo novo jedro.
�e �elite obdr�ati ve� dreves izvorne kode razli�nih jeder (to lahko
sicer zaseda veliko diskovnega prostora), je najpogostej�i na�in ta,
da jih preimenujete v /usr/src/linux-x.y.z, kjer je x.y.z razli�ica
jedra. Potem lahko ,,izberete`` drevo izvorne kode s simboli�no
povezavo, npr. ,,ln -sf linux-1.2.2 /usr/src/linux`` naredi drevo
1.2.2 za trenutno aktualno drevo. Preden naredite to simboli�no
povezavo, se prepri�ajte, da zadnji argument programu ln ni pravi
imenik (stare simboli�ne povezave so v redu); rezultat ne bo tak, kot
bi �eleli.
10.3. Nadgradnje jedra
Russell Nelson <
[email protected]> zbira spremembe v novih izdajah
jedra. Te so kratke, lahko jih pogledate, preden nadgradite svoje
jedro. Najdete jih na <
ftp://ftp.emlist.com/pub/kchanges/> ali prek
svetovnega spleta na naslovu url
url="
http://www.crynwr.com/kchanges">.
11. Ostali HOWTO-ji, ki bi lahko bili uporabni
* Sound-HOWTO: zvo�ne kartice in pripomo�ki,
* SCSI-HOWTO: vse o krmilnikih in napravah SCSI,
* NET-2-HOWTO: omre�enost,
* PPP-HOWTO: omre�enost s PPPjem, posebej,
* PCMCIA-HOWTO: o gonilnikih za va� notesnik,
* ELF-HOWTO: ELF: kaj je to, prenos,
* Hardware-HOWTO: pregled podprte strojne opreme,
* Module mini-HOWTO: ve� o modulih jedra,
* Kerneld mini-HOWTO: o demonu kerneld,
* BogoMips mini-HOWTO: �e se slu�ajno spra�ujete.
12. Razno
12.1. Avtor
Avtor in vzdr�evalec priro�nika Linux Kernel-HOWTO je Brian Ward
<
[email protected]>. Prosim, po�ljite mi vse pripombe, dodatke,
popravke (predvsem popravki so zame najbolj pomembni).
Mojo doma�o stran najdete na enem od teh dveh URL-jev:
* <
http://www.math.psu.edu/bri/>
* <
http://blah.math.tu-graz.ac.at/~bri/>
�eprav posku�am biti po po�ti 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 po�ti kaj spra�ujete,
prosim, poskusite biti �e posebej jasni in podrobni v svojem
sporo�ilu. �e pi�ete o nedelujo�i strojni opremi (ali kaj takega),
moram vedeti, kak�na je va�a celotna strojna konfiguracija. �e
poro�ate o napaki, ne recite le ,,Poskusil sem tole, pa mi je javil
napako``; vedeti moram tudi, katera napaka je to bila. �elim tudi
vedeti razli�ico jedra, prevajalnika gcc in knji�nice 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 vpra�ujete
preprosta vpra�anja; vedite, �e nikoli ne vpra�ate, morda ne boste
nikoli dobili odgovora! �elim se zahvaliti vsem, ki so mi posredovali
povratne informacije.
�e va�e vpra�anje ni povezano z jedrom ali je v jeziku, ki ga ne
razumem, morda ne bom odgovoril.
�e ste mi pisali in vam nisem odgovoril v razumnem �asovnem roku
(trije tedni ali ve�), sem morda pomotoma pobrisal va�e sporo�ilo ali
kaj takega (oprostite). Prosim, poskusite �e enkrat.
Dobivam veliko po�te o stvareh, ki imajo pravzaprav opraviti s strojno
opremo. To je v redu, a, prosim, zavedajte se, da nisem seznanjen z
vso obstoje�o strojno opremo tega sveta. Osebno uporabljam procesorje
AMD, krmilnike SCSI proizvajalcev Adaptec in Sybios, ter diske SCSI
proizvajalca IBM.
Razli�ica -0.1 angle�kega izvirnika je bila napisana 3. oktobra 1994.
Izvirnik je dostopen kot SGML, PostScript, TeX, roff, in kot navaden
tekst.
Avtor slovenskega prevoda z dne 24. julija 1999 je Roman Maurer
<
[email protected]>. Prosim, po�ljite mi pripombe na prevod.
Slovenski prevod je dostopen kot SGML DTD LinuxDoc, HTML, DVI, PDF,
PostScript in navaden tekst na stre�niku slovenskega Dru�tva
uporabnikov Linuxa v imeniku <
ftp://ftp.lugos.si/pub/lugos/doc/HOWTO-
sl/> ali na spletnem naslovu <
http://www.lugos.si/delo/slo/HOWTO-
sl/Kernel-HOWTO-sl.html>.
12.2. Narediti
Razdelek ``,,Nasveti in triki``'' je bolj majhen. Upam, da ga bom
raz�iril s predlogi drugih.
Tako je tudi z razdelkom ``,,Dodatni paketi``''.
Potrebujemo ve� podatkov o razhro��evanju/odpravljanju posledic
sesutja sistema.
12.3. Prispevki
Vklju�en je majhen del Linusove datoteke README (izbire za hekiranje
jedra). (Hvala, Linus!)
*
[email protected] (Ulrich Callmeier): patch -s in xargs,
*
[email protected] (Daniel Quinlan): popravki in dodatki ve�
razdelkov,
*
[email protected] (Nat Makarevitch): mrproper, tar -p, ve� drugih
re�i,
*
[email protected] (Axel Boldt): po omre�ju je zbral opise
konfiguracijskih izbir jedra; potem mi je poslal seznam,
*
[email protected] (Steve Lembark): predlog razli�nega
zaganjanja,
*
[email protected] (Keith Briggs): nekateri popravki in
predlogi,
*
[email protected] (Ryan McGuire): dodatki ciljev
make,
*
[email protected] (Eric Dumas): francoski prevod,
*
[email protected] (Yasutada Shimazaki): japonski
prevod,
*
[email protected] (Juan Jose Amor Iglesias): �panski prevod,
*
[email protected] (Martin Wahlen): �vedski prevod,
*
[email protected] (Zoltan Vamosi): mad�arski prevod,
*
[email protected] (Bartosz Maruszewski): poljski prevod,
*
[email protected] (Roman Maurer): slovenski prevod,
*
[email protected] (Michael J. Donahue): tipkarske napake,
zmagovalec ,,tekmovanja narezanega kruha``,
*
[email protected] (Richard Stallman): zamisel in distribucija
,,proste`` dokumentacije,
*
[email protected] (David Kastrup): re� o NFS,
*
[email protected] (Eric Raymond): razli�ni del�ki.
Pomagali so mi tudi ljudje, ki so mi poslali po�to z vpra�anji in
problemi.
12.4. Pravice raz�irjanja, licenca, in te stvari
Copyright (C) Brian Ward, 1994-1999.
Dovoljeno je izdelovati in raz�irjati kopije tega priro�nika, �e
ostane opomba o pravicah raz�irjanja in tale opomba o dovoljenju
nespremenjena v vseh kopijah.
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 glede dovoljenj. Prevodi padejo v kategorijo
,,spremenjenih razli�ic``.
Garancija: Ni je.
Priporo�ila: Komercialno raz�irjanje je dovoljeno in celo za�eleno;
vendar se mo�no priporo�a, da distributer stopi v stik z avtorjem �e
pred distribucijo, da bi obdr�ali osve�eno stanje stvari (lahko mi
po�ljete tudi kopijo stvari, ki jo izdelujete, �e ste �e pri tem).
Avtor svetuje tudi prevajalcem, da stopijo v stik z njim, preden
za�nejo prevajati. Natisnjene razli�ice so videti bolje. Lahko jih
recikliramo.