Pozor!

Tento článek je již zastaralý a brzy bude odstraněn. Mé nejnovější články naleznete na blogu o IT.

[ Vytvořeno: 14. března 2008 ]

Jak na kompilaci jádra na Debianu

Postup správné kompilace:

Nejdříve je potřeba zjistit co máme za hardware

Toho se dá docílit několika možnými způsoby a na několika místech.
Jeden z nejlepších nástrojů je příkaz:

$ lspci

případně pro detailnější zobrazení:

$ lspci -v

Další užitečný nástroj je adresář /proc, kde nalezneme také spustu důležitých informací.
Vypsat činost aktuálního jádra(jader) lze například příkazem:

$ cat /proc/cpuinfo

V adresáři /proc/bus/ jsou informace o vstupních zařízeních (klávesnice, myš..), USB zařízeních, či PCI sběrnicích.
Zjistíme výpisem:

$ cat /proc/bus/input/devices
$ cat /proc/bus/usb/devices
$ cat /proc/bus/pci/devices

Tohle bylo pár nejdůležitějších míst z adresáře /proc, které jsem objevil, ale dá se zde vyčíst ještě spusta dalších informací.
Ještě bych doplnil, že tento adresář se za běhu systému mění a nelze v něm měnit žádná data (alespoň mně se to nepovedlo).

Nahoru

Příprava na kompilaci

Ke kompilaci jsou potřeba některé nástroje, které pokud nemáme je nutno doinstalovat. Jelikož na Debianu je defaultně grafické prostředí Gnome, je nejlepší používat nástroj gconfig (viz. dále).
Pokud nemáme, je nuto doinstalovat tyto balíky:

# apt-get install build-essential bin86 kernel-package gcc gcc-3.4 \
libncurses5 libncurses5-dev fakeroot
# apt-get install libglade2-dev

V případě, že chceme jádro pouze patchovat (o tom se zde nezmiňuji) je potřeba mít programy patch a cat. Tyto nástroje bývají standardní výbavou každé distribuce, takže myslím, že není třeba instalovat.

Nahoru

Získání zdrojových kódů jádra

Zdrojové kódy jádra jsou velmi důležité - ty totiž budeme kompilovat. Tyto kódy si můžeme buďto stáhnout ze stránek www.kernel.org. Toto jádro se nazývá tzv. vanilla kernel nebo Linusúv kernel. Je také třeba dát si pozor ať opravdu stáhneme zdrojové kódy jádra a ne jen patche.

Další možností je stáhnout jádro pomocí správce balíčků apt. Je potřeba zadat následující příkazy:

# apt-get install linux-source-2.6.X.Y
  - kde X.Y znamená verzi jádra.
V době, kdy jsem psal tento článek bylo nejnovější stable jádro linux-2.6.23.12

Poté, co se jádro stáhne, uloží se do adresáře /usr/src/ v mém případě to bylo /usr/src/linux-source-2.6.18.tar.bz2. Teď už stačí jen zadat sérii příkazů pro rozbalení jádra a vytvoření symbolického linku:

# tar xjf linux-source-2.6.X.Y
# ln -s linux-2.6.X.Y linux
# cd linux
Nahoru

Konfigurace jádra

Teď nastává nejdelší a nejdůležitější část při kompilaci jádra. Konfiguraci máme možnost provádět několika možnými nástroji - grafickými nebo jen v příkazové řádce. Račte si vybrat (voleb je samozřejmě mnohem víc, pro uživatele Gnome je nejlepší gconfig):

# make config
# make menuconfig
# make gconfig
# make xconfig

Pokud chceme jádro zkompilovat podle staršího .config souboru můžeme zadat

# make oldconfig

Následuje opravdu velké množství voleb součástí jádra, které můžeme nastavit. Jen v rychlosti povím, že volba
 - Y - znamená zkompilovat přímo do jádra
 - M - zkompilovat jako modul k jádru (moduly se dají dynamicky odebírat a přidávat)
 - N - nekompilovat

Nahoru

Samotná kompilace jádra

Jádro jsou zdrojové kódy, takže kdyz jsme si vybrali, co chceme v našem jádře, nezbývá než to všechno zkompilovat kompilátorem jazyka C (gcc). Zdrojových kódů je asi hodně, protože kompilace trvá asi půl hodiny a dá počítači opravdu zabrat.

No ale jak na to?

Jelikož je toto návod pro distro Debian, uděláme si debianovský balíček:

# make-kpkg --initrd --revision=nove-jadro.1.0 kernel-image

--initrd znamená, že chceme vytvořit soubor initrd.img-* (dobrovolná volba)
--revision=nove-jadro.1.0 znamená, že naše jádro bude mít pořadové jméno "nove-jadro.1.0" (dobrovolná volba)
kernel-image znamená, že vytváříme image jádra "nove-jadro.1.0" (povinná volba)

Pokud se nám tato "akce" zadaří úspěšně, vytvoří se o adresář výš, než je náš aktuální tzn. pokud máme vytvořen symlink v /usr/src/ soubor s názvem např.: linux-image-2.6.23.12-nove-jadro.1.0.deb
Tento balíček pak velice snadno nainstalujeme:

# dpkg -i linux-image-2.6.23.12-nove-jadro.1.0.deb

Instalace by už měla proběhnout bezproblémově, ale i v této fázi občas nastane problém. Po úspěšném nainstalování se updatuje adresář /boot/ i /boot/grub/ (jak je to s lilem nevím - nepoužívám) a stačí jen rebootovat a doufat, že nám nové jádro najede :)

Nahoru