Linux napsal Linus Torvalds v roce 1991, jako klon operačního systému UNIX, který uvolnil pod licencí GNU GPL. Dnes se na vývoji podílí vývojáři a firmy z celého světa. Pro vývoj se používá git, který napsal Linus pro potřeby vývoje jádra. Seznam uložišť linuxových projektů lze nalézt na adrese http://git.kernel.org/ .
Linux byl původně určen pro 32bitovou x86 architekturu. Dnes však již běží i na mnoha dalších Compaq Alpha AXP, Sun SPARC a UltraSPARC, Motorola 68000, PowerPC, PowerPC64, ARM, Hitachi SuperH, Cell, IBM S/390, MIPS, HP PA-RISC, Intel IA-64, DEC VAX, AMD x86-64, AXIS CRIS, Xtensa, AVR32 a Renesas M32R
Linux může běžet i sám pod sebou jako proces v uživatelském prostoru - User Mode Linux.
Pro jednotlivé verze se používá číslování ve formátu:
Jaderné moduly umožňují vkládat kód do jádra za běhu systému. Obvykle se používají pro ovladače zařízení, filesystému a pro přidávání systémových volání. Bez použití modulů by každá změna znamenala rekompilaci celého jádra, zatímco s moduly stačí překompilovat a nahrát modul do jádra a to i bez toho aniž bychom měli kompletní zdrojové kódy aktuálně běžícího jádra.
Pro práci s moduly používáme utility z balíku module-init-tools
modprobe - pro manipulaci s moduly lsmod - pro výpis nahraných modulů
Jádro i moduly umožňují zadat parametry při startu, resp. při nahrání modulu. Některé z parametrů:
acpi=off - zakáže používání ACPI console=ttyS0 - použije sériový port jako konzoli debug - povolí ladící režim jádra init=/bin/bash - umožní specifikovat jiný než std. init ...Více informací se nachází v
Documentation/kernel-parameters.txt
Zdrojové kódy jádra se dájí stáhnout buď přímo ze stránek http://www.kernel.org/ nebo v rámci zdrojových balíčků distribuce.
Součástí zdrojových kódů je i rozsáhlá dokumentace - přehledný restřík dokumentace je
v souboru Documentation/00-INDEX
Pro instalaci konkrétní verze můžeme použít buď přímo balík se zdrojovými soubory dané verze nebo aplikovat záplaty zvyšující verzi na zdrojové soubory předchozí verze.
Pro stabilní verze je potřeba postupně aplikovat všechny záplaty zvyšující verzi o 1. Pro verzi s opravami (2.6.x.y) obsahují záplaty kompletní změny a aplikují se přímo na stabilní verzi.
Příklad: mějme jádro linux-2.6.27.tar.bz2 a chceme jádro verze 2.6.28.7
$ tar xfvj linux-2.6.27.tar.bz2
$ cd linux-2.6.27 $ bzip2 -dc ../patch-2.6.28.bz2 | patch -p1
$ bzip2 -dc ../patch-2.6.28.7.bz2 | patch -p1
$ make kernelversion 2.6.28.7
Konfigurace jádra je uložena v souboru .config. Pro jeho vygenerování můžeme použijeme
jeden z *config parametrů jádra. Jaké nám Makefile nabízí možnosti zjistíme pomocí
make help
Některé z nich:
$ make config - čistě textové rozhraní $ make menuconfig - ncurses $ make xconfig - QT rozhraní $ make allyesconfig - na všechny odpovědi odpoví yes $ make allnoconfig - odpoví naopak noPokud máme .config z předchozí verze, použijme
make oldconfig
, který se zeptá pouze na nové možnosti, které nejsou v původním .config
Některé informace o hardwaru počítače se dá zjistit pomocí přikazů:
$ cat /proc/cpuinfo - informace o procesoru $ dmesg - informace které vypisuje jádro při startu a běhu $ lspci - vypíše PCI zařízenía další
Minimální požadavky pro kompilaci a provozování jádra najdeme jsou uvedené v
Documentation/Changes
.
Pro kompilaci jádra použijeme:
$ make - vytvoříme komprimovaný obraz jádra a moduly # make install - jádro nainstalujemePokud máme jádro používající moduly použijeme
# make modules_installPoužitím parametru
-O=vystupni/adresar
můžeme určit jiný výstupní
adresář pro zkompilované soubory.
Při každé kompilaci jádra se vytváří i tabulka symbolů, která je uložena v souboru
System.map
. Po instalaci jádra se obvykle nacházi v
/boot/System.map-$(uname -r)
.
Používá se pro ladění stavů jádra kernel panic. Pokud použijeme
při konfiguraci volbu CONFIG_KALLSYMS
, pak jádro umí překládat adresy
na symboly samo.