Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze Následující verzeObě strany příští revize |
navody:fc6jadro [2007/01/05 19:56] – macky | navody:fc6jadro [2007/04/06 17:30] – oddelena kompilace z rpm a z tar.gz covex |
---|
brw-r----- 1 root disk 3, 0 říj 9 18:28 /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 ((Znakové soubory zařízení jsou označeny písmenem ''c''.)). | Písmeno ''b'' značí, že //IDE// disk ''hda'' je blokovým zařízením((Znakové soubory zařízení jsou označeny písmenem ''c''.)). |
| |
=== Ovladač zařízení === | === Ovladač zařízení === |
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:fc6jadro#Patchování jádra| kapitole]].\\ | 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:fc6jadro#Patchování jádra| kapitole]].\\ |
| |
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 ''/lib/modules/cislo_verze_jadra'' ((Aktuální verzi jádra lze zjistit pomocí ''uname -r''.)). Příslušný ovladač lze velice snadno zavést pomocí | 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 ''/lib/modules/cislo_verze_jadra''((Aktuální verzi jádra lze zjistit pomocí ''uname -r''.)). Příslušný ovladač lze velice snadno zavést pomocí |
| |
/sbin/insmod /lib/modules/verze_jadra/kernel/drivers/typ_zarizeni/ovladac.ko | /sbin/insmod /lib/modules/verze_jadra/kernel/drivers/typ_zarizeni/ovladac.ko |
* Přečtěte si kapitolu [[navody:fc6obsah#Obecné poznámky]]. | * Přečtěte si kapitolu [[navody:fc6obsah#Obecné poznámky]]. |
| |
**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'' ((Příkaz musí být spouštěn z účtu superuživatele.)). 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). | **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''((Příkaz musí být spouštěn z účtu superuživatele.)). 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). |
| |
Patch je aktualizací jádra, která může mimojiné obsahovat také nové ovladače. Instalaci patche lze provést pomocí příkazu | Patch je aktualizací jádra, která může mimojiné obsahovat také nové ovladače. Instalaci patche lze provést pomocí příkazu |
| |
spuštěného z adresáře obsahujícího zdrojové kódy jádra (standardně se jedná o adresář ''/usr/src/kernels/cislo_verze_kernelu'').\\ | spuštěného z adresáře obsahujícího zdrojové kódy jádra (standardně se jedná o adresář ''/usr/src/kernels/cislo_verze_kernelu'').\\ |
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 [[http://www.kernel.org/pub/linux/kernel/v2.6/| zde ]]). Jestliže máte např. jádro 2.6.14 ((Verzi aktuálního jádra zjistíte pomocí ''uname -r''.)) 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ě nainstalovat. Jestliže nebude pořadí instalace patchů dodrženo nebo bude některý patch aplikován vícekrát, skončí tato operace nezdarem. | 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 [[http://www.kernel.org/pub/linux/kernel/v2.6/| zde]]). Jestliže máte např. jádro 2.6.14((Verzi aktuálního jádra zjistíte pomocí ''uname -r''.)) 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ě nainstalovat. Jestliže nebude pořadí instalace patchů dodrženo nebo bude některý patch aplikován vícekrát, skončí tato operace nezdarem. |
| |
gunzip -c cesta_k_patch_souboru/patch-2.6.15.gz | patch -p1 | gunzip -c cesta_k_patch_souboru/patch-2.6.15.gz | patch -p1 |
| |
=== Příprava === | === Příprava === |
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 "překlad" se také v této souvislosti můžete setkat s pojmem "kompilace" - jedná se ekvivalenty.)).\\ | 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 "překlad" se také v této souvislosti můžete setkat s pojmem "kompilace" - jedná se ekvivalenty.)).\\ |
| |
== Zdrojové kódy jádra == | == Zdrojové kódy jádra ze src.rpm == |
Nejjednodušším způsobem, jak získat zdrojové kódy jádra, je stáhnout je z reporitářů pomocí aplikace //yum//. | |
| |
yum -y install kernel-devel.i586 | Můžete použít **zdrojové kódy jádra 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.\\ |
| |
Toto jádro je modifikované pro potřeby //Fedora Core// a obsahuje některé úpravy oproti tzv. vanila jádru.\\ | Nainstalujte rpm-build - sestavovaci nastroj pro rpm. |
| |
| yum -y install rpm-build |
| |
| **Poznámka:** Níže uvedený postup byl převzat z [[http://www.mjmwired.net/resources/mjm-fedora-fc6.html#kernelsrc |www.mjmwired.net]].\\ |
| |
| yum -y update kernel |
| |
| Tímto provedete aktualizaci jádra. Restartujte počítač, abyste "natáhli" nové jádro. Po té zadejte do příkazové řádky |
| |
| mkdir /opt/kernel |
| cd /opt/kernel |
| |
| Výše uvedené příkazy vytvoří adresář ''/opt/kernel'' a nastaví ho jako pracovní. |
| |
| yum install yum-utils |
| yumdownloader --source kernel --enablerepo updates-source |
| |
| Tímto stáhnete do adresáře ''/opt/kernel'' soubor ve tvaru ''kernel-verze_jadra.src.rpm'', který obsahuje zdrojové kódy. Tento soubor nainstalujete pomocí |
| |
| rpm -ivh kernel-verze_jadra.src.rpm |
| |
| |
| == Zdrojové kódy jádra z kernel.org (tzv. vanila) == |
| |
| Druhou možností je stáhnout **zdrojové kódy vanila jádra** ve formě '.gz' popř. '.bz2' souborů přímo na stránkách [[http://www.kernel.org]]. Tyto komprimované soubory mají velikost 40 - 50 //MB// v závislosti na použitém komprimačním formátu a verzi jádra.\\ |
| |
| Stáhněte příslušný archiv z [[http://www.kernel.org]]. |
| |
Druhou možností je stáhnout zdrojové kódy vanila jádra ve formě '.gz' popř. '.bz2' souborů přímo na stránkách [[http://www.kernel.org]]. Tyto komprimované soubory mají velikost 40 - 50 //MB// v závislosti na použitém komprimačním formátu a verzi jádra.\\ | |
Přesuňte se do adresáře ''/usr/src/kernels''. | Přesuňte se do adresáře ''/usr/src/kernels''. |
| |
Nakopírujte do tohoto adresáře soubor se zdrojovými kódy vanila jádra pomocí příkazu | 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/verze_jadra.tar.gz verze_jadra.tar.gz | mv cesta_k_souboru_se_zdrojovými_kody/verze_jadra.tar.gz /usr/src/kernels/verze_jadra.tar.gz |
| |
popř. | popř. |
| |
mv cesta_k_souboru_se_zdrojovými_kody/verze_jadra.tar.bz2 verze_jadra.tar.bz2 | mv cesta_k_souboru_se_zdrojovými_kody/verze_jadra.tar.bz2 /usr/src/kernels/verze_jadra.tar.bz2 |
| |
v závislosti na typu komprimovaného souboru. Soubor pak rozbalte pomocí příkazů | v závislosti na typu komprimovaného souboru. Soubor pak rozbalte pomocí příkazů |
| |
gunzip verze_jadra.tar.gz | gunzip verze_jadra.tar.gz |
verze_jadra.tar.gz | |
| |
popř. | popř. |
| |
bunzip2 verze_jadra.tar.bz2 | bunzip2 verze_jadra.tar.bz2 |
verze_jadra.tar.gz | |
| |
Původní soubor se zdrojovými kódy vanila jádra pak můžete smazat pomocí příkazu | Původní soubor se zdrojovými kódy vanila jádra pak můžete smazat pomocí příkazu |
| |
rm verze_jadra.tar | rm verze_jadra.tar.* |
| |
**Poznámka:** Pokud budete chtít použít patche, aplikujte je pouze na vanila jádro. Jestliže používáte jádro upravené pro potřeby //Fedora Core//((Jedná se o jádra obsažená v distribuci nebo o jádra stažená z repozitářů.)), mohla aplikace patchů vést k problémům. Obecně platí, že je jednodušší stáhnout nejakutálnější verzi jádra, která již obsahuje případné patche.\\ | **Poznámka:** Pokud budete chtít použít patche, aplikujte je pouze na vanila jádro. Jestliže používáte jádro upravené pro potřeby //Fedora Core// ((Jedná se o jádra obsažená v distribuci nebo o jádra stažená z repozitářů.)), mohla by aplikace patchů vést k problémům. Obecně platí, že je jednodušší stáhnout nejakutálnější verzi jádra, která již obsahuje případné patche.\\ |
| |
== Nástroje pro překlad jádra == | == Nástroje pro překlad jádra == |
yum -y groupinstall "Development Tools" | yum -y groupinstall "Development Tools" |
| |
=== Překlad jádra === | |
| |
| === Překlad jádra ze src.rpm === |
| |
| FIXME |
| |
| Rucni editace konfiguracniho souboru: |
| |
| gedit /usr/src/redhat/SOURCES/kernel-2.6.20-i686.config |
| |
| Kompilace: |
| |
| cd /usr/src/redhat/SPECS |
| rpmbuild -bb --target i686 kernel-2.6.spec |
| |
| |
| Vysledné RPM pak naleznete v adresáři /usr/src/redhat/RPMS/i686/ |
| |
| |
| === Překlad jádra z kernel.org === |
| |
Nyní je možné přistoupit k samotnému překladu jádra. Přesuňte se do adresáře ''/usr/src/kernels/verze_jadra'', který obsahuje zdrojové kódy jádra. | Nyní je možné přistoupit k samotnému překladu jádra. Přesuňte se do adresáře ''/usr/src/kernels/verze_jadra'', který obsahuje zdrojové kódy jádra. |
| |
cd /usr/src/kernels/vezre_jadra | cd /usr/src/kernels/verze_jadra |
| |
Překlad spustíte pomocí příkazu | Překlad spustíte pomocí příkazu |
| |
Na jednotlivé otázky odpovídáte ''Y'' (ano), ''n'' (ne). Jestliže si odpovědí nejste jisti, zadejte ''?'' a u většiny položek se Vám zobrazí podrobnější popis. V řadě případů Vám bude nabídnuta ještě další možnost - ''m''. Pomocí této volby nebude odpovídající část kódu zapracována přímo do jádra, ale bude zkompilována jako modul.\\ | Na jednotlivé otázky odpovídáte ''Y'' (ano), ''n'' (ne). Jestliže si odpovědí nejste jisti, zadejte ''?'' a u většiny položek se Vám zobrazí podrobnější popis. V řadě případů Vám bude nabídnuta ještě další možnost - ''m''. Pomocí této volby nebude odpovídající část kódu zapracována přímo do jádra, ale bude zkompilována jako modul.\\ |
Nastavení jádra pomocí ''config'' je téměř nadlidský úkol - k jednotlivým otázkám se není možné vracet a každá chyba tak znamená, že je třeba celé martýrium třeba opakovat od začátku. Navíc není možné odpovědět pouze na část otázek, odpovědi uložit a pokračovat později. Z tohoto důvodu je vhodnější použít grafické nádstavby ''menuconfig'' nebo ''gconfig''. | Nastavení jádra pomocí ''config'' je téměř nadlidský úkol - k jednotlivým otázkám se není možné vracet a každá chyba tak znamená, že je třeba celé martýrium opakovat od začátku. Navíc není možné odpovědět pouze na část otázek, odpovědi uložit a pokračovat později. Z tohoto důvodu je vhodnější použít grafické nádstavby ''menuconfig'' nebo ''gconfig''. |
| |
Výše zmiňovanou volbu ''menuconfig'' je možné použít i textovém režimu. Je třeba pouze nainstalovat knihovnu //ncurses-devel// pomocí příkazu ''yum -y ncurses-devel''. Rozhraní pro konfiguraci jádra se pak spouští z adresáře ''/usr/src/kernels/vezre_jadra'' pomocí | Výše zmiňovanou volbu ''menuconfig'' je možné použít i textovém režimu. Je třeba pouze nainstalovat knihovnu //ncurses-devel// pomocí příkazu ''yum -y ncurses-devel''. Rozhraní pro konfiguraci jádra se pak spouští z adresáře ''/usr/src/kernels/vezre_jadra'' pomocí |
| |
title Kernel verze_jadra | title Kernel verze_jadra |
root (hd0,6) | root (hd0,X) |
kernel /boot/vmlinuz ro root=LABEL=/ rhgb quiet | kernel /boot/vmlinuz ro root=LABEL=/ rhgb quiet |
| |
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. | 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:fc6obsah|Hlavní stránka]] | [[navody:fc6obsah|Hlavní stránka]] |