Jádro systému Linux

Holeček Lukáš, 143108@fi.muni.cz

Jádro systému je software umožňující kontrolu nad hardware a běh programů (přidělování paměti a procesoru procesům).

1. Velmi stručná historie

V září 1991 Linus Torvalds vytváří první verzi jádra 0.01.

2. Architektura

Jádro Linuxu je monolitické (jako většina UNIX jader) s vlastnostmi mikrokernel jader (Windows NT, Mach). Na disku představuje jediný soubor, který má po spuštění přiděleno speciální místo v paměti (tzv. kernelspace) a instrukce vykonává v tzv. režimu jádra. Aplikace může z uživatelského režimu přejít do režimu jádra pomocí:

Z mikrokernelu si jádro Linuxu propůjčuje modularitu, ale všechny moduly jsou dynamicky nahrávány přímo do jádra (na rozdíl od mikrokernelu).

3. Zdrojové kódy

Celé jádro je psáno v jazyce C (kromě několika částí psaných v assembleru). Na disku se zdrojové kódy většinou nachází v adresáři, na který odkazuje symbolický odkaz /usr/src/linux. Všechny verze jader lze najít na adrese ftp://ftp.kernel.org/pub/linux/kernel/.

3.1. Číslování verzí

Verze jader jsou obvykle ve formátu 2.6.22, kde první dvě čísla značí vývojovou větev a poslední označuje číslo revize. Pokud je druhé číslo sudé, znamená to, že jde o stabilní verzi. Naopak liché číslo určuje nestabilní verzi. V této době je ve vývoji jádro řady 2.6, do které se na rozdíl od předchozích stabilních větví dostanou i méně stabilní ovladače.

3.2. Struktura zdrojových kódů

V kořenovém adresáři zdrojových kódů jádra Linuxu se nachází adresáře:

a soubory:

3.3. Konfigurace jádra

Konfigurace jádra se provádí pomocí příkazu make a příslušného parametru pro konfiguraci. Všechny změny provedené po nastavení jsou uloženy v souboru .config. Jednotlivé vlastnosti jsou v souboru uloženy jako CONFIG_VLASTNOST=y|m|“řetězec“|číslo, kde y u každé vlastnosti znamená, že bude zakompilovaná do jádra, a m značí, že bude zkompilována jako modul. Nápovědu je možné získat příkazem make help.

Důležité parametry pro make sloužící ke konfiguraci jsou:

Důležité volby konfigurace jádra jsou například (názvy podle položek v menu):

3.4. Sestavení jádra

Příkaz make (stejné jako make bzImage modules) sestaví nové jádro systému a moduly podle voleb v souboru .config. Ve verzích předcházejících verzi 2.6 bylo navíc nutné spustit příkaz make dep pro přidání závislostí.

Při sestavování jádra se vytváří soubor System.map, který obsahuje počáteční adresy jednotlivých symbolů (funkcí a proměnných) jádra a slouží pro ladění. Zkompilované jádro je uloženo v arch/i386/boot/bzImage (i386 je architektura, na které bylo jádro sestaveno).

3.5. Instalace jádra

Instalaci lze provést pomocí make install (závislé na distribuci; skript v /sbin/installkernel) nebo manuálně (tento krok je závislý na architektuře počítače a na systémovém zavaděči). Pro zkopírování modulů určených pro instalaci do příslušných adresářů (v /lib/modules) slouží příkaz make modules_install. Pro instalaci jádra a modulů je nutné, aby uživatel byl přihlášen jako root.

4. Parametry jádra

Jádro může být spuštěno s různými boot–time parametry, které jsou zapisovány ve tvaru parametr[=hodnota]. Mohou to být například:

Další informace o boot–time parametrech se nachází na manuálové stránce bootparam(7).

Ke změně parametrů za běhu systému je možné použít program sysctl(8) (-a pro výpis; -w pro změnu parametrů; samozřejmě je třeba mít práva uživatele root).

5. Moduly

Jádro linuxu podporuje nahrávání a odebírání modulů za běhu systému. Zkompilované moduly mají příponu .ko nebo také .o u jádra řady 2.4. Aby vše fungovalo, tak jak má, musí být jádro správně zkompilováno (položka Loadable module support v konfiguračním menu jádra). K nahrávání resp. odebírání modulů z jádra slouží programy insmod(8) resp. rmmod(8) nebo „inteligentnější“ modprobe(8) a pro výpis nahraných modulů lsmod(8). Pro manipulaci s moduly jsou také nutná správcovská práva.

6. Identifikace zařízení

Aby uživatel věděl s jakými parametry a moduly má jádro zkompilovat, Linux systémy standardně nabízí programy, které pomohou rozpoznat většinu zařízení počítače. Těmi užitečnými programy jsou:

Pohodlný přístup k podrobnostem o hardware je ve virtuálním souborovém systému /proc (musí být zapnuto File systems/Pseudo Filesystems/ /proc file system support v jádře). Ke zobrazení podrobností o procesoru stačí zadat příkaz cat /proc/cpuinfo.

6.1 Senzory

Interaktivní program sensors-detect(8) slouží k nalezení senzorů počítače a nahrání příslušných modulů. Před spuštěním je třeba nejprve zapnout v menu konfigurace jádra Device Drivers/I2C support a Device Drivers/Hardware Monitoring Support pokud možno všechny položky na m. Aplikace sensors(1) vytiskne informace z jednotlivých aktivních senzorů.

7. Zdroje

Daniel P. Bovet, Marco Cesati. Understanding the Linux Kernel. 3. vydání. O'Reilly, listopad 2005. 942 stran. ISBN 0-596-00565-2.

Love, Robert. Linux Kernel Development. 2. vydání. Sams Publishing, 12. leden 2005. 432 stran. ISBN 0-672-32720-1.

M. Tim Jones. Inside the Linux boot process. IBM http://www-128.ibm.com/developerworks/library/l-linuxboot/index.html 23.9.2007.