Distribuce, nebo kniha o Linuxu?
Na začátku stál roku 1998 Gerard Beekmans. Gerhard nebyl spokojen se žádnou z tehdy nabízených distribucí, a rozhodl se proto vytvořit si vlastní systém ze zdrojových textů za pomoci již existující linuxové instalace. Tento nový systém nazval příhodně Linux From Scratch a své zkušenosti s ním shrnul v linuxovém HOWTO dokumentu. Neméně důležitým záměrem k jeho sepsání bylo dát uživateli možnost porozumět vnitřnímu fungování Linuxu. Popularita projektu rychle vzrůstala a z HOWTO se za pomoci komunity vývojářů stala elektronická kniha, kterou lze na webu projektu nalézt ve verzi 6.0; hlavní idea, didaktický charakter a otevřená licence nadále zůstávají. LFS je tedy skutečnou metadistribucí, protože výsledkem práce týmu okolo projektu LFS není několik CD nabitých balíčky jednotlivých programů, ale dokument podrobně popisující instalaci základního Linuxového systému. Svým charakterem metadistribuce má LFS blízko k mladšímu projektu Gentoo, kde však u Gentoo stojí portage s ebuildy a emerge, nastupuje u LFS kniha a klávesnice.
Proč chtít LFS?
Již z prvního odstavce je jistě zřejmé, že nainstalovat LFS asi nebude úplně snadné. Proč tedy nesáhnout po binární distribuci a probdít několik nocí nad ruční kompilací? Kniha uvádí důvodů hned několik:
- naučit se, jak v Linuxu a GNU systému věci fungují,
- získat více kontroly nad systémem bez spoléhání se na nastavení někoho jiného (odtud i podtitul distribuce – „Your Distro. Your Rules.“)
- možnost sestavit velice malý linuxový systém (menší než 100 MB),
- bezpečnost získaná vlastnoručním aplikováním patchů na zdrojové kódy.
První dva důvody budou asi pro většinu lidí tím, proč se pro LFS rozhodnou. Jedno je však jisté – LFS není správná volba pro někoho, kdo ještě nikdy s Linuxem či Unixovým systémem nepracoval, nebo pro začátečníka, který neumí pracovat se základními příkazy typu ls, cp, mv, či který se domnívá, že M4 je zpravodajská agentura a mount /dev/hda himalájská osmitisícovka. Problémem pro některé uživatele by také mohl být fakt, že dosud neexistuje český překlad knihy. Zbudování LFS je poměrně náročné a nezdar na první pokus proto není výjimkou.
Před instalací
LFS verze 6.0 je založeno na gcc-3.4.1, glibc-2.3.4–20040701, binutils-2.15.91.0.2 a kernelu 2.6.8.1. Libovolný balíček v LFS lze samozřejmě nahradit verzí novější, ovšem za podmínky, že víte, co děláte. Alespoň napoprvé je vhodné držet se hesla fbbg – „Follow Book, Book Good.“. Ačkoli hlavní ideou LFS je tvorba systému „dle svého“, drží se kniha v hlavních částech linuxových standardů, a to např. Filesystem Hierarchy Standard či The Linux Standard Base a jako init systém nabízí Sysvinit, takže i bez velkého přemýšlení lze získat standardně použitelný linuxový systém.
LFS může zkušený uživatel na rychlém počítači sestavit za půl dne, ovšem horní hranice je neomezená – záleží na rychlosti stroje a vaší trpělivosti. Pokud se rozhodnete gcc-3.4.1 nahradit verzí 2.95.x, může se kompilace urychlit, neboť gcc-2.95.x pracuje o kousek rychleji než řada 3. Kniha u každého balíčku uvádí dobu potřebnou k jeho překladu, a to v poměrných jednotkách SBU – Static Binutils Unit – které jsou podílem dob potřebných k překladu aktuálního balíčku a prvního balíčku, kterým je binutils. U většiny balíčků jsou k dispozici poinstalační testy, které kontrolují správnost překladu, a kniha je v mnoha případech doporučuje provádět. Tyto testy však často trvají mnohonásobně déle než samotný překlad, proto pro uživatele s pomalejšími stroji stojí za to zvážit, zda je spouštět či ne.
Před vlastní instalací je také vhodné se rozhodnout pro některou z gcc optimalizací. Nejjednodušší pro optimalizaci rychlosti by mohlo být nastavit před začátkem instalace proměnné CFLAGS resp. CXXFLAGS, např. v bashi takto:
export CFLAGS="-O3 -march=<architektura>" export CXXFLAGS=$CFLAGS
kde „<architektura>“ může být například „athlon-xp“ či „pentium4“. K volbě „-O3“ je však třeba přistupovat opatrně, protože cenou za marginální zvýšení rychlosti výsledné binárky může být podstatné zvýšení její velikosti a nestabilita –„-O2“ je proto mnohdy lepší volbou. Nejlepší je samozřejmě konzultovat dokumentaci gcc a vybrat správně řešení na míru.
Instalace LFS
Ke zbudování LFS ve verzi 6.0 je zapotřebí alespoň 1.3GB partition, linuxová distribuce s jádrem minimálně 2.6.2 zkompilovaným gcc-3.0 či vyšším, zdrojové kódy programů, patche a moře volného času. Balíčků je v LFS přes padesát a lze je stáhnout jednotlivě z jejich oficiálních webů, získat jako jeden tarball (~ 133 MB), nebo na LFS LiveCD (~ 332 MB). Live CD je určeno pro instalaci LFS bez nutnosti instalace jiné distribuce na disk a je založeno jak jinak než na LFS. Kromě balíčků obsahuje LFS knihu, X Window System a Firefox pro její pohodlné čtení. Instalace systému probíhá ve čtyřech krocích:
- Vytvoření dočasného miniLFS. Ten se vytváří v chrootu z pomocné linuxového systému. LFS tedy neřeší problém slepice a vejce a nové gcc kompiluje kompilátorem z pomocné distribuce. Vytvořením miniLFS a jeho následným použitím k instalaci opravdového LFS systému se vyhneme závislostem – ve smyslu sdílených knihoven apod. – na pomocné distribuci. Autoři LFS uvádějí, že v knize popsaný postup tvorby dočasného minisystému není ideální, o to však je didaktičtější.
- Tvorba samotného LFS systému, nyní již za pomoci nástrojů z dočasného miniLFS. Pro ukrácení dlouhé chvíle při kompilování si lze v knize přečíst popis všech výsledných binárních programů, které právě kompilovaný balíček poskytuje.
- Příprava bootovacích skriptů a poladění konfiguračních souborů v adresáři /etc.
- Posledním krokem je kompilace vlastního jádra a nakonec zajištění bootovatelnosti systému, k čemuž kniha používá zavadeč GRUB.
Hotovo. Nyní zbývá již jen nabootovat do zbrusu nového LFS systému.
Mám bash prompt. Co dál?
LFS neobsahuje žádné uživatelské programy, pouze základní systém potřebný pro nabootování počítače do shellu a kompilaci. Pro studijní účely to možná postačuje, ale k tomu, aby byl nový systém použitelný, ať už jako server, či desktop, je nutno vyvinout ještě další úsilí. Toto usilí se pokouší zmírnit jiná část projektu LFS, pro změnu opět kniha – Beyond LFS, jejímž autorem je Larry Lawrence. BLFS obsahuje popisy instalací všeho od nejrůznějších utilit a knihoven přes Postfix a TeX po KDE či Gnome. Najdeme zde vše, co bychom očekávali v „plnohodnotné“distribuci. V BLFS je již didaktická stránka věci notně potlačena a popis instalací se redukuje na výčet závislostí, doby překladu a příkazů k němu potřebných. Dalšími podprojekty LFS jsou Automated LFS, který se, na první pohled poněkud paradoxně, snaží o automatizaci instalačního procesu, a Hardened LFS, jenž se zaměřuje na zlepšení bezpečnostních nastavení a zvýšení bezpečnosti v LFS vůbec. Dále je na webu LFS udržována sbírka krátkých HOWTO dokumentů nazývaných Hints a obsahujících návody na instalaci těch programů, které v knihách nejsou, či návody na alternativní instalační metody. Ačkoli kvalita těchto dokumentů, sepsaných přímo uživateli, značně kolísá, neměly by uniknout pozornosti nikoho, kdo to s užíváním LFS myslí vážně.
Co lze od LFS očekávat?
Od LFS lze na 100 % očekávát dlouhé hodiny strávené kompilováním, googlováním chybových hlášení gcc a dalším kompilováním – nějaký ten vlas určitě zešediví. To by však nemělo nikoho odradit, protože pocit z vlastnoručně sestaveného a na míru optimalizovaného systému za to stojí. Jestli bude LFS i přínosem k hlubšímu pochopení toho, jak Linux funguje, záleží již na osobním přístupu. Zkopírováním příkazů z knihy do konzole zvládne nainstalovat LFS „kdekdo“, ještě to ale neznamená, že ví, co příkazy znamenají. Pokud by někdo přes veškerou snahu nemohl odolat použití copy&paste na úplně každý příkaz v knize, může si na webu LFS objednat tištěný výtisk knihy. Bude nucen všechno poctivě naťukat a ještě tak přispěje na další vývoj projektu.