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?
- Dodávané jádro nepodporuje některý hardware(DVB-t,..)
- Potřebujeme nové funkce(64 bitova architektura,...)
- Bezpečnostní záplaty
- Optimalizce systému
Kromě těchto výhod jsou ale i nevýhody
- Jako hlavní se bych uvedl velkou složitost kofigurace
- Konfigurace si vyžaduje spoustu nastavení, která mohou být matoucí a ve
výsledku může takový update spíše uškodit.
- Některé distribuce mají jádro natolik vylazené a upravené, že se prostě změna nevyplatí.
- pokud něco bezchybně funguje, není třeba to měnit.
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
- make xconfig - spustí konfigurační okno v rámci systému X Windows, tedy klikatelné okno.
- make menuconfig - spusti konfiguraci v textovém režimu, ale přehledně uspořadanou. Používá knihovnu ncurses a dosáhne tím jisté emulace grafického režimu. Podmínkou tedy je, aby na vašem systému byla tato knihovna dostupná. Nastavení pomocí tohoto nastroje je přehledné a jednoduché. Obsahuje několik hlavních kategorii označených "-->" a potom jednotlivé položky. Vybrané vlastnosti se označují mezerníkem nebo písmenkem "m", pokud si přejete zkompilovat modul. Kdykoli během konfigurace je možné vyvolat nápovědu, pro skok do vyšší urovně slouží odkaz "Exit" a při ukončení se program zepta, jestli se má konfigurace uložit. V textovém režimu je to nejjednodužší způsob konfigurace
- make config - standardní způsob konfigurace, bohužel poněkud nepřehledný. Rozhodně se nedá doporučit pro někoho, kdo se s kompilací teprve seznamuje. V porovnání s předchozími zpusoby je uživatelsky nepřívětivý.
- make oldconfig - tato poslední volba vlastně obejde konfiguraci samotnou a umožní nastavit jadro tak, jako pří posledni kompilaci. Nejčastěji se využívá, když provádíme update systému na novější verzi a konfigurační soubor předchozí ještě máme. Stačí ho potom nahrát do nového jádra a konfigurační program si data již sám zpracuje. V případě, že některé novější volby nebudou v souboru zahrnuty, vyžádá si je stejným způsobem jako "make config"
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