navody:fc6jadro

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
Poslední revizeObě strany příští revize
navody:fc6jadro [2007/04/14 20:42] mackynavody:fc6jadro [2007/04/15 08:54] macky
Řádek 1: Řádek 1:
-[[navody:fc6obsah|Hlavní stránka]] 
- 
-===== Jádro ===== 
- 
-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í, 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. souborů 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. 
- 
-====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/ú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 Core//. Označení ''FC5'' pak znamená, že se jedná o jádro určené pro //Fedora Core// 5.\\ 
- 
-==== Přidání ovladače ==== 
-  * Přečtěte si kapitolu [[navody:fc6obsah#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 "čistěji" než kdyby byl "zabastlen" přímo do jádra. Další výhodou je, že nové ovladače lze jednoduše do jádra připojit a není třeba znovu kompilovat jádro. Třetí výhodou je úspora operační paměti. Kdyby všechny ovladače musely být přímou součástí jádra, bylo by toto jádro při současném množství hardwaru neúměrně velké a zabíralo by zbytečně příliš mnoho operační paměti. 
- 
-=== 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 ''/dev'' (s vyjímkou síťových zařízení). Každý soubor zařízení má tzv. hlavní a vedlejší číslo. Hlavní číslo definuje, jaký konkrétní ovladač má být pro daný hardware použit((Může dokonce platit, že jedno zařízení může mít několik souborů zařízení a tak používat několik různých ovladačů. Jako příklad lze uvést kazetopáskovou jednotku, kdy různé ovladače mohou definovat různou hustotu zápisu. Výběrem souboru zařízení tak vyberete také ovladač, který má zajišťovat komunikaci s daným hardwarem.)). Vedlejší číslo, nazývané také číslo jednotky, je jakýmsi pořadovým číslem zařízení.\\ 
-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í, lze poznat podle prvního znaku rozšířeného výstupu příkazu ''ls''. 
- 
-  ls -l /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''.)). 
- 
-=== Ovladač zařízení === 
-Samotný ovladač je možné do jádra přidat následujícími způsoby: 
-  * tzv. "patchováním" jádra 
-  * 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: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í 
- 
-  /sbin/insmod /lib/modules/verze_jadra/kernel/drivers/typ_zarizeni/ovladac.ko 
- 
-Jestliže jste při použití příkazu ''insmod'' získali chybové hlášení ''symbols missing'', došlo k porušení závislostí zaváděných ovladačů. O potřebné závislosti se při zavádění modulů postará příkaz ''modprobe''. 
- 
-  /sbin/modprobe ovladac 
- 
-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 
- 
-  /sbin/modprobe -c 
- 
-který vytvoří soubor ''/etc/modprobe.conf''. Ten obsahuje závislosti všech aktuálně používáných modulů. Druhou možností je použít příkaz ''depmod''. 
- 
-  /sbin/depmod -a 
- 
-Ten vygeneruje soubor ''/etc/modules.dep'' obsahující všechny závislosti mezi moduly v adresáři ''/lib/modules/verze_jadra''.\\ 
- 
-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 ''rc'' - např. na konec souboru ''/etc/bashrc''.\\ 
- 
-Výpis všech aktuálně natažených modulů získáte pomocí 
- 
-  /sbin/lsmod 
- 
-**Poznámka:** Některé moduly mohou vyžadovat zadání parametrů (např. obsluhu přerušení //IRQ//). Více informací by mělo být součástí návodu k použití příslušného ovladače. 
- 
-====Patchování jádra==== 
-  * 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''((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 
- 
-  gunzip -c cesta_k_patch_souboru/patch_cislo.gz | patch -p1 
- 
-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. 
- 
-  gunzip -c cesta_k_patch_souboru/patch-2.6.15.gz | patch -p1 
-  gunzip -c cesta_k_patch_souboru/patch-2.6.16.gz | patch -p1 
-  gunzip -c cesta_k_patch_souboru/patch-2.6.17.gz | patch -p1 
- 
-==== Překlad jádra ==== 
-  * Přečtěte si kapitolu [[navody:fc6obsah#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 "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 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" 
- 
-=== Jádro ze src.rpm === 
- 
-**Poznámka:** Níže uvedený postup byl převzat z [[http://www.mjmwired.net/resources/mjm-fedora-fc6.html#kernelsrc |www.mjmwired.net]]. 
-\\ 
-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. 
-\\ 
-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 
- 
-Proveďte aktualizaci jádra Vašeho systému. 
- 
-  yum -y update kernel 
- 
-Restartujte počítač, abyste "natáhli" nové jádro. Po té vytvořte adresář ''/opt/kernel'' a nastavte ho jako pracovní. 
- 
-  mkdir /opt/kernel 
-  cd /opt/kernel 
- 
-Do adresáře ''/opt/kernel'' stáhněte soubor ''kernel-verze_jadra.src.rpm'', který obsahuje zdrojové kódy. 
- 
-  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 ''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 
- 
-Samotnou kompilaci zdrojových kódů jádra pak spustíte pomocí příkazů 
- 
-   cd /usr/src/redhat/SPECS 
-   rpmbuild -bp --target architektura kernel-verze_jadra.spec 
- 
-Výsledný //rpm// balíček pak naleznete v adresáři ''/usr/src/redhat/RPMS/architektura/''. 
- 
-** Poznámka: ** Architekturu Vašeho počítače zjistíte pomocí příkazu ''uname -m''. 
- 
-=== 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. 
-\\ 
-Stáhněte příslušný soubor se zdrojovými kódy ze stránek [[http://www.kernel.org]]. 
- 
-Přesuňte se do adresáře ''/usr/src/kernels''. 
- 
-  cd /usr/src/kernels 
- 
-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 /usr/src/kernels/verze_jadra.tar.gz 
- 
-popř. 
- 
-  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ů 
- 
-  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:** 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. 
-\\ 
-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. 
- 
-  cd /usr/src/kernels/verze_jadra 
- 
-Překlad spustíte pomocí příkazu 
- 
-  make config 
-   
-  * 
-  * Linux Kernel Configuration 
-  * 
-  *  
-  * Code maturity level options 
-  * 
-  Prompt for development and/or incomplete code/drivers (EXPERIMENTAL) [Y/n/?] 
- 
-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 přeložena ve formě modulu.\\ 
-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í 
- 
-  make menuconfig 
- 
-{{ menuconfig.png }} 
- 
-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í 
- 
-  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 ''/usr/src/kernels/verze_jadra/arch/i386/boot/bzImage'' do souboru ''/boot/vm linuz'' a soubor ''/usr/src/kernels/verze_jadra/arch/i386/boot/System.map'' do souboru ''/boot/System.map''. 
- 
-  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 ''hda1''. Otevřete konfigurační soubor ''menu.lst'' zavaděče //GRUB// v textovém editoru 
- 
-  gedit /boot/grub/menu.lst 
- 
-a přidejte na jeho konec řádky 
- 
-  title Kernel verze_jadra 
- root (hd0,X) 
- 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.  
- 
-===== ===== 
-[[navody:fc6obsah|Hlavní stránka]] 
  
  • Poslední úprava: 2022/11/14 12:25
  • autor: 127.0.0.1