Izvorno kodo lahko dobite po anonimnem ftp-ju z naslova
ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus
,
zrcalnega strežnika, ali z drugih strežnikov. Navadno je označena
kot linux-x.y.z.tar.gz
, kjer
je x.y.z
številka verzije.
Novejše (boljše?) verzije in popravki so navadno
v podimenikih kot npr. ,,v1.1
`` in ,,v1.2
``.
Verzija z največjim številom je
zadnja verzija in je navadno ,,testna izdaja``, kar pomeni,
da ostanite raje pri
glavni izdaji, če se počutiteob beta in alfa izdajah jedra
počutite nelagodno.
Močno vam priporočam, da uporabite zrcalni strežnik
namesto ftp.funet.fi
.
Tukaj je kratek seznam zrcal in drugih strežnikov:
ftp://ftp.lugos.si/pub/lugos/arhiv/kernels/
ftp://mercur.s-gms.ms.edus.si/pub/UNIX/linux/Kernel/src/
ftp://ftp.fpp.uni-lj.si/pub/linux/slackware-3.5/source/kernel-source/
ftp://ftp.univie.ac.at/systems/linux/sunsite/kernel/
ftp://ftp.Germany.EU.net/pub/os/Linux/Local.EUnet/Kernel/Linus/
ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/PEOPLE/Linus
ftp://ftp.ibp.fr/pub/linux/sources/system/patches/
ftp://sunsite.doc.ic.ac.uk/pub/unix/Linux/sunsite.unc-mirror/kernel/
ftp://sunsite.unc.edu/pub/Linux/kernel/
ftp://tsx-11.mit.edu/pub/linux/sources/system/
ftp://sunsite.anu.edu.au/pub/linux/kernel/
V splošnem najprej poglejte na zrcalo mesta sunsite.unc.edu
.
Datoteka
/pub/Linux/MIRRORS
vsebuje
seznam vseh znanih zrcal. Če nimate dostopa do ftp-ja, je v novičarski skupini
news:comp.os.linux.announce
vsak
mesec objavljen spisek BBS-ov, ki imajo Linux, poskušajte ga nekako dobiti.
Če iščete splošne podatke o Linuxu in distribucijah, poskusite obiskati
http://www.linux.org
.
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 zveste različico
sistema, ki jo trenutno uporabljate, in ustrezno preimenujete imenik. Trenutno
različico jedra zveste z ukazom ,,uname -r
``. Če torej ,,uname -r
`` pravi ,,1.0.9``,
boste preimenovali (z ,,mv
``) ,,linux
`` v ,,linux-1.0.9
``. Če se 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 -- simbolične povezave,
ki morajo biti na pravih mestih, brisanje ostalih datotek .o
itd.
Opomba: Nekaj tega je reiteracija/razjasnitev podobnega razdelka v Linusovi
datoteki README
.
Ukaz ,,make config
`` v imeniku /usr/src/linux
požene nastavitveno skripto,
ki vas vpraša veliko vprašanj. Potrebuje ukazno lupino bash
, zato preverite, če ta
obstaja v /bin/bash
, /bin/sh
, ali $BASH
.
Morda boste raje uporabljali katero od alternativ ukazu ,,make config
``.
Tisti, ki poganjate 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.
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 nekaj posameznih izbir.
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.
Kernel math emulation
(emulacija matematičnih operacij v jedru)Č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.
Edina posledica bo, da bo jedro večje (in zato tudi večja potrošnja
pomnilnika).
Baje je emulacija matematike počasna;
čeprav to nima dosti opraviti s tem razdelkom, je mogoče nekaj, česar se je
vredno spomniti, če imate opraviti s polžjim obnašanjem grafičnega sistema
X.
Normal (MFM/RLL) disk and IDE disk/cdrom support
(podpora normalnim diskom (MFM/RLL) in diskom/CD-ROM-om tipa IDE)Verjetno morate to podpreti; pomeni, da bo jedro podpiralo standardne trde diske, ki jih najdemo v osebnih računalnikih večine ljudi. Ta gonilnik ne vključuje pogonov SCSI; v nastavitvah pridejo ti na vrsto kasneje.
Nastavitveni program vas bo nato vprašal ali želite podporo le starim diskom (,,old disk-only``) in novim diskom IDE (,,new IDE``). Izbrati morate eno od teh možnosti; glavna razlika je v tem, da stari gonilnik podpira le dva diska na enem vmesniku, medtem ko novi podpira drugi vmesnik in CD-ROM-e IDE/ATAPI. Novi gonilnik je 4 KB večji od starejšega in naj bi bil ,,izpopolnjen``, kar pomeni, da poleg vsebovanja različnega števila hroščev verjetno tudi izboljša obnašanje vašega diska, posebej, če imate novejšo strojno opremo tipa EIDE.
Networking support
(omrežna podpora)
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.
Limit memory to low 16MB
(omejitev pomnilnika na spodnjih 16 MB)Obstajajo nekateri hroščati krmilniki za 386 z DMA, ki imajo probleme z
naslavljanjem česarkoli več kot 16 MB RAM; v (redkem) primeru, da imate takšnega,
boste odgovorili z ,,y
``.
System V IPC
(medprocesna komunikacija Systema V)
Ena najboljših definicij IPC (Interprocess Communication, medprocesna komunikacija)
je v slovarčku knjige Programming Perl: ,,včasih se mora proces le pogovoriti
z drugim procesom``. Ne preseneča nas torej, da nekateri perlovski programerji
dovoljujejo procesom, da se pogovarjajo drug z drugim, kot to počne tudi veliko
drugih paketov (najbolj znan je DOOM), torej izbira ,,n
`` ni dobra ideja, razen,
če točno veste, kaj počnete.
Processor type (386, 486, Pentium, PPro)
(tip 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 mogoče malo večje. V novejših
jedrih pa to ni več res, zato vnesite procesor, za katerega prevajate jedro.
Jedro za ,,386
`` bo delovalo na vseh strojih.
SCSI support
(podpora SCSI)
Če imate naprave tipa SCSI, recite ,,y
``. Vprašani boste po nadaljnih podatkih,
kot je podpora CD-ROM-om, diskom in katere vrste vmesnik SCSI imate. Za več
podrobnosti preberite SCSI-HOWTO
.
Network device support
(podpora omrežnim napravam)Če imate mrežno kartico ali bi radi uporabljali SLIP, PPP ali paralelni
vmesnik za dostop na Internet, recite ,,y
``. Nastavitvena skripta vas bo vprašala
o tipu kartice in protokolu, ki ga boste uporabljali.
Filesystems
(datotečni sistemi)Nastavitvena skripta vas bo vprašala, č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. Extended fs
-- To je bila prva različica razširjenega datotečnega sistema
(,,extended filesystem``), ki danes ni več v širši uporabi. Verjetno bi vedeli,
če bi ga potrebovali, če ste v dvomih, ga ne potrebujete.Second extended
-- Ta je na široko uporabljan v novih distribucijah. Verjetno
ga imate in morate reči ,,y
``.xiafs filesystem
-- Včasih ni bil tako redek, a v času tega pisanja ne
poznam nikogar, ki bi ga uporabljal.msdos
- Če želite uporabljate MS-DOS-ove particije na trdem disku ali nameščati
MS-DOS-ove formatirane diskete, recite ,,y
``.umsdos
-- Ta datotečni sistem razširja datotečni sistem MS-DOS-a z običajnimi
lastnostmi Unixa, kot so dolga imena datotek in dovoljenja. Ni uporaben za
ljudi (kot sem jaz), ki ,,ne DOS-ajo``./proc
-- Še ena izmed najboljših stvari po izumu
mleka v prahu (zamisel brez sramu
ukradena Bell Labs, domnevam). Datotečni sistem 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 Linuxovih orodij 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
``. OS/2 HPFS
-- V času pisanja podpira datotečni sistem
OS/2 HPFS le branje.
System V
in Coherent
-- za particije
sistemov System V in Coherent (to sta še dve različici Unixa
za osebne računalnike).
Prav, napišite ,,mount
``. Izpis bo približno takšen:
blah:# mount
/dev/hda1 on / type ext2 (defaults)
/dev/hda3 on /usr type ext2 (defaults)
none on /proc type proc (defaults)
/dev/fd0 on /mnt type msdos (defaults)
Poglejte v vsako vrstico; beseda poleg ,,type
`` je ime
datotečnega sistema.
V tem primeru sta moja datotečna sistema /
in /usr
tipa ,,second extended``,
uporabljam /proc
in nameščena je disketa z datotečnim
sistemom msdos (bljak).
Poskusite tudi ,,cat /proc/filesystems
``, če imate
trenutno vklopljen /proc
;
to bo izpisalo vaše trenutne datotečne sisteme v jedru.
Namestitev redko uporabljanih, ne-nujnih datotečnih sistemov lahko povzroči napihnjeno jedro; glejte razdelek o modulih za način, kako se temu izognete in razdelek ,,Velika ali počasna jedra`` o tem, zakaj je napihnjeno jedro nezaželjen pojav.
Character devices
(znakovne naprave)Tukaj vključite gonilnike za vaš tiskalnik (pravzaprav, tiskalnik na
vzporednih vratih),
miško, priklopljeno na vrata busmouse ali PS/2 (veliko notesnikov
uporablja miškovni protokol PS/2
za njihove vgrajene sledilne kroglice), nekatere tračne enote in druge takšne
,,znakovne`` naprave. Recite ,,y
``, če je tako prav.
Opomba: Selection 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 serijsko miško, saj ta lepo shaja z X-i, za druge miške pa morate
uporabiti posebne trike.
Včasih je bila podpora programu selection
izbira pri
prevajanju jedra, a je zdaj standardna.
Še ena opomba: Selection je zastarel program. Ime novega programa
je ,,gpm
``.
Lahko počne zanimive zadeve, kot preslikavanje mišjih protokolov,
uporabo več miši ipd.
Sound card
(zvočna kartica)Če imate veliko željo slišati, kako biff
laja, recite ,,y
``, in pozneje
vas bo drug program vprašal o vaši zvočni kartici. (Opomba glede konfiguracije
zvočne kartice: ko vas vpraša, če želite namestiti polno različico gonilniko,
lahko rečete ,,n
`` in prihranite nekaj jedrnega pomnilnika z izbiro le tistih
lastnosti, ki se vam zdijo potrebne.) Zelo priporočam ogled Sound-HOWTO
za
več podrobnosti, če imate zvočno kartico.
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 kartico
ethernet). Obstaja precej obsežen seznam vseh izbir (in način, kako jih uvrstimo
v skripto Configure
), ki ga je zbral Axel Boldt
<axel@uni-paderborn.de>
na naslovu
http://math-www.uni-paderborn.de/~axel/config_help.html
ali po anonimnem ftp-ju na
ftp://sunsite.unc.edu/pub/Linux/kernel/config/
v datoteki krnl_cnfg_hlp.x.yz.tgz
, kjer je x.yz
številka verzije.
V novejših jedrih (2.0.x in pozneje) je ta seznam integriran v drevo izvorne kode.
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
``.
Makefile
)
Ko naredite make config
, 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 ga ne bo treba spreminjati, a nikoli
ne škodi, če pogledate. Po namestitvi novega jedra lahko spreminjate izbire
tudi z ukazom ,,rdev
``.