Jádro systému GNU/Linux

Jiří Novotný, xnovotn5@fi.muni.cz

Obsah

Co to je

Linux je jádro (základ) pro část unixových operačních systémů (OS). Tyto OS se označují jako linuxové.

Odbočka kolem názvu

Slovo Linux se používá ve více významech, což může v některých případech způsobit zmatek. Linux může znamenat:

Stručný popis

Jedná se o monolitické jádro, jehož některé součásti (označované jako moduly) je obvykle možné zavádět/odebírat za běhu. Proto se někdy označuje i jako jádro hybridní. Další základní vlastnosti jsou:

Stručný souhrn zkrácené historie Linuxu v kostce

Číslování verzí v letech 2003-2011

Označení verze má tvar 2.6.X[.Y] (např. 2.6.13 nebo 2.6.28.9).

Změna čísla X se považuje za novou verzi jádra (např. nové funkce, vylepšení, opravy, ale třeba i odstranění nějakého zastaralého ovladače nebo subsystému).
Změna čísla Y znamená opravu chyb ve verzi X, (pokud možno) beze změny funkcionality.

Číslování verzí od roku 2011

V červenci 2011 došlo ke změně v číslování. Čísla 2.6 byla nahrazena číslem 3 a číslo X se začalo počítat od nuly. Po jádru 2.6.39 tedy místo jader 2.6.40 a 2.6.41 následovala jádra 3.0 a 3.1.

Změna v číslování zde neoznačuje žádnou velkou změnu v konfiguraci jádra; důvodem byla pouze potřeba vynulování čísla X, které už začínalo být až příliš vysoké.

Vývojový cyklus

  1. Období pro příjem větších změn do jádra (tzv. merge window, trvá obvykle cca 2 týdny).
  2. Po uplynutí tohoto období se vydá první vývojová verze, označená -rc1 (release candidate 1, např. 3.3-rc1).
  3. Začne stabilizační období pro -rcX verzi.
  4. Po dobu cca 1 týdne se do jádra přijímají obvykle už pouze opravy a změny, které by neměly zhoršit jeho stabilitu.
  5. Po uplynutí tohoto období se jádro vyhodnotí a pokud je už považováno za dostatečně stabilní ("lepší to už nebude"), vydá se nová stabilní verze (např. 3.3). V opačném případě se vydá nová vývojová verze -rcX+1 (jdi zpět na bod 3).

Stabilní verze je nadále ještě nějakou dobu udržována (minimálně do té doby, než je vydána další stabilní verze a obvykle i déle). To znamená backportování důležitějších oprav z vyšších verzí jádra a následné vydávání opravných verzí.

Příklad: jádro 2.6.36 bylo udržováno cca 4 měsíce a poslední opravná verze byla 2.6.36.4.

Udržovaných stabilních verzí může tedy být i více (2, 3), ale ta nejstarší z nich se obvykle přestává udržovat s vydáním nové stabilní verze.

Některé verze jádra jsou označeny jako dlouhodobé (LTS=long term support). To znamená, že jsou udržovány výrazně déle oproti ostatním stabilním verzím, obvykle i 2 roky.

Aktuálně udržované stabilní verze (ke dni 28. února 2012) jsou 2.6.27.61 (LTS), 2.6.32.57 (LTS), 3.0.22 (LTS), 3.1.10 a 3.2.8.

Výše uvedené číslování verzí a vývojový cyklus se týká tzv. vanilla jádra - jedná se o jádro přímo "od zdroje" neboli přímo od jeho tvůrců. Mnozí tvůrci distribucí i jiní uživatelé si tato jádra ještě upravují podle vlastních potřeb, např. aplikují na něj ještě opravy chyb, které se dosud nedostaly do stabilní verze, backportují opravy a nové funkce do starších jader, apod. Takové jádro bývá udržováno ve vlastním stromě a může být i trochu jinak označováno.

Např. u dlouhodobě podporované distribuce Red Hat Enterprise Linux 5 v poslední verzi 5.8 je použito označení jádra 2.6.18-308. Z toho lze předpokládat, že bylo v základu použito již 6 let staré (a jadernými vývojáří dávno nepodporované) jádro, které však bylo značně pozměněno a je vývojáři z firmy Red Hat stále udržováno.

Jak zkompilovat jádro ze zdrojových kódů for dummies

  1. Sežeň si zmiňované zdrojové kódy.
  2. Podívej se do Documentation/Changes na programy, které jsou ke kompilaci potřeba. Doinstaluj, co není.
  3. Uprav si kódy (pokud chceš) podle potřeby. Tj. aplikuj patche. Pokud nevíš co je patch nebo jak ho aplikovat, tak tento bod přeskoč. Fakt.
  4. Spusť konfiguraci příkazem make + [něco]config (viz make help).
  5. Projdi stovky položek, u kterých obvykle nebudeš mít ani páru, co znamenají (a nápověda ti taky nepomůže). Obvykle se u položky nastavuje buď ANO (zahrnout do jádra) nebo NE (nezahrnout), u některých položek je možné i M jako modul.
  6. Spusť kompilaci příkazem make.
  7. Překlad určitě :) proběhl OK a vypsal, že zkompilované jádro je k dispozici někde v adresáři /arch/$ARCH/boot.
  8. Pokud jsi v kroku 5 zvolil některé položky přeložit jako modul, pak to chce ještě příkaz make modules_install.
  9. Přesuň zkompilované jádro do adresáře /boot a patřičně uprav nastavení zavaděče systému.
  10. Restartuj a pyšně nabootuj nové jádro.
  11. Sakra.
  12. Restartuj a nabootuj předchozí jádro. Přejdi na krok 3.

Jinak spousta moderních distribucí používá poněkud komplikovanější proces bootování s využitím ramdisku. V takovém případě je vhodnější použít raději jiný postup:

  1. Najdi si na internetu v on-line dokumentaci (je to moderní distribuce, určitě tu dokumentaci NĚKDE má) webovou stránku s popisem kompilace jádra pro tuto distribuci.
  2. Řiď se uvedenými instrukcemi.

Moduly

Jedná se o části jádra, které je možné při běhu zavádět do paměti (a zase odebírat). Obvykle se jedná o ovladače zařízení, ale může se jednat i o části některých subsystémů (např. podpora Bluetooth).

Výhodou použití modulů je:

Moduly jsou obvykle zaváděny na pokyn nějakého démona typu udev nebo samotného jádra, ale samozřejmě je možné moduly zavádět i odebírat ručně - viz utility module-init-tools/libkmod.

Literatura