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
Boot proces: firmware - zavaděč - jádro - init - userspace
1969 | UNIX |
1977 | BSD |
1987 | Minix |
1990 | GNU Hurd |
1991 | Linux |
FreeBSD | 9.1 |
Minix | 3.2.1 |
Linux | 3.7.9 |
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
apt-get install kernel-source
(Debian based)
yumdownloader --source kernel
(Red Hat based)
zypper in kernel-source
(SuSE based)
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.
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
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
make config
)
make nconfig, make menuconfig
)
make xconfig, make gconfig
)
make oldconfig, make allyesconfig, make randconfig,
...)
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ů
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
make
make modules_install
make install
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
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
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.
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.