Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| navody:f8:jadro [2008/04/22 21:06] – vytvořeno covex | navody:f8:jadro [2022/11/14 11:26] (aktuální) – upraveno mimo DokuWiki 127.0.0.1 | ||
|---|---|---|---|
| Řádek 1: | Řádek 1: | ||
| + | [[obsah|Hlavní stránka]] | ||
| + | |||
| + | ===== Jádro ===== | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Jádro zajišťuje komunikaci mezi aplikacemi a hardwarem. Aplikace komunikují s hardwarem nepřímo přes tzv. soubory zařízení, | ||
| + | |||
| + | Ačkoliv defaultní nastavení jádra je pro většinu uživatelů naprosto dostačující, | ||
| + | |||
| + | ====Značení jádra==== | ||
| + | |||
| + | Aktuální verze stabilního jádra v době psaní tohoto článku (září 2007) byla 2.6.23.1. Každá z částí číselné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í. 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 23.1 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 '' | ||
| + | |||
| + | ==== Přidání ovladače ==== | ||
| + | * Přečtěte si kapitolu [[obecne_poznamky|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 " | ||
| + | |||
| + | === 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 ''/ | ||
| + | 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í, | ||
| + | |||
| + | ls -l /dev/sda | ||
| + | | ||
| + | brw-r----- 1 root disk 3, 0 říj 9 18:28 /dev/sda | ||
| + | |||
| + | Písmeno '' | ||
| + | |||
| + | === Ovladač zařízení === | ||
| + | Samotný ovladač je možné do jádra přidat následujícími způsoby: | ||
| + | * tzv. " | ||
| + | * zavedením modulu ovladače | ||
| + | |||
| + | V této kapitole se budeme zabývat zavedením modulu ovladače do jádra. O přidání nových ovladačů do jádra pomocí tzv. patchů se můžete dočíst v samostatné [[jadro# | ||
| + | |||
| + | Nejvýhodnějším způsobem přidání ovladače do jádra je jeho zavedení ve formě tzv. modulu. Moduly distribuované společně s jádrem jsou uloženy v adresáři ''/ | ||
| + | |||
| + | / | ||
| + | |||
| + | Jestliže jste při použití příkazu '' | ||
| + | |||
| + | / | ||
| + | |||
| + | 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 | ||
| + | |||
| + | / | ||
| + | |||
| + | který vytvoří soubor ''/ | ||
| + | |||
| + | / | ||
| + | |||
| + | Ten vygeneruje soubor ''/ | ||
| + | |||
| + | 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 '' | ||
| + | |||
| + | Výpis všech aktuálně natažených modulů získáte pomocí | ||
| + | |||
| + | /sbin/lsmod | ||
| + | |||
| + | **Poznámka: | ||
| + | |||
| + | ====Patchování jádra==== | ||
| + | * Přečtěte si kapitolu [[obecne_poznamky|Obecné poznámky]]. | ||
| + | |||
| + | **Poznámka: | ||
| + | |||
| + | 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/ | ||
| + | |||
| + | spuštěného z adresáře obsahujícího zdrojové kódy jádra (standardně se jedná o adresář ''/ | ||
| + | Samotné jádro, ovladače i jednotlivé patche naleznete na stránkách [[http:// | ||
| + | |||
| + | gunzip -c cesta_k_patch_souboru/ | ||
| + | gunzip -c cesta_k_patch_souboru/ | ||
| + | gunzip -c cesta_k_patch_souboru/ | ||
| + | |||
| + | |||
| + | ==== Překlad jádra ==== | ||
| + | * Přečtěte si kapitolu [[obecne_poznamky|Obecné poznámky]]. | ||
| + | |||
| + | Samotný překlad jádra vyžaduje poměrně hluboké znalosti nejen z oblasti //Linux//u ale také hardwaru. Jestliže Vám pojmy jako //TCP/IP//, //PCI// nebo //x86// nic neříkají nebo nevíte, jaký má Váš počítač //CPU// a zvukový čip, překlad jádra se Vám nejspíše napoprvé nepodaří. Nicméně následující postup je relativně bezpečný a není jím co zkazit. Úspěšné zkompilování jádra je tedy otázkou Vaší trpělivosti a času, který máte k dispozici. | ||
| + | \\ | ||
| + | Pokud chcete provádět překlad jádra, musíte mít k dispozici zdrojové kódy jádra a nástroje potřebné pro samotný překlad((Vedle pojmu " | ||
| + | \\ | ||
| + | === Nástroje pro překlad jádra === | ||
| + | |||
| + | Nástroje potřebné pro překlad jádra jsou obsaženy v balíčku vývojových nástrojů. Tento balíček nainstalujete pomocí | ||
| + | |||
| + | yum -y groupinstall " | ||
| + | |||
| + | === Knihovny pro překlad jádra === | ||
| + | |||
| + | Pro překlad jádra a dalších programů ze zdrojových kódů budete potřebova i knihovny různých součástí systému. Ty nainstalujete příkazem | ||
| + | |||
| + | yum -y groupinstall " | ||
| + | |||
| + | === Zdrojové kódy jádra === | ||
| + | |||
| + | == Jádro ze src.rpm == | ||
| + | |||
| + | **Poznámka: | ||
| + | |||
| + | Pro překlad jádra můžete použít **zdrojové kódy připravené v rámci projektu // | ||
| + | Nejprve nainstalujte balíček '' | ||
| + | |||
| + | yum -y install rpm-build | ||
| + | |||
| + | Proveďte aktualizaci jádra Vašeho systému. | ||
| + | |||
| + | yum -y update kernel | ||
| + | |||
| + | Restartujte počítač, abyste " | ||
| + | |||
| + | mkdir /opt/kernel | ||
| + | cd /opt/kernel | ||
| + | |||
| + | Do adresáře ''/ | ||
| + | |||
| + | yum install yum-utils | ||
| + | yumdownloader --source kernel --enablerepo updates-source | ||
| + | |||
| + | Tento soubor nainstalujete pomocí | ||
| + | |||
| + | rpm -ivh kernel-verze_jadra.src.rpm | ||
| + | |||
| + | Dále je třeba připravit zdrojové kódy jádra. | ||
| + | |||
| + | rpmbuild -bp --target=$(uname -m) / | ||
| + | |||
| + | Výsledek bude uložen v adresáři ''/ | ||
| + | |||
| + | == Jádro z www.kernel.org (tzv. vanila jádro) == | ||
| + | |||
| + | Druhou možností je stáhnout **zdrojové kódy vanila jádra** ve formě | ||
| + | |||
| + | Stáhněte příslušný soubor se zdrojovými kódy ze stránek [[http:// | ||
| + | |||
| + | Přesuňte se do adresáře ''/ | ||
| + | |||
| + | cd / | ||
| + | |||
| + | Nakopírujte do tohoto adresáře soubor se zdrojovými kódy vanila jádra pomocí příkazu | ||
| + | |||
| + | mv cesta_k_souboru_se_zdrojovými_kody/ | ||
| + | |||
| + | popř. | ||
| + | |||
| + | mv cesta_k_souboru_se_zdrojovými_kody/ | ||
| + | | ||
| + | v závislosti na typu komprimovaného souboru. Soubor pak rozbalte pomocí příkazů | ||
| + | |||
| + | gunzip verze_jadra.tar.gz | ||
| + | |||
| + | popř. | ||
| + | |||
| + | bunzip2 verze_jadra.tar.bz2 | ||
| + | |||
| + | Původní soubor se zdrojovými kódy vanila jádra pak můžete smazat pomocí příkazu | ||
| + | |||
| + | rm -f verze_jadra.tar.* | ||
| + | |||
| + | **Poznámka: | ||
| + | |||
| + | == Překlad jádra == | ||
| + | |||
| + | Nyní následuje samotný překlad jádra. Přesuňte se do adresáře ''/ | ||
| + | |||
| + | cd / | ||
| + | |||
| + | Překlad spustíte pomocí příkazu | ||
| + | |||
| + | make config | ||
| + | | ||
| + | * | ||
| + | * Linux Kernel Configuration | ||
| + | * | ||
| + | * | ||
| + | * Code maturity level options | ||
| + | * | ||
| + | Prompt for development and/or incomplete code/ | ||
| + | |||
| + | Na jednotlivé otázky odpovídáte '' | ||
| + | Nastavení jádra pomocí '' | ||
| + | |||
| + | Výše zmiňovanou volbu '' | ||
| + | |||
| + | make menuconfig | ||
| + | |||
| + | {{ navody: | ||
| + | |||
| + | Chcete-li namísto '' | ||
| + | |||
| + | make gconfig | ||
| + | |||
| + | {{ navody: f8gconfig.png | gconfig }} | ||
| + | |||
| + | Pro konfiguraci jádra je třeba postupně procházet jednotlivé položky a u každé vybrat tu možnost, která nejlépe odpovídá Vašim požadavkům. Po té je třeba konfiguraci uložit a je možné přistoupit k samotnému překladu. Do příkazové řádky zadejte postupně následující příkazy | ||
| + | |||
| + | make dep | ||
| + | make clean | ||
| + | make bzImage | ||
| + | make modules | ||
| + | make modules_install | ||
| + | |||
| + | Zpracování těchto příkazů může trvat několik desítek minut až hodin v závislosti na konfiguraci Vašeho počítače.\\ | ||
| + | Zkopírujte soubor ''/ | ||
| + | |||
| + | cp / | ||
| + | cp / | ||
| + | |||
| + | Posledním krokem je úprava zavaděče //GRUB//, kam je zapotřebí přidat záznam pro Vaše nové jádro. Předpokládejme, | ||
| + | |||
| + | gedit / | ||
| + | |||
| + | a přidejte na jeho konec řádky | ||
| + | |||
| + | title Kernel verze_jadra | ||
| + | root (hd0,0) | ||
| + | kernel / | ||
| + | |||
| + | Po restartování počítače by se v nabídce zavaděče //GRUB// měl objevit řádek, který reprezentuje Vámi přeložené jádro. | ||
| + | |||
| + | ===== ===== | ||
| + | [[obsah|Hlavní stránka]] | ||