Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze |
navody:prirucka:jadro [2008/04/17 02:04] – upraveno mimo DokuWiki 127.0.0.1 | navody:prirucka:jadro [2022/11/14 11:26] (aktuální) – upraveno mimo DokuWiki 127.0.0.1 |
---|
[[obsah|Hlavní stránka]] | [[obsah|Hlavní stránka]] |
| |
| |
===== Jádro ===== | ===== Jádro ===== |
| |
{{: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.\\ | {{:navody:48x48:categories:applications-system.png?48 }}První linuxové jádro spatřilo světlo světa v roce 1991. Mezitím uplynulo více než dvacet let - jádro dospělo do verze 4.0 a skládá se z více než 15 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í.\\ |
====Značení jádra==== | ====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.\\ | Aktuální verze stabilního jádra v době poslední aktualizace tohoto článku (duben 2015) byla 4.0.0.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 4 je tzv. hlavní verze jádra a mění se jednou za pár let - jádro 3.0 bylo vydáno v roce 2012.\\ |
Čí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.\\ | První nula označuje tzv. vedlejší verzi jádra a mění se zhruba každé tři měsíce, kdy vychází nová verze jádra. Každé čtvrté vydání je prohlášeno za vydání s prodlouženou podporou.\\ |
Čí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.\\ | Další nula označuje tzv. patch level - opravnou verzi. Pomocí patche, které jsou vydávány v řádu týdnů, lze provádět opravy. Aplikací patche tak lze provést aktualizací jádra.\\ |
Jestliže na Vašem systému zadáte příkaz ''uname -r'' získáte výstup ve tvaru ''2.6.23.1-49.fc8''. "Číslíček" je tedy poněkud více. Vedle patch levelu, vedlejší a hlavní verze jádra figuruje ve výpisu také číslo 49. To značí verzi patch levelu pro potřeby projektu //Fedora//. Označení ''fc8'' pak znamená, že se jedná o jádro určené pro //Fedoru 8//.\\ | Jestliže na Vašem systému zadáte příkaz ''uname -r'' získáte výstup ve tvaru ''4.0.0-1.fc22''. "Číslíček" je tedy poněkud více. Vedle patch levelu, vedlejší a hlavní verze jádra figuruje ve výpisu také číslo 1. To značí verzi patch levelu pro potřeby projektu //Fedora//. Označení ''fc22'' pak znamená, že se jedná o jádro určené pro //Fedoru 22//.\\ |
| |
==== Přidání ovladače ==== | ==== Přidání ovladače ==== |
* Přečtěte si kapitolu [[obecne_poznamky|Obecné poznámky]]. | * Přečtěte si kapitolu [[obecne_poznamky|Obecné poznámky]]. |
| |
**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.)). Nic Vám však 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 ''dnf -y update kernel''((Příkaz musí být spouštěn z účtu superuživatele.)). Nic Vám však 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 |
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.)). |
\\ | \\ |
=== Nástroje pro překlad jádra === | === Nástroje a knihovny 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 "Development Tools" | Nástroje potřebné pro překlad jádra jsou obsaženy v balíčku vývojových nástrojů. |
| |
=== 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. |
| |
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 | Tuto skupinu nainstalujete pomocí |
| |
yum -y groupinstall "Development Libraries" | dnf -y groupinstall c-development |
| |
=== Zdrojové kódy jádra === | === Zdrojové kódy jádra === |
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ů. |
| |
yum -y install rpm-build | dnf -y install rpm-build |
| |
Proveďte aktualizaci jádra Vašeho systému. | Proveďte aktualizaci jádra Vašeho systému. |
| |
yum -y update kernel | dnf -y update kernel |
| |
Restartujte počítač, abyste "natáhli" nové jádro. Po té vytvořte adresář ''/opt/kernel'' a nastavte ho jako pracovní. | Restartujte počítač, abyste "natáhli" nové jádro. Po té vytvořte adresář ''/opt/kernel'' a nastavte ho jako pracovní. |
Do adresáře ''/opt/kernel'' stáhněte soubor ''kernel-verze_jadra.src.rpm'', který obsahuje zdrojové kódy. | Do adresáře ''/opt/kernel'' stáhněte soubor ''kernel-verze_jadra.src.rpm'', který obsahuje zdrojové kódy. |
| |
yum install yum-utils | dnf install yum-utils |
yumdownloader --source kernel --enablerepo updates-source | yumdownloader --source kernel --enablerepo updates-source |
| |
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 install ncurses-devel''. Rozhraní pro konfiguraci jádra se pak spouští z adresáře ''/usr/src/kernels/verze_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 ''dnf -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:f8menu_config.png | menuconfig }} | {{ navody:f8menu_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/verze_jadra'' tentokrát však pomocí | Chcete-li namísto ''menuconfig'' používat ''gconfig'', je třeba nainstalovat balík //Gnome Software Development// pomocí ''dnf -y groupinstall "Gnome Software Development"''. Rozhraní pro konfiguraci jádra se pak opět spouští z adresáře ''/usr/src/kernels/verze_jadra'' tentokrát však pomocí |
| |
make gconfig | make gconfig |
| |
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.\\ | 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 ''/usr/src/kernels/verze_jadra/arch/i386/boot/bzImage'' do souboru ''/boot/vmlinuz'' a soubor ''/usr/src/kernels/verze_jadra/arch/i386/boot/System.map'' do souboru ''/boot/System.map''. | Zkopírujte soubor ''/usr/src/kernels/verze_jadra/arch/i386/boot/bzImage'' do souboru ''/boot/vmlinuz''. |
| |
cp /usr/src/kernels/verze_jadra/arch/i386/boot/bzImage boot/vmlinuz | cp /usr/src/kernels/verze_jadra/arch/i386/boot/bzImage boot/vmlinuz |
cp /usr/src/kernels/verze_jadra/arch/i386/boot/System.map /boot/System.map | |
| |
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, že se adresář ''/boot'' nachází na disku ''sda1''. Otevřete konfigurační soubor ''menu.lst'' zavaděče //GRUB// v textovém editoru | 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, že se adresář ''/boot'' nachází na disku ''sda1''. Otevřete konfigurační soubor ''grub.conf'' zavaděče //GRUB// v textovém editoru |
| |
gedit /boot/grub/menu.lst | gedit /boot/grub/grub.conf |
| |
a přidejte na jeho konec řádky | a přidejte na jeho konec řádky |
| |
title Kernel verze_jadra | title Kernel nazev_vaseho_jadra |
root (hd0,0) | root (hd0,0) |
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. |
| |
===== ===== | ---- |
[[obsah|Hlavní stránka]] | [[obsah|Hlavní stránka]] |