Jádro Linux - popis, konfigurace

Tomáš Bezděk, tomas@starhill.org

Obsah


Co je jádro, historie, číslování verzí

Jádro operačního systému je vrstva mezi hardwarem a uzivatelským prostorem, která se stará hlavně o správu paměti, přerušení a přidělování procesorovho času. Dělí se na dva základní typy - monoliticka a mikrojadra. Mikrojádro ovládá hardware pomocí systému modulů které mezi sebou komunikují pomocí přerušení; monolitická jádra běží v jednom paměťovém prostoru. Jádro Linux je kombinací obou těchto přístupů

Prvná verze jádra Linux zvěřejněna 17. září 1991. Autorem je finsky student Linus Torvalds, který při návrhu Linuxu vycházel z Minixu Tato verze byla optimalizována pro procesor 386, pro nabootování bylo potřeba aby na počítači běžel jiný operační systém a měl 10 239 řádek kódu. Verze 1.0 byla vydána 14.3.1994, verze 2.0 9.6.1996. Poslední stabilní verze 2.6.22.8 vyšla 25.9. 2007, podporuje kolem 20hlavních hardwarových architektur a obsahuje 8 500 039 řádků kódu.

Od verze 2.6.11 došlo ke změně v číslování verzí jádra. Původní číslování bylo ve formátu A.B.C (např. 2.6.22), kde A je verze jádra, B vývojová řada a C pořadí vydání. U vývojové řady označovalo sudé číslo stabilní verzi a liché číslo verzi vývojovou. Nové číslování jádra přešlo z 2.6.x na jemnější vývojovou verzi 2.6.x.y. Stabilní verze zůstává 2.6.x, ale byl zrušen význam sudých/lichých verzí.

Kromě verzí, která obsahují jenom čísla, se můžete také setkat s verzemi, která obsahují krátké písmenné řetězce, jako například mm2, které označují kernel z development stromu konkrétního člověka -- -ac ze stromu Alana Coxe, -mm Andrewa Mortona, nebo -ck od Cona Kolivase.

Kde získat Linux, patchování, kompilace a instalace

Aktuální verzi jádra je možné stáhnout na www.kernel.org jako tarball, nebo jako sadu patchů oproti nižší verzi. Zároveň je možné jádro získat z distribučních balíků. Distribuční jádra bývají narozdíl od vanilla jádra obohacena o sadu distribučních patchů, které v jádře upravují některé vlastnosti specifické pro danou distribuci. Distribuční patche je samozřejmě možné stáhnout samostatně a distribuční jádro si z vanilla verze vyrobit.

Zdrojové kódy jádra je před kompilací nejprve rozbalit a případně na ně aplikovat některé patche. Jádro rozbalíme pomocí programu tar(1) do adresáře /usr/src/. Jádro se rozbalí do adresáře s názvem odpovídajícím verzi jádra (např. /usr/src/linux-source-2.6.18) a je třeba jej přejmenovat, nebo vytvořit symbolický odkaz tak, aby zdrojové kódy byly dostupné v adresáři /usr/src/linux/. Patchování se provádí standardním způsobem, takže jej není třeba zvlášť rozebírat.

Kompilace jádra se dělí do několika fází. Nejprve je potřeba přejít do adresáře /usr/src/linux/. řed kompilací je nutné jádro zkonfigurovat. Konfigurace se provádí několika způsoby. a potom spustit příkaz make(1) s některým z následujících parametrů:

config
Update současné konfigurace pomoci příkazové řádky
menuconfig
Update současné konfigurace v textovém režimu
xconfig
Update současné konfigurace v grafickém režimu (zobrazení pomocí QT)
gconfig
Update současné konfigurace v grafickém režimu (zobrazení pomocí GTK)
oldconfig
Update současné konfigurace pomocí předloženého souboru .config
randconfig
Nová konfigurace s náhodnými odpověďmi
defconfig
Nová konfigurace s výchozími odpověďmi
allmodconfig
Nová konfigurace, všechny možnosti jako moduly, pokud je to možné
allyesconfig
Nová konfigurace, všechny volby jsou akceptovány
allnoconfig
Nová konfigurace, všechny volby jsou zamítnuty

Jádro zkompilujeme pomocí příkazu make(1) bez parametrů. Tím se zkompiluje základní jádro, vytvoří se komprimovaný obraz jádra (bzImage) a všechny moduly. Instalaci provedeme příkazem make install (vlastní instalace jádra) a make modules_install (instalace modulů jádra do adresáře INSTALL_MOD_PATH, což většinou bývá /lib/modules/$KERNEL_NAME. Posledním krokem instalace je úprava zavaděče systému tak, aby naše nové jádro našel. Další možnost jak zkompilovat a nainstalovat jádro je použít některý z distribučních nástrojů, například v Debianu je nastroj make-kpkg(1). Ten jádro zkonfiguruje, zkompiluje a vytvoří balík .deb který stačí nainstalovat standardním způsobem.

Parametry jádra při startu

Před nabootováním jádra můžeme jeho chování částečně ovlivnit pomocí parametrů zadávaných na příkazové řádce zavaděče (GRUB), nebo zapsaných v jeho konfiguraci (GRUB, LILO).

Parametry se zadávají ve formátu jmeno[=hodnota_1][,hodnota_2]...[,hodnota_10].

Mezi nejčastěji pouřívané volby patří

init=...
příkaz, který se má spustit po načtení jádra
root=...
řekne jádru, na kterém oddílu má hledat kořenový souborový systém
ro, nebo rw
řekne jádru jestli má přpojit kořenový souborový systém pouze pro čtení, nebo i pro zápis
panic=N
po kolika vteřinách se má jádro restartovat, pokud zpanikaří

Další volby a přesnější popis parametrů lze nalézt v manuálové stránce bootparam

Literatura