Informace o jadru Linuxu


Co se da napsat o jadru Linuxu? Je to presne to, co postradaji WinDouzy. Tedy 32bitovy program ovladajici hardware a poskytujici aplikacim prostredky pocitace (od seriovych portu pres disky az po pridelovani procesoroveho casu a zabijeni neposednych programu). Jadro bezi v chranenem rezimu procesoru 386 a vyssim s prioritou 0, coz prakticky znamena ze muze zapisovat a cist kamkoli do/z pameti a posilat cokoli na porty. Rozdil proti aplikacim (plati i obecne v UNIXu) je ten, ze aplikace tuto moznost nemaji (zjednodusene receno pokud nejsou nastavene/vykonavane v root rezimu). Pokud chce aplikacni program manipulovat s porty, musi byt setuid root a vzdy nejprve pozadat jadro o povoleni pristupu k tem kterym portum. Normalne se totiz aplikacim porty pocitace nemapuji. Setuid root znamena ze pri vykonavani aplikace se ji propujci efektivni prava vlastnika souboru - roota (napr. jako uzivatel bubo spustim program vgareset ktery je vlastnen rootem a ma nastaven setuid bit). SETUID - neco jako SET User ID on execution.

Vysledek je ten, ze jadro si muze delat cokoli (predpoklada se smysluplna cinnost) ale aplikace se musi podridit nadvlade jadra. Pokud by si treba program (proces) xxx usmyslel ze chce zapisovat primo do registru videokarty a nemel na to pravo, tak se nic nestane nebo ho jadro s klidem odstreli.
Z tohoto duvodu take nenajdete na UNIXovych stanicich viry. Zde totiz neco jako presmerovani preruseni aplikaci vubec neni. Pro ty co se nevyznaji: vsechny hardwarova preruseni (IRQ 0-15) jsou zpracovavana jadrem, respektive vektory preruseni jsou poveseny na vstupni body funkci obsluhujicich hardware (TIMER,DMA,SERIAC,PARALEL,FPU,FDD,HDD etc.).



Toliko teorie, jak to vsak vypada prakticky:

Jadra linuxu se oznacuji cislicemi ve formatu z.y.xxx , prikladem bud 1.2.13 coz je zatim predposledni stabilni verze. Konvenci se stalo, ze pokud je y liche, jedna se o nestabilni (vyvojovou) radu. Nejnovejsi verze linuxu je 2.0.0 (tu popisu na jine strance). xxx oznacuje poradove cislo v rade ( 0,1,2,3 ... ) a zvysuje se vzdy po 1.
Doporucuji pouzivat jadra 1.2.13 a hlavne 2.0.0 - toto nove jadro ma vylepsenu podporu vseho mozneho HW a take spravy pameti.

Jadro se musi spustit. Tomu odpovida:
Jadru muzete zadat parametry, napriklad ze chcete namountovat root filesystem z druhe partition druheho disku -->> root=/dev/hdb2 (muj pripad, spoustim Linux z dosu pres loadlin) nebo prikaz pro pouziti druhe ethernetove karty, coz se standartne pri bootu netestuje
( ether=IRQ,BASE_ADDR,PARAM_1,PARAM_2,NAME -->> ether=15,0x280,eth1 ). Linux jadro zna takovychto prikazu vic, treba pro nastaveni nestandartnich parametru zvukove karty pri bootu ci rezervaci portu ( reserve=BASE_ADDR,KOLIK_ADRES -->> reserve=0x380,8 ), nebo ze chcete mit filesystem readonly -->> ro , readwrite -->> rw .
Zajimave pro lidi s velkym monitorem, co nesnasi 80x25 textovy mod je nabidka pocatecniho textoveho modu dle schopnosti videokarty -->> vga=-3 .

Vsechny varianty, at nahravaji jadro odkudkoli, maji za nasledek to, ze se jadro v pameti rozbali (zabalene se musi vejit do dolniho 1M pameti (resp. 640k) - omezeni 8086), prepne do protected modu a spali za sebou vsechny mosty - zapomene na BIOS i DOS. Potom obvykle nasleduje cast identifikace hardwaru (jaky CPU mate, velikost pameti, disky, seriove porty, paralelni porty, sitove karty, zvukove karty atd).
Je nutno rici, ze jadro testuje pouze to, pro co bylo zkompilovano. Pokud tedy mate jadro ktere je schopno spolupracovat se Soundblasterem 2.0, necekejte ze bude chodit s GRAVISem.
Pri bootovani jadra mozna zazijete hlasku KERNEL PANIC - znamena to fatalni chybu, po ktere neni mozno pokracovat - prikladem bud prikaz k namountovani hlavniho (root) filesystemu z neexistujiciho disku. KERNEL PANIC muzete teoreticky zazit kdykoli behem prace s Linuxem - mne se to stalo pouze trikrat nez jsem prisel na to, ze se mi vzdycky ucpal ventilator na procesoru prachem a CPU se silne prehrival, jinak pravdepodobnost teto chyby u stabilnich verzi jadra s dobrym hardwarem je minimalni (oproti MS WinDOS nulova). Pokud vsak presto zazijete nahodne tyto chyby, prvni zkontrolujte RAM - casovani, pripadne cache ( 1 waitstate pro WRITE muze udelat sve). Mimochodem, cim vice pameti naperete do pocitadla (SIMMU sdilejicich jednu A/D sbernici, tedy paralelne zapojenych - 8*1M atd) tim vetsi sance chybovani (specielne u pameti s ruznou pristupovou dobou (60 a 70 ns).
Pro lidi s RAM > 64 MB : BIOS neni schopen detekovat vice jak 64 MB pameti, protoze velikost vraci jako cislo v 16 bitovem registru kolik je instalovano kB RAM, takze je nutno rict jadru linuxu specilne neco jako ram=128mb (nezkousel jsem, mam jen 64MB, probehlo v newsech). Taky existuji debilni pocitace co nemaji vsechnu pamet "linearni" - proste maji diru v adresnim prostoru - u neznackovych pocitacu se neobavejte :).

V Slackware je mozno najit jadra jiz predkompilovana - vyberete si proste to jadro, ktere ma vsechny ovladace zarizeni jez potrebujete - najdete je v rade Q - ``Extra Linux kernels with custom drivers'' pokud jiz mate Linux nainstalovan nebo v adresari KERNELS v instalacnim stromu pod dosem - jmenuji se zImage ( ja ne, ty soubory).

Osobne doporucuji stejne zkompilovat si jadro znovu (napoprve pozadejte treba kolegu).
Duvodu je nekolik:


Nez se dostanu k vlastni kompilaci (jak to udelat, v kterych adresarich, jako jaky uzivatel atd.) tak par slov k jednotlivym cestam nahozeni systemu:

Poznamka k pouziti predkompilovanych jader pod dosem: programem rawrite je mozne zkopirovat obraz instalacnich disket na disketu (natvrdo od 1. sektoru 0. stopy). Pokud na disketu rovnou nakopirujete jadro (cp zImage /dev/fd0) tak se z ni pak jadro primo spusti (zadny filesystem se pro jadro primo na bootovaci diskete nepouziva).



Takze cesty jak spustit jadro jsem jiz zminil. Nyni jak si zkompilovat vlastni jadro (vsechno delejte jako root).
Jadro je psane v C a proto potrebujete C prekladac, nejlepe GNU C [v Slackware serie D - ``Program Development (C, C++, Lisp, Perl etc.)'' balik gcc263 ] a asi nejaky ten linker (ld) - na serii disku D balik ``ldso''.
Krome toho jak jiste tusite musite mit nekde zdrojaky jadra (rozbalene) a volne misto na disku pro docasne soubory (asi 4 MB, radeji vice). Jadro je obycejne ulozeno v /usr/src/linux coz je link na adresar napr. /usr/src/linux-1.2.13 . Zdrojaky jadra jsou v Slackware v serii D - ``Program Development (C, C++, Lisp, Perl, etc.)'' disket pod nazvy baliku ``lx121_1'' ,``lx121_2'',``lx121_3'' . Protoze zdrojaky se nalezaji na trech disketach (jsou prilis dlouhe a tak byly rozdeleny) musite si nainstalovat vsechny tyto tri baliky.
Dalsi a asi casto pouzivana cesta ziskani zdrojaku jadra je stahnuti si je z Internetu. Pak jsou zdrojaky v jedinem souboru s priponou .tar.gz nebo .tgz nebo .taz . Oboje troje znamena ze byly zatarovany a nasledne zkomprimovany gzipem . Pokud nahodou narazite na soubor s priponou .tar.Z tak bylo pouze pouzito prikazu compress misto gzipu - mensi komprese.
Rozbaleni zdrojaku jadra: prekpokladam ze jsou v souboru linux_kernel_1.2.13.tar.gz Nahrajte tento soubor do adresare jadra /usr/src/linux (nebo kam jinam chcete) a napiste prikaz:
/usr/src/linux/# tar -xzvf linux_kernel_1.2.13.tar.gz
^^^^^^^^^^^^^^^^
rootovsky prompt (:-)
pozor, poradi pismenek v argumentu -xzvf je dulezite, posledni musi byt f !
-x extract
-z filter through gzip
-v verbose
-f XXXXXX file XXXXXXXXX
Tomuto by odpovidalo dvema prikazy neco jako
/usr/src/linux/# gunzip linux_kernel_1.2.13.tar.gz
a
/usr/src/linux/# untar linux_kernel_1.2.13.tar
pro soubor .tar.Z je ekvivalentni
/usr/src/linux/# uncompress linux_kernel_1.2.13.tar.Z
a
/usr/src/linux/# untar linux_kernel_1.2.13.tar
Pro pripad problemu vas odkazuji na manualove stranky prikazu tar , compress a gzip. Mnou zde popisovane modifikace untar, uncompress a gunzip jsou vetsinou skripty jez spusti prislusny program s rozbalovacimi parametry.

Dalsi veci jez je mozno udelat je vzit zdrojaky ktere mate k dispozici ( v Slackware napr. 1.2.1 a 1.2.8 ) a updatnout je na vyssi verzi jadra. K tomu slouzi soubory vetsinou oznacovane jako linux_1.2.1_1.2.2_patch.tar.gz nebo obdobne.
Konkretne: mam v /usr/src/linux zdrojaky verze 1.2.8 a stahnu si patche az do verze 1.2.13 .
Nejprve rozbalim zapakovane patch soubory (ja to delam v adresari /usr/src):
/usr/src/# tar -xzvf *patch.tar.gz
rozbalene vypadaji nejak takto:

/usr/src/# ls *.diff  

linux-1.2.9.diff
linux-1.2.10.diff
linux-1.2.11.diff
linux-1.2.12.diff
linux-1.2.13.diff
No a ted je aplikuji:
/usr/src/# patch -p0 < linux-1.2.9.diff  
/usr/src/# patch -p0 < linux-1.2.10.diff  
/usr/src/# patch -p0 < linux-1.2.11.diff  
/usr/src/# patch -p0 < linux-1.2.12.diff  
/usr/src/# patch -p0 < linux-1.2.13.diff  

Protoze neni v mych silach popsat zde vsechny mozne kombinace problemu jez mohou vyvstat, ukazuji tento postup jako typicky priklad. Z uvedeneho je snad zrejme co delat s pakovanymi soubory, jak je rozbalit i jak upgradovat pomoci diferencialnich patch souboru.

Ilustracni obrazek ukazuje, co mate ocekavat v jakych adresarich a jak se spusti upgrade jadra o 1 stupen pomoci diff souboru (cislo verze na obrazku nesouhlasi, ale princip ano).


Pokud tedy mate vse co jsem popsal, je uz hrackou jadro zkompilovat. Zalogujte se jako root (nic vam ovsem nebrani kompilovat jadro jako normalni uzivatel), prepnete se do adresare jadra (mely by v nem byt soubory Configure , Makefile a jeste nejake README ) a napiste
make config
Nyni prichazi na radu zodpovezeni otazek kolem vaseho hardwaru. Priklad vystupu je uveden vzdy s komentarem 'vo co go'([y] je yes/ano, [n] je no/ne, zavorky se samozrejme nepisou).
Predesilam ze podpora pro cokoli zere pamet, takze na zbytecne veci odpovidejte [n]
Pro lidi s malou RAM (typicky 4MB) uvadim na nekolika mistech co si muzou/nemusi nakonfigurovat aby usetrili par procent pameti ze svych 4hodnemalo megabajtu. Takhle graficky:

Jako ze ne [n]
Radsi si dejte [y]

Pry je take rychlejsi pri male RAMeti (4-8MB) zakomentovat flag -pipe v souboru /usr/src/linux/arch/i386/Makefile:

CFLAGS := $(CFLAGS) -pipe    <--------dejte pryc

ifdef CONFIG_M386
CFLAGS := $(CFLAGS) -m386 -DCPU=386
endif

ifdef CONFIG_M486
CFLAGS := $(CFLAGS) -m486 -DCPU=486
endif

No a kdyz uz jsme u toho kompilatoru: novejsi verze gcc produkuji jako standart exe soubory ve formatu elf. Je to format souboru pouzivany na nekterych unixech. Jeho vyhodou je jednoducha tvorba sdilenych knihoven (relokovatelnych=mapovatelnych kamkoli v adresnim prostoru procesu). Vysledne knihovny jsou o trochu pomalejsi (diky sezrani jednoho z velmimalo registru intelu) nez ty a.outove. U jadra je to fuk. Toto se vztahuje hlavne na jadra 1.3.XX, o kterych jsem udelal mensi obrazovou galerii. Pokud pouzivate gcc pod 2.7.0, je jadro v a.out formatu a pro gcc 2.7.0 a vyssi je v elfu (vono se nic nedeje, stejne to je jen zalezitost bootbloku). Jedine co muze delat problemy (obecne, nejen u jadra) je to, ze starsi verze gcc odmitaji kompilovat novejsi programy a naopak novejsi gcc odmitaji kompilovat starsi verze jader (:-^)

A uz uplne nakonec pred okomentovanym vystupem typickeho konfiguracniho skriptu, kdyby se vam stalo neco ve stylu chyby ``fatal error - caught signal 11. Compile stop.'' nebo neco podobneho - nahodne (mne se to stalo uz davno, nepamatuji si presne ani syntaxi ani to cislo) tak si zkontrolujte pamet (RAM) hlavne casovani v BIOSu, protoze toto muze znamenat chybu parity pameti nebo prehrivani procesoru. Podobne se chova server X-windows. Nutno podotknouti ze tuto chybu vyvola treba spatna kombinace gcc a ld (ale vzdycky na stejnem miste).



Doba kompilace

Zalezi jak na rychlosti procesoru tak na velikosti pameti. Pro systemy s RAM 4 MB je degradovan i pocitac s pentiem na uroven pocitace 386SX s hodne RAM. Takze pokud mozno vyhnete se swapovani a nehrajte pri kompilaci DOOMa (ja to delam, ale s 32 MB RAM to jde, i kdyz to zdrzuje).
Pocitadlo s 8 MB RAM by uz melo kompilovat normalne bez swapovani.
Doby jsou asi 1.5 hodiny pro 386DX40 s malo pameti a asi 15-20 minut pro 486DX2/80 s >=8 RAMeti, asi 8-10minut pro PENTIUM-180 s >=32 MB RAM.



*
* General setup
*
Kernel math emulation (CONFIG_MATH_EMULATION) [n]
Emulace koprocesoru - pokud nemate HW kopr [y], pro procesory >=486DX s integrovanym kopr. [n])

Normal floppy disk support (CONFIG_BLK_DEV_FD) [y]
Podpora floppy (dejte [n] pokud vas floppy nezajima nebo mate super malo RAM)

Normal (MFM/RLL) disk and IDE disk/cdrom support (CONFIG_ST506) [y]
Kdo ma jen SCSI disk at da [n]

*
* Please see drivers/block/README.ide for help/info on IDE drives
*
Use old disk-only driver for primary i/f (CONFIG_BLK_DEV_HD) [n]
Doporucuji nechat na [n], starsi ovladac nema podporu sekundarniho radice

Use new IDE driver for primary/secondary i/f (CONFIG_BLK_DEV_IDE) [y]
Novy IDE ovladac podporujici kombinaci az 4 disku/cdrom

Include support for IDE/ATAPI CDROMs (CONFIG_BLK_DEV_IDECD) [n]

Pokud jedna z vasich cdrom bude ATAPI (IDE) tak dejte [y]

XT harddisk support (CONFIG_BLK_DEV_XD) [n]

Tohle asi uz nikdo nema -->> [n]

Networking support (CONFIG_NET) [y]

Pokud planujete spojeni >=2 pocitacu ci chcete lokalne zkouset neco s TCP/IP, dejte [y]


Limit memory to low 16MB (CONFIG_MAX_16M) [y]

Pro systemy s RAM>16MB dejte [n], jinak [y]


PCI bios support (CONFIG_PCI) [n]

Takzvane 'self explanatory'


System V IPC (CONFIG_SYSVIPC) [y]

Nechte na [y], docela dulezite (IPC jako Inter Process Communication)


Kernel support for ELF binaries (CONFIG_BINFMT_ELF) [n]

ELF je novy format pro binarni exe soubory, pro starsi Slackware 2.xx.xx instalaci staci [n], ale pro Slackware 3.XX.XX a vyssi je nutnost [y]


Use -m486 flag for 486-specific optimizations (CONFIG_M486) [y]

Pro procesory 486 doporucuji [y], jadro je asi o 5% vetsi a rychlejsi. Pouze pro systemy s <=4 MB RAM by mohla uspora 5% pameti zvysit vykonnost o vic -->> [n]


*
* Loadable module support
*
Set version information on all symbols for modules (CONFIG_MODVERSIONS) [n]

Loadable module je vetsinou ovladac, ktery z nejakych duvodu neni nutne a ucelne davat do jadra (treba streamerovy QIC-80 tape ovladac) ale musi se kompilovat se stejnou verzi jadra pod kterou pak pobezi.


*
* Networking options
*

Pokud jste povolili sit, tak se na vas vztahuje nasledujici:


TCP/IP networking (CONFIG_INET) [y]

Samo ze [y], pro malo pameti dejte dalsi otazky [n]


IP forwarding/gatewaying (CONFIG_IP_FORWARD) [n]

Myslim ze kdyz chcete pouzit linux jako router


IP multicasting (CONFIG_IP_MULTICAST) [n]

Nektere ethernetove karty jsou schopny poslat paket vice jak 1 stanici zaroven. Trochu jako broadcast, ale limitovany vetsinou 8 prijemci. Tohle snad vyuziva DOOM aby nehltil sit. Zere pamet a neni to nutne.


IP firewalling (CONFIG_IP_FIREWALL) [n]

'Ochranna zed' cili filtrovac paketu. Uzitecne pro routery/gatewaye, ale potrebuje externi soft pro nakonfigurovani (je na sunsite.unc.edu)


IP accounting (CONFIG_IP_ACCT) [n]

Myslim ze dela zaznamy o proslych IP paketech, externi soft vyzadovan.


*
* (it is safe to leave these untouched)
*

Dalsi nechte tak jak jsou:


PC/TCP compatibility mode (CONFIG_INET_PCTCP) [n]
Reverse ARP (CONFIG_INET_RARP) [n]

Podpora pro Reverse Address Resolution Protocol. Kdyz jste stanice bez disku tak vam po startu server s podporou RARP muze rict jake IP mate. Lepsi nez tohle je ale bootp.


Assume subnets are local (CONFIG_INET_SNARL) [y]
Disable NAGLE algorithm (normally enabled) (CONFIG_TCP_NAGLE_OFF) [n]
The IPX protocol (CONFIG_IPX) [n]

Pod linuxem (pod emulatorem dosu - DOSEMU) se da rozjet i IPX jako klient/server - treba novell


*
* SCSI support
*
SCSI support? (CONFIG_SCSI) [n]

Normalni lidi tady budou mit [n], ale ja mam SCSI cdrom a mel jsem mimochodem trosku problemy s detekci meho radice... zminim se pozdeji


*
* Skipping SCSI configuration options...
*
*
* Network device support
*

Tady si reknete HW, kterym budete cpat vase pakety


Network device support? (CONFIG_NETDEVICES) [y]

Chcete podporu nejakeho HW zarizeni (spojeni s vnejsim svetem) ? Pokud ano, dejte [y], pokud budete pouzivat jen loopback nebo nechcete sit, tak [n]. Loopback je interni presmerovani paketu na vas, vysvetlim v sekci site.


Dummy net driver support (CONFIG_DUMMY) [n]

Myslim ze obdoba /dev/null pro IP datagramy


SLIP (serial line) support (CONFIG_SLIP) [y]

SLIP je protokol pro prenos IP paketu pres seriovou linku/modem. Je hloupejsi nez PPP.


PPP (point-to-point) support (CONFIG_PPP) [y]

PPP je chytry protokol pro IP pres seriac/modem. Umi i IPX a kompresi hlavicek/dat IP paketu, mj. i autorizaci uzivatelu/pocitace. Dalsi popis v sekci site.


PLIP (parallel port) support (CONFIG_PLIP) [n]

Dva pocitace se daj spojit i jednoduchym paralelnim kabelem s myslim 11 zilami. Nezkousel jsem, ale pozaduje LPT s funkcnim IRQ prerusenim.


Do you want to be offered ALPHA test drivers (CONFIG_NET_ALPHA) [n]

Neni nutne, neni nutne, aby bylo.....


Western Digital/SMC cards (CONFIG_NET_VENDOR_SMC) [n]
AMD LANCE and PCnet (AT1500 and NE2100) support (CONFIG_LANCE) [n]
3COM cards (CONFIG_NET_VENDOR_3COM) [y] 3c501 support (CONFIG_EL1) [n]
3c503 support (CONFIG_EL2) [n]
3c509/3c579 support (CONFIG_EL3) [y]
Other ISA cards (CONFIG_NET_ISA) [n]
EISA, VLB, PCI and on board controllers (CONFIG_NET_EISA) [n]

Nejake dalsi adaptery?


Pocket and portable adaptors (CONFIG_NET_POCKET) [n]

Tohle jsou takzvane pocket ethernet adaptery pripojovane treba na paralelni port (Diky za radu)


*
* CD-ROM drivers (not for SCSI or IDE/ATAPI drives)
*

Nez se zacaly delat ATAPI cdromy tak bylo spoustu standartu. Tohle muze delat problemy, vyberte si ten spravny ovladac. Upozornuji: toto neni pro ATAPI/SCSI cdromy !!!


Sony CDU31A/CDU33A CDROM driver support (CONFIG_CDU31A) [n]
Mitsumi (not IDE/ATAPI) CDROM driver support (CONFIG_MCD) [n]
Matsushita/Panasonic CDROM driver support (CONFIG_SBPCD) [n]
Aztech/Orchid/Okano/Wearnes (non IDE) CDROM support (CONFIG_AZTCD) [n]
Sony CDU535 CDROM driver support (CONFIG_CDU535) [n]
*
* Filesystems
*

Spousta filesystemu zde je vicemene historicka a zere pamet. U linuxu se stal standartem ext2fs.


Standard (minix) fs support (CONFIG_MINIX_FS) [n]

Neni nutny. V tomto filesystemu jsou instalacni diskety (root disk)


Extended fs support (CONFIG_EXT_FS) [n]

Predchudce ext2fs. Nedoporucuji.


Second extended fs support (CONFIG_EXT2_FS) [y]

Linuxacky prirozeny (native) fs. Podpora pro nazvy 255 pismen, omezuje sam fragmentaci, male alokacni jednotky i pro velke disky. Linux se da spustit i na msdogovem fs, ale jen tak pro vyzkouseni-pak neni nutne tento fs pridavat.


xiafs filesystem support (CONFIG_XIA_FS) [n]

Snad neco z pracovnich stanic, pro normalni uzivatele k nicemu


msdos fs support (CONFIG_MSDOS_FS) [y]

Pro disky s msdos fs FAT dovoluje cteni/zapis. Nutne pro pouzivani disket s FAT formatem


umsdos: Unix like fs on top of std MSDOS FAT fs (CONFIG_UMSDOS_FS) [n]

Na msdosovem FAT disku dovoli pouzivat vetsinu vyhod ext2fs, ale je pomaly a doporucuji jen pro otestovani linuxu. Pro uzivatele ext2fs vicemene k nicemu.


/proc filesystem support (CONFIG_PROC_FS) [y]

Tohle neni typ diskoveho filesystemu, to je v podstate adresar /proc pod kterym najdete soubory reprezentujici vas hardware, procesy a treba i celou RAM pamet. Je pouzivan spoustou utilitek a myslim ze se docela vyplati pridat ho.


NFS filesystem support (CONFIG_NFS_FS) [y]

Network File System - SUNovska norma jak vyuzivat/mountovat pres sit cizi disky. Uzitecne pro servery diskless stanici. Obdoba novellu pro unix, ale pry pomala.


ISO9660 cdrom filesystem support (CONFIG_ISO9660_FS) [n]

Pro (pouze) cdromy uplna nezbytnost. [y]


OS/2 HPFS filesystem support (read only) (CONFIG_HPFS_FS) [n]

Dokaze cist OS/S disky Readonly.


System V and Coherent filesystem support (CONFIG_SYSV_FS) [n]

Z pracovnich stanic.


*
* character devices
*

Jiste vite ze UNIX rozeznava znakove/blokove zarizeni. Sem obecne patri seriove porty, klavesnice, mysi ale nevim proc tu jsou v sekci znakove zarizeni QIC ovladace (streamer).


Cyclades async mux support (CONFIG_CYCLADES) [n]

Karta na ktere je myslim 16 seriovych portu vyuzivajicich jen jedno IRQ. Pokud ji nemate dejte [n]


Parallel printer support (CONFIG_PRINTER) [n]

I pro tisk na tiskarne je potreba pridat podporu. Tady.


Logitech busmouse support (CONFIG_BUSMOUSE) [n]

Tohle neni pro seriove mysi. Busmouse mysi maji vlastni port a tudiz potrebuji ovladac v jadre.


PS/2 mouse (aka "auxiliary device") support (CONFIG_PSMOUSE) [n]
Microsoft busmouse support (CONFIG_MS_BUSMOUSE) [n]

Pozor, neplest si s microsoft mouse coz je protokol 2 tlacitkovych seriovych mysi


ATIXL busmouse support (CONFIG_ATIXL_BUSMOUSE) [n]
QIC-02 tape support (CONFIG_QIC02_TAPE) [n]

Pro streamer


QIC-117 tape support (CONFIG_FTAPE) [n]

Taktez


*
* Sound
*
Sound card support (CONFIG_SOUND) [n]

Pokud mate zvukovou kartu dejte [y]. Budete jeste muset odpovedet na typ,adresu,irq vasi zvukove karty. Detailneji popisu v sekci zvukovych karet.


*
* Kernel hacking
*
Kernel profiling support (CONFIG_PROFILE) [n]

Vyvojova zalezitost. Nechte na [n]


The linux kernel is now hopefully configured for your setup.
Check the top-level Makefile for additional configuration,
and do a 'make dep ; make clean' if you want to be sure all
the files are correctly re-made




Jakmile skonci konfiguracni skript a jste si jisti ze jste vsechno zadali spravne, muzete zacit vlastni kompilaci. Provede se to v adresari jadra pomoci prikazu
make dep ; make clean ; make zImage
pro vytvoreni binarniho obrazu jadra v podadresari ./arch/i386/boot/ nebo treba
make dep ; make clean ; make /dev/fd0
coz by melo zkompilovat jadro a rovnout nahrat na floppy A: ( fd0 ) . Doporucuji kompilovat zImage protoze si ho pak muzete na disketu/y stejne nakopirovat. Provede se to treba
cat zImage > /dev/fd0

nebo jeste lepe
cp zImage /dev/fd0
jako root (ordinerni uzivatele vetsinou nemaji pravo manipulovat s disketami, zalezi jen na nastaveni pristupovych prav). Warning - zImage , zimage a ZIMAGE jsou ruzna klicova slova !!!
make dep --- make depend, vytvori soubory zavisle na parametrech, treba IRQ,ADDR,DMA zvukove karty a co chcete
make [kam/][co] --- vytvori (kompiluje a linkuje) binarni obraz jadra v zkomprimovane podobe
make clean --- odstrani vsechny *.o soubory, coz je produkt prekladace pred slinkovanim dohromady, po kompilaci doporucuji provest protoze odstrani nekolik MB zbytecnych souboru z disku.
make zImage --- zkompiluje jadro a ulozi ho v ./arch/i386/boot/zImage v zkomprimovane podobe (samorozbalitelne).
make zlilo --- zkompiluje jadro a ulozi ho v hlavnim (root) adresari pod nazvem vmlinuz a zavola lilo pro obcerstveni ukazatelu

Pokud jste vyvojari, tak pro vas bude zajimava informace, ze pri pristim prikazu make se od minule kompilace uchovavaji objektove prelozene soubory *.o, coz ma prakticky nasledek ten, ze pokud upravite 1 pismeno v nejakem *.c souboru tak bude vytvoreni jadra trvat pod minutu (samozrejme ze mezi kompilacemi nebudete chtit pouzit make clean).



Jak eliminovat problemy s rozpoznanim nekterych zarizeni, specielne SCSI radicu

Pokud jste narazili na problem, ze jadro neni schopno pri startu rozpoznat nektere vase periferie, tak budete muset bud predat pri startu jadru konfiguracni parametry pro toto zarizeni (kde ho ma hledat, treba
aha152X=0x340,7,0xEC000
pro ADAPTEC - jen ilustracni) nebo zasahnout do zdrojovych kodu jadra v miste kde se pritomnost zarizeni rozpoznava podle jeho signatury v ROMky ci BIOSu a jadro zkompilovat znovu. Muj pripad: mam SCSI radic Future Domain TMC-1610 a SCSI cdrom TOSHIBA. SCSI radic mam bez romky a jadro ho tudiz nenajde. Nasel jsem si prislusny ovladac v zdrojacich jadra a ukazu vam na prikladu jak jsem ho modifikoval (teda je to prasarna ale co). Tento soubor je umisten vzhledem k adresari jadra /usr/src/linux v podadresarich drivers/scsi/fdomain.c
Vypis kriticke casti a toho co jsem pridal: nasledujici radky znamenaji v cecku neco ve stylu `` kdyz najdes tento string sig_offset znaku od zacatku rom a bude dlouhy sig_length znaku (delka stringu) tak mame tuto kartu/radic ''. Pote co se identifikuje rom tak se jeste probuje na kterem z moznych portu je vlastni brouk radice. Jak je zrejme, u radicu bez rom se vlastne skonci v okamziku kdy se nenajde zadna pismenna identifikace vyrobce/modelu v rom. Moje neciste reseni ma za nasledek to, ze se porovna nulovy retezec "" s necim v pameti, coz je vzdy splneno a rovnou se predpoklada ta spravna karta.

fdomain.c :
################ naky sracky az sem ##################### 

struct signature {
   char *signature;
   int  sig_offset;
   int  sig_length;
   int  major_bios_version;
   int  minor_bios_version;
   int  flag; /* 1 == PCI_bus, 2 == ISA_200S, 3 == ISA_250MG, 4 == ISA_200S */
} signatures[] = {
   /*          1         2         3         4         5         6 */
   /* 123456789012345678901234567890123456789012345678901234567890 */
   { "FUTURE DOMAIN CORP. (C) 1986-1990 1800-V2.07/28/89",  5, 50,  2,  0, 0 },
   { "FUTURE DOMAIN CORP. (C) 1986-1990 1800-V1.07/28/89",  5, 50,  2,  0, 0 },
   { "FUTURE DOMAIN CORP. (C) 1986-1990 1800-V2.07/28/89", 72, 50,  2,  0, 2 },
   { "FUTURE DOMAIN CORP. (C) 1986-1990 1800-V2.0",        73, 43,  2,  0, 3 },
   { "FUTURE DOMAIN CORP. (C) 1991 1800-V2.0.",            72, 39,  2,  0, 4 },
   { "FUTURE DOMAIN CORP. (C) 1992 V3.00.004/02/92",        5, 44,  3,  0, 0 },
   { "FUTURE DOMAIN TMC-18XX (C) 1993 V3.203/12/93",        5, 44,  3,  2, 0 },
   { "IBM F1 P2 BIOS v1.0104/29/93",                        5, 28,  3, -1, 0 },
   { "Future Domain Corp. V1.0008/18/93",                   5, 33,  3,  4, 0 },
   { "Future Domain Corp. V1.0008/18/93",                  26, 33,  3,  4, 1 },
				/* This next signature may not be a 3.5 bios */
   { "Future Domain Corp. V2.0108/18/93",                   5, 33,  3,  5, 0 },
   { "FUTURE DOMAIN CORP.  V3.5008/18/93",                  5, 34,  3,  5, 0 },
   { "FUTURE DOMAIN 18c30/18c50/1800 (C) 1994 V3.5",        5, 44,  3,  5, 0 },
   { "FUTURE DOMAIN TMC-18XX",                              5, 22, -1, -1, 0 },  -->> tenhle kontroler mam
   { "",                                                     0, 0, -1, -1, 0 },  -->> a tohle jsem si pridal
};

################ naky sracky dal ##################### 

Tento postup je mozny vzdy kdyz je pritomnost karty rozpoznana podle jeji ROMky. Podle me zkusenosti vetsina SCSI ovladacu je psana timto zpusobem a tudiz vam muze pridani prazdne signatury pomoci (cistsi je ale opravdu rici jadru kde ma dany radic hledat jako parametr pri startu, fdomain.c bohuzel tento pristup nepodporuje).


Zpatky na hlavni stranku
ˆ