Vmlinux

Soubor vmlinux je staticky linkovaný spustitelný soubor obsahující jádro Linuxu v jednom z objektových formátů podporovaných na Linuxu (tedy obvykle ELF, COFF nebo a.out). Samotný je využitelný pro ladění nebo pro vytváření tabulky symbolů, ale aby jej bylo možné nabootovat jako jádro operačního systému, musí být doplněn o patřičný bootovací sektor.

Dějiny jména a umístění

Původně se obraz jádra pro spuštění na unixových systémech nazýval unix a byl v kořenovém adresáři. Když začala být nasazována jádra pracující s virtuální pamětí, začala využívat předponu vm- pro odlišení od jader, která virtuální paměť nepodporovala. Linux začal používat vmlinux a posléze i pozměněné vmlinuz, které označovala využití komprimace (zpočátku typicky formátem gzip).

Zároveň se kvůli omezením architektury IA-32 stalo běžným umisťovat bootovatelný obraz jádra do adresáře /boot. To bylo proto, že BIOSy architektury i386 uměly načítat zavaděč (LILO, SYSLINUX, GRUB) a jeho součásti pouze z prvních 1024 cylindrů pevného disku. Dostupný způsob, jak vynutit umístění souboru s jádrem na jeden z těchto cylindrů, bylo umístit jej na malý diskový oddíl, který byl jenom na těchto cylindrech. A ten začal být zvykově připojován jako /boot. Což později přijal standard FHS jako jedno z možných umístění.

Komprimace

Původně bylo možné obraz jádra komprimovat algoritmem gzipu, ale od jádra 2.6.30 přibyly možnosti komprimace algoritmy LZMA a bzip2. Ty mají výhodu úsporného dekomprimačního kódu. Ještě později přibyla podpora pro algoritmy LZO, xz a LZ4.

bzImage

Princip vytváření bzImage

Jak se jádro postupně zvětšovalo, samotná jeho komprimace přestávala stačit.

Jako další krok byl vymyšlen bzImage, což je zkratka Big zImage, tedy doslova velký zImage. Název tedy nic společného s konkrétní komprimační metodou bzip2, jak by se mohlo zdát. Jeho podstatným prvkem je vyjmutí tabulky symbolů do samostatného souboru System.map. Obraz bez symbolů je poté komprimován (historicky obvykle gzipem, ale později přibyla podpora dalších formátů (viz výše)).

Reference

V tomto článku byl použit překlad textu z článku vmlinux na anglické Wikipedii.

Média použitá na této stránce