Pozor!
Tento článek je již zastaralý a brzy bude odstraněn. Mé nejnovější články naleznete na blogu o IT.
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).
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.
NahoruZí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 linuxNahoru
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
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