Jádro operačního systému Linux

Hack Robin, 325461@mail.muni.cz

Obsah

Něco málo z historie

Autor jádra linuxu, Linus Torvalds, se setkal s Unixovým prstředím poprvé na univerzitě. Zjistil že toto prostředí mu tak vyhovuje, že by jej chtěl mít i doma, na svém domácím PC. Opravdový Unix si nemohl dovolit a opensource varianta Minix (v uvozovkách protože Minix bylo nutné zakoupit, na médiu jste však měli i zdrojové kódy) mu přišla příliš omezená.

(Proč si Linus v té době nemohl zakoupit unix popřípadě si stáhnout zdrojové kódy jak je to běžné dnes, to už je trošku jiná pohádka. Doporučuji knihu: Umění programováni v Unixu (The Art Of UNIX Programming) od Eric S. Raimond. Popřípadě google a heslo: unix wars)

Původně jsem to vlastně ani neplánoval operační systém Linux vznikl na základě jiného projektu , kdy jsem testoval vlastnosti procesoru 386.

Tento systém navrhl tak, aby byl blízký systému UNIX (a to jak System V od AT&T tak i BSD z kalifornské univerzity v Berkeley).

Pozn.: zde se pozná jedna z výhod existence norem a jejich dodržování (nevyznamější jsou POSIX - Portable Operating system Interface Unix a SUS - Single Unix Specification).
Příběh ze života
V roce 1998 upravila firma Oracle svůj špičkový databázový produkt rovněž pro systém Linux. Byl to krok, jenž znamenal zásadní průlom ve způsobu vnímání tohoto systému u široké veřejnosti. Inženýr odpovědný za zmiňovanou úpravu při dotazu na techni­cké překážky, které bylo třeba při úpravách překonat, nabídl rozhodující důkaz, že standardy pro rozhraní API splnily účel. Inženýrova odpověď zněla takto: Zadali jsme příkaz make.­

Stručná historie

Vyčerpávající historie nejen Unixu: http://www.levenez.com/

Architektůra jádra Linux

Linuxové jádro je považováno za monolitické. Díky své modularitě a některým prvkům micro kernelu (např. kernel threads) ho lze nazvat i hybridním.

Interně je jádro rozděleno do subsystémů.
Například: diskový, síťový, ...

Kde získat:

Centrem dění: http://kernel.org/
Umístěny jsou zde: git repozitáře, historické verze, věci úzce spojené z jádrem

Co stáhnout aneb číslování verzí

Dnešní číslování je čtyřsložkové:

  1. major verze: Změna tohoto čísla znamená naprosto zásadní změnu architektury a dalších věcí. V současné době používáme číslo 2.
  2. minor verze: Toto číslo se mění častěji, při podstatné změně jádra. Dříve to vypadalo tak, že lichá čísla znamenala verze vývojové verze a sudá čísla verze stabilní. Tak například 2.0.35 byla stabilní verze, kdežto 2.1.42 vývojová. Od minor verze 6 (tedy od verzí 2.6.x) to bylo opuštěno a všechny základní verze se považují za stabilní.
  3. podverze: Změna tohoto čísla znamená změnu ve funkcionalitě, tedy že nějaká funkce přibude, zmizí nebo změní své ...iastnosti Například mezi verzemi 2.6.15 a 2.6.16 byty přidány technologie TIPC nebo OCFS2.
  4. opravná verze (též stabilní verze): První jádro určité podverze se vydává bez tohoto přídavného čísla. Jádra s opravami chyb (beze změny funkcionality) se rozlišují tímto číslem. Tedy např. 2.6.17.1 opravuje chyby z jádra 2.6.17, verze 2.6.16.4 opravuje chvbv 2.6.16.3.

Konvencí je, jádro rozbalit do adresáře /usr/src/linux. Pro testování více verzí jádra je možné vytvořit symbolický link: /usr/src/linux == /usr/src/linux-2.6.26.2.

Příprava na kompilaci

Ještě před samotnou kompilací je vhodné si zjístit HW konfiguraci stroje.

Triky z praxe:

Jak konfigurovat a kompilovat

Za každého počasí make help je váš kamarád.

Konfigurace:

Pozn.: například FreeBSD takovéto konfigurátory nemá. Celé jádro lze nakonfigurovat z pohodlí svého oblíbeného editoru.

Samotná kompilace se pak běžné provádí příkazem (u 2.6 jader): make && make modules_install
Samotný příkaz make se postará o kompilaci jádra a přikaz make modules_install o instalaci popřípadě kompilaci a instalaci modulů.

Zkompilované jádro lze najít: /usr/src/linux/arch/x86/bzImage

Trento soubor je vhodné nakopírovat do adresáře /boot pod výstižným názvem. Např.: kernel-2.6.26.5-grsecurity

Nainstalované moduly lze pak najít v adresáři /lib/modules/$(uname -r)/

Záhadný soubor System.map

Jédná se o mrtvou tabulku všech symbolů jádra. Tato tabulka umožňuje převod adresy na symbolické jméno a opačně. Velmi užitečné pro ladění jádra nebo dekóvaní tzv. Kernel OOPS.

Úloha zavaděče

Jádro máme tedy nakonfigurováno a zkompilováno... co dál?

Zde přichází na řadu tzv. bootloader. Jedná se o někdy jednoduchý a někdy velmi komplexní program.

Dnes je ve světě Linuxu asi nejpoužívanější zavaděč GRUB. Jeho slavným předchůdcem je bootloader LILO (Linux Loader - mate názvem, lze přez něj zavádět i jiné OS).

Jedny z úloh bootloaderu (GRUB):

Alternativně může bootloader předat řízení jinému bootloaderu.

Literatura