Toto je starší verze dokumentu!
Jádro
První linuxové jádro spatřilo světlo světa v roce 1991. Mezitím uplynulo patnáct let - jádro dospělo do verze 2.6 a skládá se z více než 4.5 miliónů řádků (je napsáno převážně v jazyce C++ a část pak v assembleru). Ačkoliv se dnes pod pojmem Linux rozumí některá z distribucí, správně bychom tímto pojmem měli označovat právě jádro, které je základním kamenem každé distribuce.
Jádro zajišťuje komunikaci mezi aplikacemi a hardwarem. Aplikace komunikují s hardwarem nepřímo přes tzv. souborů zařízení, do/ze kterých zapisují/načítají data. Komunikaci mezi soubory zařízení a hardwarem pak obstarávají tzv. ovladače zařízení.
Aktuální verze stabilního jádra v době psaní tohoto článku (říjen 2006) byla 2.6.18. Každé z částí čísleného označení jádra má svůj význam.
Číslo 2 je tzv. hlavní verze jádra a mění opravdu vyjímečně - jádro 2.0 bylo vydáno v roce 1996.
Číslo 6 označuje tzv. vedlejší verzi jádra a mění se jednou za několik roků. Souběžně existují vždy tzv. stabilní jádro, které má sudé číslo verze (aktuálně 2.6), a tzv. vývojové jádro, které má číslo liché (aktuálně 2.7). Stabilní jádro je určeno běžným uživatelům a těm, pro které je spolehlivost jádra rozhodující 1). V rámci vývojového jádra je pak testována implementace nových vlastností jádra. Jsou-li na vývojovém jádře odstraněny všechny nedostatky, je prohlášeno za stabilní a čísla obou verzí se zvýší o jedna.
Číslo 17 označuje tzv. patch level. Pomocí patche, které jsou vydávány v řádu měsíců, lze provádět opravy/úpravy stávajícího jádra včetně přidání nových ovladačů. Aplikací patche tak lze provést aktualizaci jádra.
Jestliže na Vašem systému zadáte příkaz uname -r
získáte výstup ve tvaru 2.6.17-1.2187_FC5
. „Číslíček“ je tedy poněkud více. Vedle patch levelu, vedlejší a hlavní verze jádra figuruje ve výpisu také číslo 1.2187. To značí verzi patch levelu pro potřeby projektu Fedora Core. Označení FC5
pak znamená, že se jedná o jádro určené pro Fedora Core 5.
Ačkoliv defaulní nastavení jádra je pro většinu uživatelů naprosto dostačující, je možné jádro upravit podle svých představ. To je možné provést jednak překompilováním jádra, jednak editací souborů v adresáři /proc
. Druhá možnost tak představuje jakási zadní vrátka do systému 2). Úpravy jádra vyžadují poměrně hluboké znalosti týkající se nejen samotného Linuxu ale také hardwaru.
Přidání ovladače
- Přečtěte si kapitolu Obecné poznámky.
Jak již bylo zmíněno výše, ovladač zařízení zajišťuje komunikaci systému s konkrétním hardwarem. Jádro samotné obsahuje některé ovladače (např. ovladače pro systémy souborů), nicméně převažuje snaha vytvořit nad jádrem vrstvu s ovladači. Ovladač tak není integrální součástí jádra, ale má podobu modulu, který je v případě potřeby jádrem načten. To s sebou přináší několik výhod. První je, že ovladač musí být naprogramován „čistěji“ než kdyby byl „zabastlen“ přímo do jádra. Další výhodou je, že nové ovladače lze jednoduše do jádra připojit a není třeba znovu kompilovat jádro. Třetí výhodou je úspora operační paměti. Kdyby všechny ovladače musely být přímou součástí jádra, bylo by toto jádro při současném množství hardwaru neúměrně velké a zabíralo by zbytečně příliš mnoho operační paměti.
Soubor zařízení
Každý hardware má svůj tzv. soubor zařízení. Přes tento soubor pak probíhá komunikace mezi aplikacemi a příslušným hardwarem. Soubory zařízení jsou umístěny v adresáři /dev
(s vyjímkou síťových zařízení). Každý soubor zařízení má tzv. hlavní a vedlejší číslo. Hlavní číslo definuje, jaký konkrétní ovladač má být pro daný hardware použit3). Vedlejší číslo, nazývané také číslo jednotky, je jakýmsi pořadovým číslem zařízení.
Existují dva typy souborů zařízení - blokové a znakové. Blokové umožňují čtení/zápis po tzv. blocích (skupina bajtů; obvykle násobek 512); znakové pak po bajtu. Typickým příkladem blokového zařízení je pevný disk; příkladem znakového zařízení pak klávesnice. To, zda-li je jedná o blokové nebo znakové zařízení, lze poznat podle prvního znaku rozšířeného výstupu příkazu ls
.
ls -l /dev/hda brw-r----- 1 root disk 3, 0 říj 9 18:28 /dev/hda
Písmeno b
značí, že IDE disk hda
je blokovým zařízením 4).
Ovladač zařízení
Samotný ovladač je možné do jádra přidat následujícími způsoby:
- tzv. „patchováním“ jádra
- zavedením modulu ovladače
Patchování jádra
Patch je aktualizací jádra, která může mimojiné obsahovat také nové ovladače. Instalaci patche lze provést pomocí příkazu
gunzip -c cesta_k_patch_souboru/patch_cislo.gz | patch -p1
Samotné jádro ovladače i jednotlivé patche naleznete na stránkách http://www.kernel.org (např. jádro 2.6 včetně patchů naleznete zde ). Jestliže máte např. jádro 2.6.14 5) a chtěli byste provést jeho aktualizaci na verzi 2.6.17, musíte stáhnout patche 2.6.15, 2.6.16 a 2.6.17 a tyto pak postupně nainstalovat6).
gunzip -c cesta_k_patch_souboru/patch-2.6.15.gz | patch -p1 gunzip -c cesta_k_patch_souboru/patch-2.6.16.gz | patch -p1 gunzip -c cesta_k_patch_souboru/patch-2.6.17.gz | patch -p1
Poznámka: Výše popsaný postup je aplikovatelný na tzv. vanila jádro. Fedora Core však používá jádro modifikované - proto by aplikace patchů výše popsaným způsobem pravděpodobně měla za následek nefunkčnost systému. Jednodušší (a v drtivé většině případů naprosto dostačující) je provést aktualizaci jádra pomocí příkazu yum -y update kernel.i586
7). Nicméně Vám nic nebrání si stáhnout stáhnout vanila jádro z http://www.kernel.org, na něj následně aplikovat patche a následně jádro přeložit (viz. dále).
Zavedení ovladače do jádra
Výhodnější je ovladače zavést ve formě tzv. modulu do jádra. Moduly distribuované společně s jádrem jsou uloženy adresáři /lib/modules/cislo_verze_jadra
8). Příslušný ovladač lze velice snadno zavést pomocí
/sbin/insmod /lib/modules/cislo_verze_jadra/kernel/drivers/typ_zarizeni/ovladac.ko
Jestliže jste při použití příkazu insmod
získali chybové hlášení symbols missing
, došlo k porušení závislostí zaváděných ovladačů. O potřebné závislosti se postará příkaz modprobe
.
/sbin/modprobe ovladac
Nejprve je však třeba vytvořit soubor, který obsahuje informace o vzájemných závislostech mezi jednotlivými moduly. Toho lze dosáhnout pomocí příkazu
/sbin/modprobe -c
který vytvoří soubor /etc/modprobe.conf
. Druhou možností je použít příkaz depmod
.
/sbin/depmod -a
Ten vygeneruje soubor /etc/modules.dep
obsahující všechny závislosti mezi moduly v adresáři /lib/modules/cislo_verze_jadra
.
Odstranění ovladače z jádra lze provést pomocí
/sbin/rmmod ovladac
nebo restartem počítače. Pro permanentní zavedení modulů je třeba zapsat příslušný příkaz pro natažení ovladače do souborů typu rc
- např. na konec souboru /.bashrc
.
Výpis všech natažených modulů získáte pomocí
/sbin/lsmod
Poznámka: Některé moduly mohou vyžadovat zadání parametrů (např. obsluhu přerušení IRQ). Více informací by mělo být součáastí návodu k použití příslušného ovladače.
/etc/sysctl.cong
popř. nastavit pomocí příkazu sysctl
.uname -r
.uname -r
.