Jádro systému

Tomáš Krchňák, xkrchnak (at) fi.muni.cz


Obsah


Odkud se jádro bere, číslování verzí

Zdrojový text aktuálního linuxového jádra najdeme na adrese http://www.kernel.org/, nachází se zde také archív starších verzí nebo můžeme použít některé z bližších zrcadel (ftp://ftp.linux.cz/pub/linux/kernel/). Toto jádro se nazývá vanilla a jde o oficiální verzi. Každá distribuce má pak svoje jádro, které obsahuje spoustu dodatečných patchů. Pokud chceme kompilovat ze zdrojových kódů své distribuce, tak například v Gentoo Linuxu lez získat zdrojový kód jádra řady 2.6 příkazem emerge gentoo-dev-sources. V tomto případě se nám soubory se zdrojovým kódem nainstalují do příslušných adresářů, pokud použijeme vanilla kernel, musíme tyto soubory rozbalit do adresáře /usr/src/linux/.

Poslední aktuální jádro je 2.6.8.1. 2 značí hlavní verzi jádra a mění se jen při velkých změnách, další číslo značí stabilní (sudé) nebo vývojovou (liché) verzi. Další čísla označují jen menší updaty a patche. Ke každému jádru je připojen také ChangeLog obsahující seznam změn oproti předchozí verzi. Dále je připojen patch, který nám ze zdrojových textů předcházející verze vyrobí verzi aktuální.


Způsoby konfigurace

Konfigurací jádra rozumíme vybrání si vlastností, které chceme, aby jádro obsahovalo. Je dobré si zjistit, na jakém hardwaru jádro poběží a nezahrnovat zbytečně podporu pro hardware, který v počítači nemáme. U některých vlastností je možná volba zkompilovat jako modul, což sníží paměťové nároky jádra.

Můžeme si vybrat následujících způsobů konfigurace (ve všech případech modifikujeme soubor .config):


Význam důležitých konfiguračních voleb

I když v počítači není žádné hotplug zařízení, je nutné v kernelu (2.6) podporu pro hotplug zapnout, protože všechna zařízení zavádějí moduly právě přes hotplug request.


Principy fungování modulů

Moduly jádra jsou něco jako ovladače zařízení, mohou být zaváděny a uvolňovány za běhu systému, což také usnadňuje aktualizaci ovladačů. Moduly jsou uloženy v adresáři /lib/modules/verze-jadra/ a mohou být zaváděny v průběhu bootování prostřednictvím souboru rc.modules. Aktivní moduly lze vypsat příkazem lsmod(1). K zavedení modulu se používá příkaz insmod(1) nebo modprobe(1), který řeší i závislosti mezi moduly. K odstranění modulu slouží příkaz rmmod(1). O zavádění a odstraňování modulů není většinou potřeba se starat. Slouží k tomu auto-zavaděč pro správu modulů jádra /sbin/kerneld(8). Převezme péči o zavádění a vyjímání modulů tak, jak se objevují požadavky na ně.


Instalace nového jádra, soubor System.map

Vlastní kompilaci jádra spustíme příkazem make. Vytvoří se image jádra v příslušném adresáři (arch/i386/boot/bzImage) a soubor System.map. Pomocí příkazu make modules_install se nainstalují moduly do adresáře /lib/modules/verze-jadra/. Zkopírujeme image jádra a soubor Systém.map do adresáře /boot a příslušně upravíme zavaděč systému.

Soubor System.map je v podstatě tabulka symbolu pro toto jádro. Může vypadat nepřiklad takto:
   ...
   c0493d20 t alsa_sound_exit
   c0493ec0 T snd_minor_info_oss_done
   c0493e00 T snd_info_done
   c0493e70 t snd_info_version_done
   c0493fc0 t alsa_pcm_exit
   ...

Parametry jádra při startu

Před zavedením jádra je mu možné předat parametry a ovlivnit tak jeho chování. Parametry se oddělují bílými znaky a předávají se ve tvaru name[=value_1][,value_2]...[,value_n].

Výčet některých parametrů: