Zdrojový kód jádra operačního systému Linux lze získat z oficiálního archivu http://www.kernel.org/ (FTP). Je však silně doporučeno použít lokální mirror. Balíček se zdrojovým kódem jádra je taktéž obsažen v mnoha distribucích.
Stáhnout je možné celý kernel nebo jen inkrementální patch, případně patche opravující chyby. K dispozici jsou také historie změn (Changelog).
Verze jádra se skládá ze tří čísel (většinou) oddělených tečkou (např.
2.6.5
). První číslo uvádí generaci jádra, druhé číslo
vývojovou řadu. Ty obvykle bývají dvě — stabilní (sudé číslo) a vývojová
(liché číslo). Poslední číslo udává pořadí vydání. V současné době je poslední
stabilní verze 2.6.8.1. Dále se objevují přípony jako -preN,
-rcN a -mmN značící skoro hotovou verzi, respektive
vývojovou větvi.
Pro úspěšný překlad a fungování jádra je potřeba mnoho pomocných programů. Především gcc, make, binutils, util-linux, module-init-tools… Také záleží na jejich verzi (viz Documentation/Changes). Podle použitého konfiguračního nástroje může být vyžadována knihovna ncurser nebo Xlib.
Získaný balíček zdrojového kódu rozbalíme do adresáře /usr/src, pracovní adresář změníme na právě vzniklý ./linux-X.Y.Z. Nyní můžeme aplikovat případné patche ve správném pořadí (např. při přechodu na vyšší verzi jádra nebo přidání funkcionality, která není ve vanilla jádře). Nakonec je vhodné se ujistit, že časy modifikace všech souboru jsou nastaveny v minulosti.
Konfiguraci jádra lze provézt jedním z následujících příkazů:
make config
— program klade otázkymake oldconfig
— program se ptá jen na nové volby
oproti minulé konfiguracimake menuconfig
— textové dialogové rozhraní knihovny ncursesmake xconfig
— grafické dialogové klikací rozhraní
(vyžaduje X server)Konfigurační program se nejprve pokusí získat stávající konfiguraci z právě běžícího kernelu, poté z konfiguračního souboru .config a na konec přednastaví defaultní konfiguraci. Uživatel tak nemusí vyplňovat při každé konfiguraci to samé nastavení. Při opuštění konfigurace je nové nastavení uloženo do souboru .config.
S vývojem hardwaru a jádra přibývají konfigurační volby a jejich umístění v nabídce menuconfigu se mění. Přehled základních voleb:
Zběžné vysvětlení k jednotlivým volbám nabízí konfigurátor, podrobnosti lze nalézt v dokumentaci kernelu v adresáři Documentation.
Linuxové jádro je modulární. Některé funkce jádra mohou být staticky zakompilovány do jádra nebo ponechány jako samostatné jaderné moduly (LKMs), které lze za běhu nahrávat do paměti kernelu nebo odebírat.
Každý jaderný modul nese seznam poskytovaných a požadovaných symbolů, verzi
jádra, autora, název licence, seznam parametrů. Po přeložení a instalaci
modulů a jádra je nutné vygenerovat tabulku závislostí modulů (příkaz
depmod
). Modul lze zavést na vyžádání (modprobe
modul
) či jej uvolnit (rmmod modul
).
Seznam zavedených modulů zjistí příkaz lsmod
. Pro automatické
zavádění modulů je potřeba nastavit provázání blokových a znakových zařízení
se správnými moduly (soubor /etc/modprobe.conf). Dále je nutné říci
kernelu, kterým programem se moduly zavádí (echo "/sbin/modprobe" >
/proc/sys/kernel/modprobe
). Otevře-li pak nějaký proces zařízení
/dev/ttyACM0, kernel zavolá program /sbin/modprobe, který
prohledá soubor /etc/modprobe.conf. Ten najde řádek alias
char-major-167 cdc-acm
a zavede modul cdc-acm. Tento modul
prohledá USB sběrnici a nalezne-li zařízení patřící do USB třídy ACM,
zaregistruje zařízení s major číslem 167 a propojí jej s USB zařízením.
Parametry modulu lze zadat na příkazovém řádku nebo uvést do souboru
/etc/modprobe.conf.
Překlad jádra je kompletně řízen programem make. Požadujeme-li
přeložení všech částí jádra od začátku, odstraníme staré objektové a dočasné
soubory příkazem make clean
. Samoutnou kompilaci v případě jádra
řady 2.6 zahájíme příkazem make
(pro řadu 2.4 spustíme make
dep && make bzImage && make modules
. Kompilace může trvat
od několika minut až po několik hodin (záleží na zvolené konfiguraci, verzi
jádra a výkonu počítače).
Po úspěšném překladu nainstalujeme moduly jádra do adresáře
/lib/modules/X.Y.Z
příkazem make modules_install
.
Jádro překopírujeme z arch/i386/boot/bzImage
do adresáře, kde jej
předpokládá náš zavaděč operačního systému (např. /boot
), dále
zkopírujeme tabulku exportovaných symbolů jádra System.map
a na
konec aktualizujeme nastavení zavaděče OS (např. LILO, Grub, syslinux, loadlin).
Chování jádra lze ovlivnit pomocí parametrů, které se zadávají při nahrání
modulu nebo před bootem. Oddělují se bílými znaky a většinou jsou tvaru
nazev=hodnota
. Například root=/dev/hda1 rw
init=/bin/bash ether=0,0,0,1,eth0
znamená: kořenový souborový systém se
nachází na /dev/hda1, bude připojen pro zápis, standardní init bude
nahrazen programem /bin/bash a první síťová karta bude používat
externí tranciever. Podrobný seznam lze najít v
Documentation/kernel-parameters.txt.