Přihlásit | Registrovat

Kompilace jádra

Tato pasáž je určena pokročilejším uživatelům a správcům systémů!

Kompilace jádra v linuxu není nijak složitá na pochopení ani na provedení. Co je zapotřebí vzít v úvahu je fakt, že se snadno při volbách jaderných modulů lze snadno „ukliknout“ a v jádře může chybět nezbytná komponenta a systém s takovým jádrem prostě nespustíte.

Ze strany Mandriva Linuxu se výrazně zlepšila podpora zavedením mnoha druhů „kernel“ balíčků zacílených na nejrůznější potřeby uživatelů. Názvy „desktop“, „laptop“, „server“ a jiné jasně vystihují zaměření příslušných jader. Jsou k dispozici jádra jak distribuční „mdv“, tak i jádra Mambo „mnb“. Dále jsou k dispozici jádra „linus“, tedy čistá (vanilla) jádra určená pro přípravu složitějších záležitosti (používání speciálních patchů s různám zacílením). Další podrobnosti viz článek Jádro a jeho úpravy

Pro kompilaci musíte mít v systému nainstalovány zdrojové kódy příslušného jádra. Obsahuje je balíček, který má v názvu slovo „source“. Zároveň s ním se do systému natáhnout závislosti jako je kompilátor gcc a řada dalších nezbytných nástrojů (pokud je tam již nemáte). Počítejte s tím, že příprava čistého systému na kompilaci jádra zabere minimálně 200MB diskového prostoru.

Po této přípravě můžete přikročit k vlastní přípravě jádra pro kompilaci. Musíte upravit soubor s vlastním nastavením, které se využije při kompilaci. V adresáři /usr/src/linux-prislusne-verze/ najděte soubor .config. Například

/usr/src/linux-2.6.31.6-desktop-1mnb/.config

Pokud si necháte tento soubor vypsat na monitor, napřiklad příkazem

cat /usr/src/linux-2.6.31.6-desktop-1mnb/.config|less

můžete se podívat, co obsahuje. Struktura souboru je následující:

#
# General setup
#

uvozuje sekci s příslušným nastavením. Následují položky ve formátu PARAMETR=nastavení:

CONFIG_LOCK_KERNEL=y

Nastavení může mít podobu přepínače y (yes; položka povolena ke kompilaci do jádra), m (položka povolena ke kompilaci jako jaderný modul), různé číselné parametry závisejícího na tom, co se nastavuje,hexadecimální čísla (typicky nastavení offsetů) a další. Nepoužité volby jsou uvozeny znakem “#“ a poznámkou „is not set“.

TENTO SOUBOR SE NEPOKOUŠEJTE EDITOVAT V TEXTOVÉM EDITORU!
K tomu je určen speciální nástroj, který vás konfigurací provede. Význam jednotlivých přepínačů je v linuxových distribucích uveden v souboru Configure.help v adresáři s dokumentací jádra (typicky /usr/src/linux-2.6.31.6-desktop-1mnb/Documentation/), v Mandriva Linuxu jsem ho nenašel.

Krok 1. - nastavení souboru .config

Původní soubor .config si uložte (zazálohujte)!!

Pokud se pohybujete v grafickém režimu (X-window), pak lze použít příkaz make xconfig. Spustíte ho jako root v adresáři /usr/src/linux. Pokud se pohybujete v příkazovém řádku, je jeho ekvivalentem příkaz make menucofig.

Starší varianta (make config) se nedoporučuje, protože každý parametr nastavujete postupně, bez nápovědy a bez možnosti vrátit se a nastavení změnit.

Projděte nastavení a zaškrtněte moduly které v jádře požadujete, odškrtněte ty, které nejsou zapotřebí, rozhodněte, zda má být součástí jádra, nebo v podobně modulu, který se načítá jen v případě potřeby.

Příkazy make *config nahlížejí do souborů Config.in, které jsou umístěny v každém adresáři s ovladačem. Jak obtížné by bylo ruční procházení si asi dovedete představit. Podle tohoto souboru nabídnou možnosti nastavení pro příslušný ovladač (proto je potřeba používat příkazy make xconfig nebo make menuconfig).

Krok 2. - sestavení binárního jádra podle nastavení v .config

Po dokončení úprav souboru .config je zapotřebí provést sestavení binárního jádra, které systém používá. V předchozím kroku jste si upravili soubor .config podle potřeb.

Nyní spustíte postupně 4 (nebo 5) následující příkazy:

1.

make dep

který zjistí, zda jsou k dispozisi příslušné závislosti a nastaví kompilaci tak, aby byly začleněny do kompilovaného jádra.

(2.)

make clean

zajistí odstranění pro kompilaci nepotřebných souborů (objektové soubory a některé další). Jde o přípravu (očištění) kompilačního prostředí. Tento příkaz býval nutný u starších verzí jádra a příkazu „make“. V současnosti není nutný. Jeho spuštěním ale nic nezkazíte. Pokud se při kompilaci vyskytnou nečekané chyby, proveďte kroky uvedené v této části včetně make clean a pravděpodobně potíže odstraníte.

2. (3.)

make bzImage

je příkaz k vlastní kompilaci jádra. Vytvoří soubor jádra s názvem bzImage. Najdete ho v adresáři:

/usr/src/linux_dané_verze/arch/i386/bzImage

3. (4.)

make modules

Kompilace modulů, které jsou dynamicky zaváděny pouze v případě potřeby a nejsou nedílnou součástí jádra.

4. (5.)

make modules_install

zajistí, že zkompilované moduly jsou nainstalovány na příslušná místa v adresářové struktuře jádra.

Nyní následují ještě tři kroky - musíte ručně zkopírovat nové jádro do adresáře /boot:

cp /usr/src/linux_vase_verze/arch/i386/boot/bzImage /boot/kernel-vase-oznaceni

a soubor System.map obsahující symbolickou tabulku svého jádra:

cp /usr/src/linux_vase_verze/arch/i386/boot/System.map /boot/System.map-stejne-oznaceni-jako-ma-vase-jadro

Dále je zapotřebí editovat soubor /boot/grub/menu.lst tak, aby se v ní nové jádro objevilo a bylo při startu zvolitelné.

Máme jádro, co dál

Při dalším startu systému vyberte ze startovací nabídky grubu nové jádro a spusťte systém. Otestujte jeho chování, vyzkoušejte funkčnost všech periférií (nezapomněli jste na nějaký ovladač?), stabilitu pod zátěží, test paměti, přístupové rychlosti diskú, výměnných zařízení, a používané periferie (tiskárny, modemy, UPSky atd, služby (HTTP, FTP, ssh a všechny další). Pokud se jádro osvědčí řekněme v týdenním rutinním provozu, můžete si ho nastavit jako výchozí. Jedno starší si rozhodně pro případ neočekávaných potíží ponechte.

Uvědomte si, že učený z nebe nespadl. Své první jádro budete pravděpodobně kompilovat několikrát, než získáte funkční kernel. Na netu je řada návodů, které vám napoví, co dělat v případě potíží. A hlavní doporučení?
NEOPRAVUJTE, CO FUNGUJE! UŠETŘÍTE SI TAK HODINY STAROSTÍ! ;-)

Mandriva Wiki
system/prikazovy_radek/kernel_kompilace.txt · Poslední úprava: 2010/12/11 12:42 autor: yullaw