Kernel - kompilace vanilla
Zechmeister Jiří (st19071@student.upce.cz)
Vanilkové jádro je základní jádro linuxu. Aktuálně se nachází ve verzi 2.6. Na toho základní jádro existuje mnoho patchů, které přidávají nové funkcionality, opravují chyby nebo zvyšují stabilitu.
URL:http://wiki.ubuntu.cz/Kompilace kernelu#N.2BARs-co_m.2BAOE-lo_o_kernelu
URL:http://www.digitalhermit.com/linux/Kernel-Build-HOWTO.html#SECTION-INTRO
Stávající verze jádra nepodporuje některé zařízení, které se nachází ve vašem pc.
Stávající jádro distribuce je příliš obecné. To znamená, že obsahuje velké množství ovladačů, které ani nevyužijete a proto je jádro moc velké.
Stávající jádro neobsahuje důležitou funkcionalitu, kterou potřebujete.
Stávající jádro obsahuje záplaty, o které přijede kompilací nového jádra
Systém perfektně běží a není nutné do něho zasahovat
Délka trvání kompilace na pomalejších strojích může trvat i hodiny
URL:http://wiki.ubuntu.cz/Kompilace kernelu#Pro.2BAQ0_kompilovat.3F
URL:http://www.digitalhermit.com/linux/Kernel-Build-HOWTO.html#WHY-REBUILD
Ke kompilaci je nutné získat zdrojové kódu jádra. Buď můžeme použít jádro přibalené k distribuci, které je již může být vybaveno sadou záplat, nebo můžeme použít čisté jádro.
Zdrojové kódy čistého jádra je možné získat na adrese http://www.kernel.org, nebo z některého z mirrorů. Mirrory jsou k dispozici na adrese http://kernel.org/mirrors/. Mirror pro Českou Republiku nalezneme na adrese http://www.cz.kernel.org.
URL:http://wiki.ubuntu.cz/Kompilace kernelu#Vanilla_kernel
Aktuální stabilní verze jádra ke dni 10.4.2009 je 2.6.29.1 2009-04-02 20:57 UTC
Význam jednotlivých čísel v označení verzí jádra.
Dříve, pokud byla druhá číslice sudá, znamenalo to stabilní řadu.V případě lichého se jednalo o vývojovou řadu.
Nyní se od tohoto způsobu číslování ustoupilo a pokračuje se dále v řadě.
Třetí číslice se mění pouze v případě, že do jádra byla přidána podpora nového zařízení nebo pokud byla přidána nová větší funkce jádra.
Čtvrtá číslice se mění v případě jednodušších úprav.
URL:http://wiki.ubuntu.cz/Kompilace%20kernelu#N.2BARs-co_m.2BAOE-lo_o_kernelu
HW nároky většiny distribucí se pohybují okolo 128MB RAM, 2GB místa na pevném disku a 200MHz Pentium nebo Pentium kompatibilní procesor.
I když velikost zdrojových kódů se pohybuje od 40 do 80MB, na samotnou kompilaci je nutné vyhradit až 400MB místa na pevném disku.
Kompilaci jádra je možné provést na silnějším stroji a instalovat na slabší.
Minimální SW a HW nároky se můžeme dozvědět ze souboru ./Documentation/Changes a souboru README v adresáři se zdrojovými kódy.
URL:http://www.digitalhermit.com/linux/Kernel-Build-HOWTO.html#HARDWARE-REQUIREMENTS
URL:http://www.digitalhermit.com/linux/Kernel-Build-HOWTO.html#SOFTWARE-REQUIREMENTS
Před samotnou instalací si musíme ujasnit, pro který hardware bude jádro obsahovat ovladače.
$ /sbin/lspci
Utilita, která nám zobrazí informaci o HW
$ cat /proc/cpuinfo
Dále je také nutné znát přesně typ procesoru
$ sudo apt-get install build-essential bin86 kernel-package gcc gcc-3.4 libncurses5 libncurses5-dev fakeroot
Nástroje pro samotnou kompilaci
$ sudo apt-get install libqt3-headers libqt3-mt-dev
Nástroj pro grafickou konfiguraci jádra xconfig (vhodné pro prostředí kde)
$ sudo apt-get install libglade2-dev
Nástroj pro grafickou konfiguraci jádra gconfig (vhodné pro prostředí gnome)
Vytvoříme si adresář pro zdroje
$ mkdir src
$ cd src
Pokud máme archiv ve formátu BZIP
$ sudo tar xfvj /path/to/linux-2.6.X.Y.tar.bz2
Pokud máme archiv ve formátu GZIP
$ sudo tar xfvz /path/to/linux-2.6.X.Y.tar.gz
Stažené zdrojové kódy čistého jádra můžou být upraveny dle vlastních potřeb uživatele. Nejlepším způsobem jak toho dosáhnout, je aplikace patchů.
URL:http://www.digitalhermit.com/linux/Kernel-Build-HOWTO.html#EXTRACT-PATCH
URL:http://wiki.ubuntu.cz/Kompilace kernelu#Aplikace_patch.2BAW8-
Konfiguraci můžeme provádět v různých režimech:
$ sudo make config
nejjednodušší - pouze textový režim

Obrázek 1.: Textové rozhraní konfigurace kernelu config, Autor: Zechmeister Jiří
$ sudo make menuconfig
pseudografika

Obrázek 2.: Zjednodušené grafické pseudorozhraní konfigurace kernelu menuconfig, Autor: Zechmeister Jiří
$ sudo make xconfig
Grafické prostředí vhodné pro KDE
$ sudo make gconfig
Grafické prostředí vhodné pro Gnome

Obrázek 3.: Grafické rozhraní konfigurace kernelu GConfig, Autor: Zechmeister Jiří
$ sudo make oldconfig
Konfigurace dle staršího konfiguračního souboru .config
URL:http://wiki.ubuntu.cz/Kompilace kernelu#Konfigurace_j.2BAOE-dra
URL:http://www.digitalhermit.com/linux/Kernel-Build-HOWTO.html#CONFIGURATION-2-6
$ sudo make clean
Uklidí po předchozích kompilacích
$ sudo make mrproper
Pečlivější úklid po předchozích kompilacích. Smaže vše tak, aby v adresáři zůstaly pouze soubory obsažené v původní distribuci zdrojových kódů. Z tohoto důvodu se doporučuje provádět ještě před konfigurací.
Pro přehlednost je doporučena editace souboru Makefile kde ihned na začátku nalezneme:
VERSION = 2
PATCHLEVEL = X
SUBLEVEL = Y
EXTRAVERSION =
Tady doplníme položku EXTRAVERSION podle aktuální verze jádra.
$ sudo make
Provede kompilaci kernelu a modulů
$ sudo make clean
Uklidí po předchozích kompilacích
$ sudo make mrproper
Pečlivější úklid po předchozích kompilacích. Smaže vše tak, aby v adresáři zůstaly pouze soubory obsažené v původní distribuci zdrojových kódů. Z tohoto důvodu se doporučuje provádět ještě před konfigurací.
Pro přehlednost je doporučena editace souboru Makefile, kde hned na začátku nalezneme:
VERSION = 2
PATCHLEVEL = X
SUBLEVEL = Y
EXTRAVERSION =
Tady doplníme položku EXTRAVERSION podle aktuální verze jádra.
$ sudo make dep
Kontrola závislostí
$ sudo make bzImage
Kompilace kernelu
$ sudo make modules
Kompilace modulů
URL:http://wiki.ubuntu.cz/Kompilace kernelu#Kompilace_ala_Debian_.28Ubuntu.29
URL:http://wiki.ubuntu.cz/Kompilace kernelu#Kompilace_ala_Linux
Dočasný souborový systém.
Zavádí se před samotným jádrem,. Obsahuje ovladače a moduly, které chce mít funkční ještě před spuštěním samotného jádra.
Například ovladač hlavního filesystému, kompilovaného jako modul.
Některé systémy nemusí být plně funkční bez initrd.
Ramdisk originálního jádra se nachází v /boot/initrd.img-2.X.Y-Z-architektura
URL:http://en.wikipedia.org/wiki/Initrd
$ sudo make modules_install
Provede instalaci modulů do adresáře /lib/modules
$ sudo mkinitramfs -o /boot/initrd-2.6.X.Y.EXTRAVERSION 2.6.X.Y.EXTRAVERSION
Vytvoří intrd na systémech kde není k dispozici příkaz mkinitrd
$ sudo mkinitrd /boot/initrd-2.6.X.Y.EXTRAVERSION 2.6.X.Y.EXTRAVERSION
Vytvoří intrd na systémech kde není k dispozici příkaz mkinitrd
$ sudo make install
Provedením tohoto příkazu dojde k instalaci jádra do adresáře /boot/ včetně vytvoření souborů Modules.dep a System.map a zavedení do zavaděče.
URL:http://wiki.ubuntu.cz/Kompilace kernelu#Instalace_j.2BAOE-dra
URL:http://www.digitalhermit.com/linux/Kernel-Build-HOWTO.html#MAKE-DEP-CLEAN
Instalace závislostí
URL:http://www.digitalhermit.com/linux/Kernel-Build-HOWTO.html#INSTALLATION
Kopírování jádra a vytvoření System.map
URL:http://www.digitalhermit.com/linux/Kernel-Build-HOWTO.html#GRUB-CONFIGURATION
Konfigurace zavaděce GrUB
URL:http://www.digitalhermit.com/linux/Kernel-Build-HOWTO.html#LILO-CONFIGURATION
Konfigurace zavaděce LiLO
Jedná se o soubor, které je umístěný v adresáři /boot/. Tento soubor definuje vztah symbolických identifikátorů a jejich adres v paměti.
Jelikož se při každé kompilaci kernelu může změnit adresa identifikátorů v paměti, je soubor generován po každé kompilaci.
Samotný System.map je pouze odkazem, který odkazuje na soubor aktuální verze jádra, například System.map-2.6.29.1
URL:http://en.wikipedia.org/wiki/System.map
Soubor se seznamem závislostí jednotlivých modulů. Soubor je uložen v adresáři /lib/modules/verze/ a obsahuje závislosti modulů ze stejného adresáře.
Ubuntu. Kompilace kernelu[online]. 20 Březen 2009 [cit. 2009-04-10]. Dostupný z: http://wiki.ubuntu.cz/Kompilace%20kernelu
DigitalHermit. Kernel Rebuild Guide[online]. 15 December 2003 [cit. 2009-04-10]. Dostupný z: http://www.digitalhermit.com/linux/Kernel-Build-HOWTO.html
Kernel.org. The Linux Kernel Archives OpenPGP Signature [online]. 10 October 2000 [cit. 2009-04-10]. Dostupný z: http://www.kernel.org/signature.html
Kernel.org. The Linux Kernel Archives[online]. 31 December 2008 [cit. 2009-04-10]. Dostupný z: http://www.kernel.org/signature.html
Wikipedia. System.map[online]. 6 August 2008 [cit. 2009-04-10]. Dostupný z: http://en.wikipedia.org/wiki/System.map
Wikipedia. Initrd[online]. 6 March 2009 [cit. 2009-04-10]. Dostupný z: http://en.wikipedia.org/wiki/Initrd
Andrews, Jeremy. Návod k ugradu na kernel 2.6[online]. 15 Září 2003 [cit. 2009-04-10]. Dostupný z: http://www.abclinuxu.cz/clanky/navody/navod-k-upgradu-na-kernel-2.6
Russell, Rusty. Modules.dep - List of module dependencies[online]. 2002 [cit. 2009-04-10]. Dpstupný z: http://linux.die.net/man/5/modules.dep