Jádro systému

Jiří Kortus, 255719@mail.muni[NOSPAM].cz

Obsah

O jádru

Linuxové jádro (kernel) je projekt iniciovaný Linusem Torvaldsem v roce 1991, jehož cílem bylo poskytnout opensource alternativu ke komerčním UNIXovým systémům. Je napsáno v jazyce C a je volně dostupné pod licencí GPL. Jádro je typu makrokernel, a umožňuje zavádění a odebírání jaderných modulů za běhu. Na vývoji jádra se podílí komunita vývojářů sestávající jak z velkého množství jednotlivců, tak i firem podporujících Linux (RedHat, IBM, Novell a další). V čele vývoje jádra stále stojí Linus Torvalds.

Verze a číslování

Historicky první verzí byla verze 0.01 vydaná v roce 1991, v současné době jsou aktuální verze řady 2.6.x a nově 3.x. (poslední verze je aktuálně 3.0.4). Verze jsou od v1.0 číslovány typicky podle schématu A.B.C nebo A.B.C.D, kde

Za číselným označením verze může být ještě dodatek (např. -rc1) popisující, že jde o release-candidate verzi nebo o specifickou vývojovou větev.

Stažení jádra

Zdrojové kódy jádra lze získat z www.kernel.org, případně z některého ze zrcadel, např. ftp.linux.cz (jedná se o tzv. vanilla jádro). Pokud potřebujeme vanilla jádro rozšířit o další funkce, je potřeba stáhnout patřičný patch a aplikovat jej na zdrojové kódy.

Konfigurace

Distribuční jádra jsou konfigurována tak, aby fungovala na co nejširším spektru hardwarových konfigurací, tzn. musí podporovat i mnoho hardwaru nebo vlastností, které často nejsou potřeba. Konfigurací lze jádro optimalizovat pro lepší fungování na daném HW, odstranit nepotřebné funkce a zmenšit místo zabrané jádrem (a moduly). Před konfigurací je třeba znát parametry systému, na kterém jádro poběží, zejména

Pro boot jádra je nezbytné, aby obsahovalo podporu pro zařízení, ze kterého se bude bootovat (např. podpora SATA) a souborového systému použitého v kořenovém oddílu (případně může být tato podpora obsažena v initramdisku). Konfiguraci, kompilaci a instalaci jádra lze shrnout do následujících kroků:

  1. Stáhnutí a rozbalení jádra (většinou do /usr/src/linux-verze_jádra, v /usr/src by měl být symlink linux ukazující na aktuální verzi zdrojových kódů)
  2. Zazálohování konfiguračního souboru (.config) funkční verze jádra - zcat /proc/config.gz > .config.backup nebo cp /boot/config-verze_jádra .config.backup
  3. Konfigurace parametrů a součástí jádra (podpora zařízení, sběrnic, sítě, šifrování, ...) - pomocí make a jednoho z následujících parametrů U jednotlivých položek lze zadávat volbu, zda danou položku chceme zakompilovat do jádra (Y) či nikoliv (N) nebo jestli má být zkompilována jako modul (M).
  4. Poté, co jsme provedli konfiguraci a její uložení, můžeme přikročit ke kompilaci jádra příkazem make.
  5. Dále nainstalujeme moduly: make modules_install - dojde k jejich nakopírování do /lib/modules/linux-verze_zkompilovaného_jádra
  6. Po zkompilování bude jádro (většinou soubor bzImage) v arch/xyz/boot (xyz = námi požadovaná architektura). Provedeme nakopírování jádra z arch/xyz/boot, konfiguračního souboru .config a souboru System.map do /boot (a jejich patřičné přejmenování na config-verze_jádra a System.map-verze_jádra). Případně je možné použít příkaz make install (použije LILO, pokud je dostupné).
  7. Upravíme nastavení zavaděče (GRUBu), aby bylo možné po restartu nabootovat s novým jádrem.

Případné vytvoření initramdisku se provede nástrojem mkinitramfs.

Uživatelské nástroje

Některé nástroje pro práci s jádrem z uživatelského prostoru:

Prostřednictvím souborů v /proc a /sys lze za běhu nastavovat parametry jádra nebo z nich číst informace poskytované jádrem.

Parametry předávané jádru při startu

Při zavádění jádra mu mohou být zavaděčem předány konfigurační nebo ladicí parametry, například:

Kompletní seznam parametrů lze najít na http://www.mjmwired.net/kernel/Documentation/kernel-parameters.txt

System.map

System.map je soubor, který obsahuje tabulku jmen symbolů (jmen proměnných nebo funkcí) používaných jádrem a jejich umístění v paměti. Je generován při každé kompilaci jádra a slouží k překladu jmen symbolů na jejich adresy a naopak.

Literatura