Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Následující verze | Předchozí verze | ||
navody:fc6jadro [2006/09/27 19:59] – vytvořeno macky | navody:fc6jadro [2022/11/14 11:25] (aktuální) – upraveno mimo DokuWiki 127.0.0.1 | ||
---|---|---|---|
Řádek 3: | Řádek 3: | ||
===== Jádro ===== | ===== Jádro ===== | ||
- | FIXME | + | 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í, |
+ | |||
+ | Jádro zajišťuje komunikaci mezi aplikacemi a hardwarem. Aplikace komunikují s hardwarem nepřímo přes tzv. souborů zařízení, | ||
+ | |||
+ | Ačkoliv defaulní 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 (ří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í((Např. těm, kteří používají //Linux// jako server.)). 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 18 označuje tzv. patch level. Pomocí patche, které jsou vydávány v řádu měsíců, lze provádět opravy/ | ||
+ | Jestliže na Vašem systému zadáte příkaz '' | ||
+ | |||
+ | ==== Přidání ovladače ==== | ||
+ | * Přečtěte si kapitolu [[navody: | ||
+ | |||
+ | 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í/ | ||
+ | |||
+ | ls -l /dev/hda | ||
+ | |||
+ | brw-r----- 1 root disk 3, 0 říj 9 18:28 /dev/hda | ||
+ | |||
+ | 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 této [[navody: | ||
+ | |||
+ | 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 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í | ||
+ | |||
+ | / | ||
+ | |||
+ | **Poznámka: | ||
+ | |||
+ | ====Patchování jádra==== | ||
+ | * Přečtěte si kapitolu [[navody: | ||
+ | |||
+ | **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 [[navody: | ||
+ | |||
+ | 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 " | ||
+ | |||
+ | === 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 //Fedora Core//**. Toto jádro je modifikované pro potřeby //Fedora Core// a obsahuje některé úpravy oproti tzv. vanila jádru. Překlad těchto zdrojových kódů je nesrovnatelně jednodušší než překlad vanila jádra. | ||
+ | \\ | ||
+ | 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 / | ||
+ | cd / | ||
+ | |||
+ | Do adresáře ''/ | ||
+ | |||
+ | yum install yum-utils | ||
+ | yumdownloader --source kernel --enablerepo updates-source | ||
+ | |||
+ | Tento soubor nainstalujete pomocí | ||
+ | |||
+ | rpm -ivh kernel-verze_jadra.src.rpm | ||
+ | |||
+ | Nyní je možné přistoupit k samotnému překladu jádra. Před samotným překladem je možné provést ruční editaci konfiguračního souboru '' | ||
+ | |||
+ | gedit / | ||
+ | |||
+ | Samotnou kompilaci zdrojových kódů jádra pak spustíte pomocí příkazů | ||
+ | |||
+ | cd / | ||
+ | | ||
+ | |||
+ | Výsledný //rpm// balíček pak naleznete v adresáři ''/ | ||
+ | |||
+ | ** Poznámka: ** Architekturu Vašeho počítače zjistíte pomocí příkazu '' | ||
+ | |||
+ | === 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: | ||
+ | \\ | ||
+ | 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 | ||
+ | |||
+ | {{ menuconfig.png }} | ||
+ | |||
+ | Chcete-li namísto '' | ||
+ | |||
+ | make gconfig | ||
+ | |||
+ | {{ gconfig.png }} | ||
+ | |||
+ | 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,X) | ||
+ | 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. | ||
===== ===== | ===== ===== | ||
[[navody: | [[navody: |