Jádro systému

František Kobzík, kobza@mail.muni.cz

Obsah

Co je jádro

Linux spatřil světlo světa v roce 1991, kdy jej začal psát Linus Torvalds a své počínání oznámil na usenetové skupině comp.os.minix. Původně byl Linux určen pro procesory 386/486, posléze se počet podporovaných procesorů a architektur zvyšoval.

Logicky se jádro nachází mezi HW a uživatelským prostorem. Má za úkol plánování CPU, správu paměti, správu procesů, fs, sítě. Z hlediska architektury se jedná o "téměř" monolitické jádro (možno přizpůsobovat za běhu pomocí modulů).

Historie

Jádro je tvořeno velkým číslem vývojářů po celém světě. Možno stáhnout na http://kernel.org (aktuální verze, staré verze, repozitáře...).

Číslování verzí

Dále může být jádro označeno suffixem, jako např. -mm, -ac a podobně. Typicky se jedná o jádra vydávané vývojářem kernelu (mm - Andrew Morton, ac - Alan Cox).

Způsoby konfigurace

Po stažení archivu s jádrem a jeho rozbalení (tar -xjf) je možno jej konfigurovat pomocí make. Konfigurací jádra nastavíme, které části do něj chceme napevno zakompilovat, které chceme použít jako moduly a které vůbec nepoužívat.

Konfigurace: Příkaz make +

Sestavení:

Při konfiguraci postupujeme tak, abychom do jádra nepřidávali ovladače zařízení, která nikdy nepoužijeme. Ovladače zařízení, která používáme občas nastavíme jako moduly (WiFi karty, Bluetooth). Nezbytné součásti zakompilujeme napevno (ovladače disku, grafické karty, systém souborů na disku...).

Pro snadnější orientaci v HW PC je k dispozici sada následujících příkazů:

Zajímavé konfigurační volby

Principy fungování modulů

Samostatné binární soubory rozšiřující funkcionalitu jádra. Nejsou zakompilované v jádře a je možno nahrát je za běhu systému (vhodné například pro ovladače, které nepoužíváme často - bezdrátové síťové karty). Jakmile je modul nahrán, běží v kernel space. Modul je možno nahrát buď ručně (příkaz insmod nebo modprobe), nebo automaticky v případě potřeby (démon kmod). Pro odstranění modulu slouží příkaz rmmod.

Příkaz modprobe je sofistikovanější než insmod - před nahráním samotného modulu nahraje moduly potřebné pro splnění závislostí (viz. soubor /lib/modules/"verze_jadra"/modules.dep).

Moduly se nachází v adresáři /lib/modules/"verze_jadra"/.

Instalace nového jádra

Po stažení, konfiguraci a kompilaci jádra a modulů (příkazem make) jádro "nainstalujeme" do adresáře /boot (make install) a nainstalujeme moduly (make modules_install). Nakonec uvědomíme zavaděč (GRUB, lilo,...) o existenci nového jádra přidáním záznamu do jeho konfiguračního souboru.

initrd - initial ramdisk Obraz fs s moduly. Umožní nahrát potřebné moduly pro zařízení v době bootu (fs, ovladač disku...). To je výhodné například v situaci, kdy k danému zařízení máme například pouze zkompilovaný modul od výrobce a toto zařízení potřebujeme při startu jádra. Dále initrd usnadňuje život vývojářům distribucí (distribuční jádra).

Soubor System.map

Tento soubor obsahuje tabulku symbolů a korespondujících adres. To se hodí například při debugování při převodu adres na jména volání. Soubor je typicky uložen v /boot/System.map-"verze_jadra" a je generován po každé kompilaci jádra.

Parametry jádra při startu

Při bootu přijímá linuxové jádro určité parametry. Ty se mohou hodit při řešení problémů se systémem, ladění atp.

Parametry se zadávají ve formátu jméno=hodnota1,hodnota2,...

Mezi nejdůležitější parametry patří:

Vyčerpávající popis parametrů lze najít v manuálové stránce bootparam(7).

Literatura