Výber jadra

Jadro je časť operačného systému, ktorý sprostredkováva prístup k hardwaru, riadenie procesov a celkovú kontrolu nad systémom. Jadro obsahuje podporu pre hardwarové zariadenie, takže výber jadra pre váš systém je veľmi dôležitý krok inštalácie.

Slackware postkytuje okolo šesťdesiat predkompilovaných jadier, z ktorých si môžete vybrať, každé so štandardnou množinou ovládačov a špecifickými ovládačmi navyše. Môžete bežať jedno z predkompilovaných jadier, alebo si môžete postaviť svoje vlastné zo zdrojového kódu. Tak či onak, musíte zaistiť aby Vaše jadro podporovalo to čo Váš systém podporuje.

Adresár /kernels na Slackware CD-ROM

Predkompilované jadrá od Slackware-u nájdete v adresári /kernels na Slackware CD-ROM, alebo na FTP serveri v hlavnom adresári Slackware-u. Dostupné jadrá sa menia tak, ako vznikajú nové verzie, takže dokumentácia, ktorú nájdete v tom adresári, je ten najdôveryhodnejší zdroj informácií. Adresár /kernels má podadresáre pre každé z jadier. Tieto podadresáre majú rovnaké meno ako ich zodopvedajúci boot disk. V každom podadresári nájdete nasledujúce súbory:

SúborÚčel
System.mapSystémová mapa pre toto jadro
bzImage (alebo zImage)Samotný image jadra
configKonfigurácia zdrojového kódu pre toto jadro

Ak chcete zvolené jadro použiť, okopírujte súbory System.map a config do Vášho adresára /boot a okopírujte image jadra do /vmlinuz. Spustite /sbin/lilo(8) aby ste nainštalovali LILO pre nové jadro a potom reštartujte váš systém. To je všetko čo potrebujete, aby ste nainštalovali nové jadro.

Jadrá, ktoré končia s “.i” sú IDE jadrá. To znamená, že neobsahujú žiadnu podporu pre SCSI v základnom jadre. Jadrá, ktoré končia s “.s” sú SCSI jadrá. Obsahujú všetku podporu pre IDE, ktorá je v .i jadrách, plus podporu pre SCSI.

Kompilovanie jadra zo zdrojového kódu

Noví užívatelia často kladú otázku “Mal by som kompilovať jadro pre môj systém?”. Odopoveď znie celkom určite možno. Existuje málo prípadov, kedy potrebujete kompilovať jadro špecifické pre váš systém. Väčšina užívateľov môže použiť predkompilované jadro a nahrávateľné moduly, aby dosiahli úplne funkčný systém. Jadro, pre váš systém by ste mali kompilovať v prípade prechodu na verziu jadra, ktorú práve neposkytujeme v Slackware-i, alebo ak potrebujete upraviť jadro tak, aby ste dosiahli podporu pre špeciálne zariadenie, ktoré nie je podporované v pôvodnom zdrojovom kóde jadra.

Vytvorenie vlastného jadra nie je až také ťažké. Prvým krokom je uistiť sa, že na systéme máte nainštalované zdrojové kódy jadra. Uistite sa, že ste počas inštalácie nainštalovali balíky zo série K. Mali by ste sa tiež presvedčiť, že ste nainštalovali sériu D, hlavne C kompilátor, GNU make a GNU binutils. Vo všeobecnosti, je dobrý nápad mať nainštalovnú celú sériu D, ak plánujete robiť akýkoľvek vývoj. Tak, a teraz sme pripravení vyrobiť jadro:

   $ su -
   Password:
   # cd /usr/src/linux

Prvý krok, je priviesť zdrojový kód jadra do východiskového stavu. Dosiahneme to týmto príkazom:

   # make mrproper

Teraz môžete nakonfigurovať jadro pre váš systém. Súčasné jadro ponúka tri spôsoby ako to urobiť. Prvý je pôvodný, textovo orientovaný systém otázok a odpovedí. Opýta sa hromadu otázok a potom vytvorí konfiguračný súbor. Problém s touto metódou je, že ak urobíte chybu musíte začať odznova. Metóda, ktorú preferuje väčšina ľudí je systém ponúk. No a nakoniec, je tu nástroj na konfigurovanie jadra v X. Vyberte si a spustite zodpovedajúci príkaz:

   # make config       (textovo orientovaná verzia otázok a odpovedí)
   # make menuconfig   (textovo orientovaná verzia riadená cez menu)
   # make xconfig      (graficky orientovaný verzia pre X, najprv sa uistite, že ste v X)

Obrázok 4-1. Konfiguračný program jadra riadený cez menu.

Novým užívateľom sa bude zdať používanie menuconfig asi najjednoduchšie. Poskytuje pomocné obrazovky, ktoré vysvetľujú rôzne časti jadra. Po nakonfigurovaní vášho jadra, ukončite konfiguračný program. Tým sa zapíšu potrebné konfiguračné súbory. Teraz môžeme pripraviť adresáre so zdrojovým kódom na kompilovanie:

   # make dep
   # make clean

Ďalším krokom, je skompilovanie jadra. Najprv skúste spusiť zImage príkaz napísaný nižšie. Ten zlyhá, ak Vaše jadro je príliš veľké. Nemajte obavy, ešte stále môžete jadro vytvoriť s bzImage príkazom.

   # make zImage      (toto vyskúšajte najprv)
   # make bzImage     (ak make zImage zlyhá, spustite tento príkaz)

Môže to chvíľu trvať v závislosti na rýchlosti vášho CPU. Počas kompilovania budete vidieť hlásenia kompilátora. Po skompilovaní obrazu jadra, by ste mali skompilovať tie časti jadra, ktoré ste označili ako modulárne.

   # make modules

Teraz môžete nainštalovať jadro a moduly, ktoré ste skompilovali. Pre nainštalovanie jadra na systém Slackware, by ste mali použiť tieto príkazy:

   # mv /vmlinuz /vmlinuz.old
   # cat arch/i386/boot/zImage > /vmlinuz
   # mv /boot/System.map /boot/System.map.old
   # cp System.map /boot/System.map

Nahraďte zImage s bzImage ak ste museli skompilovať veľké jadro. Mali by ste tiež upraviť súbor /etc/lilo.conf a pridať sekciu, ktorá umožní nabootovanie vášho starého jadra pre prípad, že to nové nefunguje. Keď to urobíte, spusite /sbin/lilo aby ste nainštalovali nový boot blok. Teraz môžete reštartovať systém so svojím novým jadrom.

Používanie modulov jadra

Moduly jadra je iný názov pre ovládače zariadení, ktoré môžu byť vložené do bežiaceho jadra. Umožňujú rozšíriť hardware podporovaný vaším jadrom bez nutnosti výberu iného jadra, alebo kompilovania jadra.

Moduly môžu tiež byť pridávané a odstraňované kedykoľvek, aj počas behu systému. To uľahčuje systémovým administrátorom prechod na iné verzie špecifických ovládačov. Nový modul môže byť skompilovaný, starý odstránený a nový pridaný - to všetko bez potreby reštartovať stroj.

Moduly sú uložené v adresári /lib/modules/<verzia jadra> na Vašom systéme. Môžu byť nahrávané počas bootovania cez súbor rc.modules. Tento súbor je veľmi dobre okomentovaný a ponúka ukážky pre hlavné hardwarové komponenty. Zoznam modulov, ktoré sú práve aktívne, vám zobrazí príkaz lsmod(1):

   # lsmod
   Module                  Size  Used by
   parport_pc              7220   0 
   parport                 7844   0  [parport_pc]

Ako môžete vidieť, mám nahraný len modul pre paralelný port. Na odstránenie modulu z jadra použijeme príkaz rmmod(1). Moduly môžu byť pridávané do jadra príkazom modprobe(1), alebo príkazom insmod(1). modprobe je zvyčajne bezpečnejšie, pretože nahrá aj moduly, na ktorých modul, ktorý sa pokúšate nahrať, závisí.

Veľa užívateľov nikdy nemusí nahrávať alebo odstraňovať moduly z jadra ručne. Pužívajú autoloader jadra pre spravovanie modulov. Všetko čo pre to potrebujete, je odkomentovanie riadku /sbin/kerneld(8) v /etc/rc.d/rc.modules a autoloader naštartuje. Postará sa o nahrávanie a odstraňovanie modulov podľa vašich požiadaviek. Požiadavkou je vlastne pokus o prístup na zariadenie.

Viac informácií môžete nájsť v manuálových stránkach pre každý z týchto príkazov a v súbore rc.modules.