Jádro systému

Filip Škola, xskola@mail.muni.cz

Obsah

Obecně

Co

ker·nel, noun \ˈkər-nəl\ (1. a fruit seed; 2. the inner softer part of a seed, fruit stone, or nut; 3. a whole seed of a cereal <a kernel of corn>) [1]

Jádro je hlavní komponenta operačního systému

Stará se o

Kdy

Boot proces: firmware - zavaděč - jádro - init - userspace

Jak

Unixově

Historie

1969UNIX
1977BSD
1987Minix
1990GNU Hurd
1991Linux

(data v tabulce označují počátek vývoje projektu)

Současnost

FreeBSD9.1
Minix3.2.1
Linux3.7.9

(stabilní verze, platné k 25. 2. 2013)

Vlastnosti

Některé z charakteristických vlastností unixových systémů jsou zajištěny na úrovni jádra OS. Unix

Linux

Linux je monolitické jádro, typicky používané v operačních systémech s GNU userlandem, které nesou označení GNU/Linux. Je šířeno pod svobodnou licencí GPLv2 a jedná se tak o svobodný a otevřený software [2].

Na vývoji se podílí komunita, hlavní větev je spravována Linusem Torvaldsem. Nové verze vychází přibližně každé tři měsíce. Některé distribuce nepoužívají čisté "vanilla" jádro, ale vlastní větve, do kterých zařazují změny (Debian, Red Hat).

Zkompilovanou verzi již v systému nejspíš máte. K získání zdrojových kódů je možno využít

Linux - kompilace

Pro sestavení jádra ze zdrojových kódů je zapotřebí provést konfiguraci (které komponenty umístím do jádra) a pak spustit samotnou kompilaci.

Proč

Motivace pro kompilaci jádra ze zdrojových kódů bývá přímočará, protože se k ní dostaneme, až když nějakou máme. Většinou chceme

Konfigurace

Prerekvizity: make(1), gcc(1) a zdrojové texty knihoven potřebné pro konfiguraci (ncurses, gtk či qt).

Linux nabízí několik konfiguračních metod, založených na

Při konfiguraci není na škodu znát hardware počítače, na kterém bude jádro běžet - pokud bude chybět ovladač pro nějaký kus hardwaru, nebude možno jej používat. V případě absence kritického ovladače (disk, souborový systém) nové jádro nenastartuje.

Cenné informace můžeme získat pomocí programů

Aplikace patchů

Soubor typu patch je výstup z unixové utility diff(1), která porovnává obsah dvou souborů. Pomocí utility patch(1) je možno nahradit starou verzi souboru nějakou novější.

Typická aplikace: cd kernel-sources-dir ; patch -p1 < file.patch
parametr -pn určuje, jakou část cesty z patch souboru má brat program v potaz

Kompilace

Krom samotného jádra bývá také třeba vytvořit initramfs, ramdisk, který podporuje jádro při zaváděcím procesu. Do něj se umisťují ovladače zařízení, které jsou nutné pro boot systému. Obzvláště pak ty, které zajišťují přimountování kořenového svazku (ovladač řadiče, vstup pro heslo u šifrovaných svazků, ovladač filesystému, ...). Initramfs nahradil do nedávna používaný systém initrd.

Pro vygenerování obrazů initramfs se používá programů mkinitramfs či novější dracut(8).

Aktualizaci konfiguračních souborů zavaděče provádí automatizovaný skript v závislosti na distribuci. V systémech Red Hat typu jde o příkaz grub2-mkconfig, v Debianu update-grub.

grub2-mkconfig -o /boot/grub2/grub.cfg

Shrnutí: /boot

Po úspěšné kompilaci a instalaci bychom měli mít nainstalovaný obraz jádra v adresáři (svazku) /boot. Jádro a kamarádi jsou zastoupeni soubory

kde $(uname -r) je verze jádra.

Pokud máte zkompilované nové jádro, není příliš vhodné odstraňovat staré jádro před otestováním toho nového. V případě plného boot svazku je sice třeba místo uvolnit, ponechte ale alespoň jedno funkční jádro.

Zavedení

V menu zavaděče (pokud používáme zavaděč s menu) se objeví nové jádro po restartu počítače. Start a konfiguraci některých subsystémů jádra lze řídit parametry, které jádru předává zavaděč. Toho lze s úspěchem využít, zvlášť pokud jádro nebootuje kvůli nějakému specifickému nastavení. Parametry, které jádro nezná, předává procesu číslo 1.

Mezi parametry, které by neměly chybět, patří root=device, kde device je buď cesta ke svazku, ze kterého se bude bootovat, nebo uuid=..., kde tři tečky zastupují unikátní identifikátor svazku.

Literatura