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]] |