Kompilace jádra Linuxu 3 – Konfigurace

Pokud jste četli mé předchozí články o kompilaci jádra, už jste vyzbrojeni nutnou teorií a víte, kde vzít všechny potřebné součásti ke kompilaci. Tentokrát půjde o věc podstatně složitější – konfiguraci jádra. Je to nejzásadnější krok kompilace a vyžaduje značné úsilí. Takže směle do toho…

Výstupem konfigurace jádra by měl být jediný soubor .config, který pak bude řídit, co a jak se do jádra zkompiluje. Ačkoliv je to jediný soubor, budete se divit, kolik stojí práce. Nemá smysl tady popisovat všechny tři tsíce voleb konfigurace, s každou verzí jádra se mění jejich uspořádání, přibývají nové a staré mizí. Popíšu jenom, jak konfiguraci spustit a přidám pár základních tipů.
Ještě než začnete
Ze všeho nejdříve je třeba vyčistit všechny nepěkné soubory. Pokud kompilujete jádro poprvé, úklid za vás obstará tento příkaz:
make mrproper

Ano, nemýlíte se, opravdu je to pojmenováno podle čistícího prostředku Pozor, tento pán smaže i případný .config soubor, tak opatrně. V případě, že kompilujete jádro znovu ze stejných zdrojových souborů, očistu provedete takto:
make clean
Pokud jste už jednu z předchozích verzí jádra konfigurovali, doporučuji nakopírovat její .config soubor do nových zdrojových kódů. Vlastnosti, které se s novou verzí jádra nezměnily, budou nastaveny podle něj.
Konfigurace
Teď už můžete spustit samotnou konfiguraci. Chcete-li skončit u doktora Chocholouška, můžete editovat soubor .config ručně, nejlépe ještě nějakým hardcore editorem z pravěkých dob. My ostatní se spokojíme s jedním z konfiguračních nástrojů:
- config
- Doktor Chocholoušek podruhé aneb tisíc a jedna otázka pro vaše zdravé sebeovládání. Dříve, když bylo voleb jádra méně, mělo to význam, dnes už bych to opravdu nedoporučoval.
- oldconfig
- Podobně jako předchozí, ale v případě, že jste do zdrojových kódů nakopírovali předchozí .config soubor, budete dotázáni jen na nové a změněné konfigurační možnosti.
- menuconfig
- Nejpoužívanější varianta, konfigurace v textovém rozhraní.
- xconfig
- Grafické konfigurační rozhraní.
- gconfig
- Grafické konfigurační rozhraní v GTK.
A který je ten pravý? Zlatá střední cesta:
make menuconfig
Volby konfigurace
Ovládání menuconfigu je intuitivní, potřebujete vědět pouze to, že u každé fičůrky je chlíveček, ve kterém označíte, zda o danou vlastnost máte zájem či nikoli a jestli to má být modul nebo součást jádra.

- Typy voleb:
[ ]– vlastnost může být součást jádra nebo nepoužita< >– vlastnost může být součást jádra, modul nebo nepoužita{ }– vlastnost může být součást jádra nebo modul (je vybraná jinou vlastností)- -– vlastnost je vybraná jinou vlastností (nelze změnit)- Možná nastavení voleb:
<*>– vlastnost je součást jádra<M>– vlastnost je modul< >– vlastnost je nepoužita
První, co vás bude trápit, je, co dát do modulů a co přímo od jádra. Existuje na toto téma mnoho teorií, já se řídím jednoduchým pravidlem. Vše, co je potřeba k naběhnutí systému a k jeho úplně základní funkcionalitě, dávám přímo do jádra, zbytek patří do modulů. Velmi důležité je dát přímo do jádra ovladače disku se systémem a ovladače jeho souborového systému. Můžete je dát i do modulů, ale pak vás čeká trápení s initrd. Nechtějte raději vědět, co to je.
Pár tipů pro konfiguraci

Teď tedy pár základních nastavení, která jsou pro konfiguraci všech verzí jader společná.
Prompt for development and/or incomplete code/drivers- Ano, spousta vlastností jádra je označena jako development nebo incomplete.
Support for paging of anonymous memory (swap)- Ano, paměť swap téměř jistě potřebovat budete.
Kernel .config support a Enable access to .config through /proc/config.gz- Ano, díky tomu bude .config soubor zakompilován přímo
do jádra a přístupný pak v
/proc/config.gz. Initial RAM filesystem and RAM disk (initramfs/initrd) support- Ne, jak už jsem psal: nechtějte vědět, co to initrd je. Tuto část jádra potřebujete pouze pokud z nějakého chorobného výplodu vaší mysli chcete mít ovladače systémového disku jako moduly.
Enable loadable module support- Ano, určitě chcete některé části jádra jako moduly.
Module unloading- Ano, chcete mít možnost moduly z jádra za běhu odebrat.
Automatic kernel module loading- Ano, chcete aby jádro automaticky načítalo moduly, které jsou potřeba.
Generic x86 support- Ne, tato možnost optimalizuje jádro tak, aby fungovalo obecně na x86 procesorech, což využívají distribuce pro kompilaci jejich distribuovaných jader. Vy si kompilujete nejspíš jádro na míru vašemu procesoru.
Preemption model- Pro desktop je kvůli rychlejší odezvě vhodné zvolit
Preemtible Kernel (Low-Latency Desktop). Preemtp The Big Kernel Lock- Pro desktop kvůli rychlejší odezvě ano.
Timer frequency- Pro desktop co nejvyšší (1000Hz).
Kernel hacking- Rozhodně ne. Může to znít jako dobrý nápad ale ve skutečnosti to poměrně dost zpomaluje jádro.
- Různé debug možnosti
- Ne, opět dojde jen ke zpomalení a nárůstu velikosti jádra.

Tak to je vše, co mělo smysl zmiňovat. Při kompilaci doporučuji intenzivně využívat nápovědu. V nápovědě je vždy napsáno výchozí nastavení a taky často magická věta „This is generally a good idea, so say Y.“ nebo „If unsure, say N.“ Překlad některých nastavení najdete na české Linux Kernel Wiki. Přeji vám hodně zdaru, těšte se zejména na nabobtnalé sekce Networking, Device drivers a File systems.
- Související články
- Kompilace jádra Linuxu 1 – Co a proč
- Kompilace jádra Linuxu 2 – Ingredience
- Datum modifikace
- 22. 05. 2008
- Sekce
- IT
Další články na tomto blogu
- Předchozí:
- Ergonomie e-mailu
- Následující:
- Kompilace jádra Linuxu 2 – Ingredience

