Jádro systému, konfigurace

Jitka Kudrnáčová, jkudrnacova@centrum.cz


Obsah


Download

Nejnovější linuxové jádro je k dispozici na stránkách www.kernel.org, odkud je možné jej stáhnout jako tarball (archiv bzip2). Pokud máte staženou starší verzi kernelu, je rozumné nestahovat znova celé jádro, ale jen poslední patch. K dispozici je také archiv, changelog a FAQs.

Kernel je obecně dostupný ve dvou verzích -- stable a development. Pokud jste hodně odvážní, případně je to náplní vaší práce, použijte development verzi. Patříte-li mezi běžné smrtelníky, stáhněte si verzi stable.

Další možností je stáhnout si kernel v balíčku systému, který používáte (např. deb nebo rpm).

Pokud chcete zjistit, jaká je poslední verze, nepoužívejte finger.kernel.org. Jak se můžete dočíst na výše zmíněných stránkách, automatické monitorování vedlo k přetěžování finger démona. Stejnou informaci o posledním jádře najdete i na http://www.kernel.org/kdist/finger_banner.


Číslování verzí

V současné době se používají převážně jádra řady 2.6; za tímto číslem následuje číslo verze. Za stable se považuje jádro číslo 2.6.a.b, pokud tato ještě neexistuje, pak je za poslední stable verzi považováno jádro 2.6.a. Dříve (tzn. před verzí 2.6) se stable od development verze odlišovala následujícím způsobem -- development verze byly tvaru 2.a.b, kde a bylo liché, stable verze měly a sudé.

Kromě verzí, která obsahují jenom čísla, se můžete také setkat s verzemi, která obsahují krátké písmenné řetězce, jako například mm2 nebo rc1. Například rc je zkratka pro release candidate (neoficiální release), jiné pak označují kernel z development stromu konkrétního člověka -- ac ze stromu Alana Coxe, mm Andrewa Mortona.

Jádra mají také jména, třeba jádro 2.6.17 nese název Lordi Rules (Lordi je finská metalová kapela).

Nejnovější jádro je 2.6.18.

Konfigurace

Před samotným buildem je nutné kernel nakonfigurovat. Děje se tak pomocí voleb, které začínají prefixem CONFIG, například CONFIG_SMP (konkrétně tato volba nastavuje symetrický multiprocesing).

Konfigurační volby jsou buď tvaru yes/no nebo yes/no/module. Volba module říká, že danou volbu nastavit chceme, zkompilujeme ji ale jako modul. Tato volba je běžná u ovladačů.

Při konfiguraci samotné máte výběr z následujících možností:

Poslední tři možnosti mají tu výhodu, že volby konfigurace jsou logicky uspořádnány do skupin, což celý proces výrazně zpřehledňuje. (To není úplně pravda, i v případě make config jsou volby uspořádány do vyšších celků, pravděpodobně si toho ale nevšimnete, protože to moc zřetelné není.)

make defconfig -- vhodné pro začátečníky, kteří dosud kernel nekonfigurovali. Nastaví vám konfiguraci podle defaultních hodnot. (Existují drby, že na architektuře i386 se jedná o Linusovu konfiguraci.) Poté je dobré si konfiguraci zkontrolovat, že skutečně odpovídá vašim požadavkům a hardwaru, například tak, že si projdete soubor .config, který se nachází v kořenovém adresáři vašich zdrojových kódů kernelu.

Pokud nevíte, co vlastně máte uvnitř vašeho počítače za hardware, budou se vám hodit následující příkazy:

make oldconfig -- pokud jste měli starý kernel dobře nakonfigurovaný a na tomto nastavení nechcete nic měnit, použijte tuto volbu. Při ní se použije starý soubor .config, budete pouze dotázáni na nastavení voleb, které jste ve vašem starém kernelu nastaveny neměli; rozhraní bude stejné jako u make config.

Důležité volby při konfiguraci

Moduly

Jsou soubory s příponou .ko nebo .o (v případě modulů pro jádro řady 2.4). Do jádra se zavádí příkazem insmod, nebo modprobe (druhý příklad kromě modulu samotného nahraje ještě moduly na něm závislé). Modul lze odebrat příkazem rmmod, je ale nutné mít vyřešené závislosti. Důležitý je také příkaz modinfo, který vypisuje informace o daném modulu.

Překlad, instalace

Celý překlad je možné obstarat příkazem

make all modules_install

což odpovídá následujícím třem příkazům:

Pokud si nejste s něčím jisti, můžete použít make help.

To, kam nakopírovat nový kernel image, je silně závislé na architektuře a zvoleném zavaděči systému.

Příklad pro grub a architekturu i386: zkopírujte arch/i386/boot/bzImage do /boot, přejmenujte tento soubor na něco jako vmlinuz-verze a upravte příslušným způsobem konfiguraci grubu (tj. soubor /boot/grub/menu.lst).

Malá rada: hodí se nesmazat hned starý kernel, protože v případě, že jste při konfiguraci nebyli úspěšní a s novým jádrem nenabootujete, budete mít možnost nabootovat do jádra starého a problém vyřešit.

System.map

Jedná se o soubor obsahující tabulku, která převádí adresy na symboly. Nachází se v /boot a jeho přesný název je System.map-verze (například System.map-2.6.17-1-k7).

Initram

Vytváří se příkazem mkinitrd. Není nutný na všech systémech, je však nezbytný pokud musíte nahrát nějaké drivery ještě před samotným bootem kernelu.

Je-li použit, pracuje ve dvou fázích, v první se připojí jako počáteční root file-system (ze souboru /dev/initrd) a v druhé fázi jsou nahrány potřebné moduly. Pak se použité místo uvolní a kernel namontuje reálný root file-system.

Parametry jádra při startu

Pokud bootujete přímo z BIOSu, parametry jádra při startu nelze nastavit. Musíte tedy použít nějaký zavaděč systému, lilo nebo grub.

Parametry jádra při startu se nastavují takto: jádro parametr=hodnota1,hodnota2

Maximální možný počet hodnot je 10.

To, jaké parametry při startu použít, lze najít v man bootparam. Mezi nejběžnější patří root=, init=, ro, rw.