Následující verze | Předchozí verze |
navody:f7jadro [2007/05/20 07:53] – vytvořeno macky | navody:f7jadro [2022/11/14 11:25] (aktuální) – upraveno mimo DokuWiki 127.0.0.1 |
---|
[[navody:f7obsah|Hlavní stránka]] | [[navody:f7obsah|Hlavní stránka]] |
| |
| |
===== Jádro ===== | ===== Jádro ===== |
| |
První linuxové jádro spatřilo světlo světa v roce 1991. Mezitím uplynulo šestná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.\\ | {{:navody:48x48:categories:applications-system.png }}První linuxové jádro spatřilo světlo světa v roce 1991. Mezitím uplynulo šestná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. soubory 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í.\\ | Jádro zajišťuje komunikaci mezi aplikacemi a hardwarem. Aplikace komunikují s hardwarem nepřímo přes tzv. soubory 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í.\\ |
| |
Ačkoliv defaulní nastavení jádra je pro většinu uživatelů naprosto dostačující, je možné jádro upravit podle Vašich 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((Po restartu počítače však bude obnoveno původní nastavení. Trvalé změny je nutné zapsat do souboru ''/etc/sysctl.cong'' popř. nastavit pomocí příkazu ''sysctl''.)). Úpravy jádra vyžadují poměrně hluboké znalosti týkající se nejen samotného //Linux//u ale také hardwaru. | Ačkoliv defaultní nastavení jádra je pro většinu uživatelů naprosto dostačující, je možné jádro upravit podle Vašich 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((Po restartu počítače však bude obnoveno původní nastavení. Trvalé změny je nutné zapsat do souboru ''/etc/sysctl.cong'' popř. nastavit pomocí příkazu ''sysctl''.)). Úpravy jádra vyžadují poměrně hluboké znalosti týkající se nejen samotného //Linux//u ale také hardwaru. |
| |
====Značení jádra==== | ====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í číselného označení jádra má svůj význam.\\ | Aktuální verze stabilního jádra v době psaní tohoto článku (září 2007) byla 2.6.22.5. 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 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 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 18 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.\\ | Číslo 22.5 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//. Označení ''FC5'' pak znamená, že se jedná o jádro určené pro //Fedora Core 5//.\\ | Jestliže na Vašem systému zadáte příkaz ''uname -r'' získáte výstup ve tvaru ''2.6.22.5-76.fc7''. "Číslíček" je tedy poněkud více. Vedle patch levelu, vedlejší a hlavní verze jádra figuruje ve výpisu také číslo 76. To značí verzi patch levelu pro potřeby projektu //Fedora//. Označení ''fc7'' pak znamená, že se jedná o jádro určené pro //Fedora 7//.\\ |
| |
==== Přidání ovladače ==== | ==== Přidání ovladače ==== |
brw-r----- 1 root disk 3, 0 říj 9 18:28 /dev/sda | brw-r----- 1 root disk 3, 0 říj 9 18:28 /dev/sda |
| |
Písmeno ''b'' značí, že disk ''sda'' je blokovým zařízením((Znakové soubory zařízení jsou označeny písmenem ''c''.)). | Písmeno ''b'' značí, že disk ''sda'' je blokovým zařízením. Znakové soubory zařízení jsou pak označeny písmenem ''c''. |
| |
=== Ovladač zařízení === | === Ovladač zařízení === |
* zavedením modulu ovladače | * 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:f7jadro#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 samostatné [[navody:f7jadro#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 v 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:f7obsah#Obecné poznámky]]. | * Přečtěte si kapitolu [[navody:f7obsah#Obecné poznámky]]. |
| |
**Poznámka:** Výše popsaný postup je aplikovatelný na tzv. vanila jádro. //Fedora// však používá jádro modifikované - proto by aplikace patchů níž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 aplikovat patche a následně jádro přeložit (viz. dále).\\ | **Poznámka:** Níže popsaný postup je aplikovatelný na tzv. vanila jádro. //Fedora// však používá jádro modifikované - proto by aplikace patchů níž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 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]]. 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 |
=== Jádro ze src.rpm === | === Jádro ze src.rpm === |
| |
**Poznámka:** Níže uvedený postup byl převzat z [[http://www.mjmwired.net/resources/mjm-fedora-f7.html#kernelsrc |www.mjmwired.net]]. | **Poznámka:** Níže uvedený postup byl převzat z [[http://www.mjmwired.net/resources/mjm-fedora-f7.html#kernelsrc |www.mjmwired.net]].\\ |
\\ | |
Pro překlad jádra můžete použít **zdrojové kódy připravené v rámci projektu //Fedora//**. Toto jádro je modifikované pro potřeby //Fedory// a obsahuje některé úpravy oproti tzv. vanila jádru.\\ | Pro překlad jádra můžete použít **zdrojové kódy připravené v rámci projektu //Fedora//**. Toto jádro je modifikované pro potřeby //Fedory// a obsahuje některé úpravy oproti tzv. vanila jádru.\\ |
Nejprve nainstalujte balíček ''rpm-build''. Tento balíček obsahuje skripty a programy, které se používají pro tvorbu balíčků. | Nejprve nainstalujte balíček ''rpm-build''. Tento balíček obsahuje skripty a programy, které se používají pro tvorbu balíčků. |
rpm -ivh kernel-verze_jadra.src.rpm | 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 ''kernel-verze_jadra-architektura.config''. Konfigurační soubor bohužel neobsahuje nápovědu pro jednotlivé položky, což činí případnou modifikaci souboru ''kernel-verze_jadra-architektura.config'' poněkud problematickou. | Nyní je možné přistoupit k překladu jádra. Před samotným překladem je možné provést ruční editaci konfiguračního souboru ''kernel-verze_jadra-architektura.config''. Konfigurační soubor bohužel neobsahuje nápovědu pro jednotlivé položky, což činí případnou modifikaci souboru ''kernel-verze_jadra-architektura.config'' poněkud problematickou. |
| |
gedit /usr/src/redhat/SOURCES/kernel-verze_jadra-architektura.config | gedit /usr/src/redhat/SOURCES/kernel-verze_jadra-architektura.config |
=== Jádro z www.kernel.org (tzv. vanila jádro) === | === Jádro z www.kernel.org (tzv. vanila jádro) === |
| |
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. | 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ý soubor se zdrojovými kódy ze stránek [[http://www.kernel.org]]. | Stáhněte příslušný soubor se zdrojovými kódy ze stránek [[http://www.kernel.org]]. |
| |
rm -f verze_jadra.tar.* | rm -f 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 //Fedory//((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. | **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 //Fedory//((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.\\ |
\\ | |
Nyní následuje samotný překlad jádra. Přesuňte se do adresáře ''/usr/src/kernels/verze_jadra'', který obsahuje zdrojové kódy jádra. | Nyní následuje samotný překlad jádra. Přesuňte se do adresáře ''/usr/src/kernels/verze_jadra'', který obsahuje zdrojové kódy jádra. |
| |
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''. | 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 install ncurses-devel''. Rozhraní pro konfiguraci jádra se pak spouští z adresáře ''/usr/src/kernels/verze_jadra'' pomocí |
| |
make menuconfig | make menuconfig |
| |
{{ navody:menuconfig.png }} | {{ navody:f7menu_config.png | menuconfig }} |
| |
Chcete-li namísto ''menuconfig'' používat ''gconfig'' je třeba nainstalovat balík //Gnome Software Development// pomocí ''yum -y groupinstall "Gnome Software Development"''. Rozhraní pro konfiguraci jádra se pak opět spouští z adresáře ''/usr/src/kernels/vezre_jadra'' pomocí | Chcete-li namísto ''menuconfig'' používat ''gconfig'' je třeba nainstalovat balík //Gnome Software Development// pomocí ''yum -y groupinstall "Gnome Software Development"''. Rozhraní pro konfiguraci jádra se pak opět spouští z adresáře ''/usr/src/kernels/verze_jadra'' pomocí |
| |
make gconfig | make gconfig |
| |
{{ navody: gconfig.png }} | {{ navody: f7gconfig.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 | 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 |