Jádro systému, konfigurace jádra

Petr Němec,98733@mail.muni.cz


Obsah


Jádro

Jádro slouží jako prostředník mezi programy a hardwerem,zajišťuje správu paměti pro všechny spuštěné programy,sdílení systémového času.Dále se stará o "souběžné" provádění úloh, implementuje souborový systém a ochrany přístupu. Navíc poskytuje přenositelné rozhraní pro přístup programů k hardwaru(/dev/).
V současnosti (2006) je k dispozici verze 2.6.xx . Verzi udává trojčíslí "epocha.verze.revize".Kde sudé číslo verze označuje "relativně" stabilní jádro, kdežto liché je jádro vývojové.

Od verze 1.2 se přešlo na modularní jádro.
Moduly :
- rozšiřují vlastnosti jádra(nové souborové systémy, ovladače HW)
- nemusí při jejich zavádění restrartovat pc
- fungují podobně jako pluginy programů

Aktuální zdrojové soubory "rostou" na www.kernel.org nebo je můžem stáhnout z desítek mirrorů po celem světě(oficialní mirrory)

Stažený soubor by jsme měli rozbalit nejlépe do

/usr/src/linux
nebo by v tomto souboru měl být link na skutečné umístění zdrojových souborů.

Kromě vydávaní nových kernelů se dělají i patche,ať už bezpečností nebo jen opravné. Patche instalujeme (většinou)pomocí příkazu
patch -p1 < "soubor_s_patchem" 


Konfigurace a kompilace

Proč kompilovat jádro?

Kromě těchto výhod jsou ale i nevýhody Zdrojový systém na kterém ma konfigurace probíhat musí mít minimálně gcc,make.

Před konfigurací jádra je vhodné věděr co vše chceme zakompilovat do jádra a co chceme spouštět jako modul.Mezi základní zdroje informací o hardwerové konfigurace pc je

lspci
Tento příkaz vypíše instalovaný hardware na pci řadiči. Kromě toho by se mohly hodit informace o procesoru
cat /proc/cpuinfo 
a případně architekturu procesoru
uname -m 
Pokud je všechno připraveno, můžeme se pustit do konfigurace kompilace jádra. (všechny následující příkazy předpokládají pracovní adresař /usr/src/linux). Ještě před kompilací bych doporučoval přečíst README . Dalším krokem by mělo být odstranění "ostatků" předchozích kompilací
make clean
Dále by jsme měli znovu vybudovat závislosti
make dep
Následně provedeme konfiguraci Při konfiguraci máme možnost buď daný modul zakompilovat do jádra nebo ho dynamicky zavádět jako samostaný modul, případně vůbec nekompilovat.
Po konfiguraci se nám vplby uloží do souboru .config a dostáváme ke kompilaci kterou spustíme
make bzImage
Tímt jsme vytvořily obraz nového jádra.Je unístěno v /usr/src/linux/arch/i386/boot/ .
Dále bychom měli nainstalovat moduly
make modules
make modules_install
Tato sekvence provede přeložení modulu a jejich naistalování do souboru /lib/modules/verze_jadra Na závěr je potřeba přehrát bzImage(doporučil bych ještě vhodně přejmenovat) do boot oblasti a nakonfigurovat zavadeč (lilo/grub), aby systém bootoval i s tímto jádrem. Vždy je dobré mít možnost nabootovat ze starého jádra(pro případ nouze).
Zavaděč lilo se konfiguruje pomocí souboru /etc/lilo.conf a provedené změny musíme zavést příkazem
lilo
narozdíl od grubu kde to není potřeba.Grub konfigurujeme v souboru grub.conf.


Zavaděč

Uživatel může spustit jakýkoliv OS definovaný v grub.conf(lilo.conf) zvolením jeho názvu. Parametry pro spuštěný jádra se předávají spolu s názvem OS ve tvaru parametr=hodnota.
linux panic=60 
zhrouceni jádra interní chybou kernel panic, bude po 60 sekundách restartováno)
Při běžném bootování jádro se spouští /sbin/init, ale je možné(při jeho poškození) spustit jiný proces(např. /bin/sh) parametrem init=/bin/sh
Pokud bychom chtěli nějaký parametr trvale předávat do jádra při každém spuštění, můžeme do grub.conf přidat
 kernel file argument
kde "kernel" je klíčové slovo, "file" je soubor(jádro) kterému se předávají následující argumenty.

Použité zdroje:

Linux dokumentační projekt(kolektiv autorů)
Hunt, Craig : "Linux síťové servery"
archiv p090