Kompilace jádra Linuxu 3 – Konfigurace

tučňák

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…

kdes' byl, prcku?

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
Mr. Proper

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
menuconfig

Přivětivé rozhraní menuconfigu.

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.

tučňák si vybírá
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
volby menuconfigu

Různé volby menuconfigu.

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

tučňák konfigurující

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.
bacha, tučňákoprcek

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
Ergonomie e-mailu
Kompilace jádra Linuxu&nbsp;2 &ndash;&nbsp;Ingredience
cnw counter