UTX: Postavte si GNU-Linux / UTX's build own GNU-Linux


Tato stránka je zastaralá a obsahuje neplatné informace. Přejděte na OSBuilder.

English version

Postavte si GNU-Linux! To je výzva všem, kteří chtějí proniknout do tajů GNU-Linuxu a chtějí mít vše pod kontrolou.

Projekt obsahuje množství užitečných nástrojů, záplat atd., jejichž pomocí si lze postavit kompletní prostředí GNU-Linuxu pouze ze zdrojových kódů.

Postavit si vlastní GNU-Linux neznamená úsporu času (alespoň v první fázi) ani peněz, ale na druhou stranu si lze vše přizpůsobit pro svůj systém a požadavky - např. současné ix86 distribuce se připravují pro i486 a vyšší, ale my si můžeme dovolit kompilovat pouze pro i686. Můžeme též povolit speciální volby, knihovny, funkce atd.

Zatím je dokumentace projektu nekompletní, zejména konfigurační soubory jsou často převzaté a nekonzistentní.

Projekt je, a vždy bude nedokončený, neboť každá nová verze čehokoliv může změnit situaci.

Novinky

Je k dispozici prerelease build-0.0.tar.gz a build-data-20000517.tar.gz.

Je zde nový pkgshell, kompilátor balíků nabízející příkazy, zatím bez dokumentace, v alfa verzi.

Je zde autoadm, který provádí automatickou administraci některých souborů.

Pravidla konstrukce

Principy

Základním principem tohoto systému je kompletní postavení ze zdrojových kódů. Systém je tak optimalizován na naše požadavky, konfiguraci systému, procesoru, atd. Navíc se dozvíme mnoho o vnitřní konstrukci a propojení.

Snahou bylo postavit GNU-Linux na nejnovějších základních programech (linux-2.3, GNU libc-2.1.1, egcs-1.1.2, důsledný multithreading). Tím vznikly některé problémy při kompilaci. Některé z nich posílám autorům, jiné pak zařazuji jako záplaty.

Dalším pravidlem je upřednostňování dynamických knihoven před statickými všude, kde to má nějaký smysl. To přináší některé drobné komplikace při autokonfiguraci (viz dále). Dynamické knihovny jsou sice pomalejší, ale na druhou stranu šetří pracovní paměť i místo na disku, protože je může sdílet více aplikací. To je vhodné zejména u obrovských knihoven grafických nadstaveb, ale i u specializovaných, řídce volaných knihoven pro určité funkce.

Každý systém musí zajistit konzistenci cest pro jednotlivé programy. Je několik možností: Konfigurace zdrojového kódu, konfigurační soubory nebo symbolické odkazy (používáno v tomto pořadí).

Prefixy

Zde je dána volba na uživateli. Vhodná volba systém zpřehlední a usnadní zálohování.
Cílem je, aby:
<root> (prázdný prefix) obsahoval soubory nutné ke startu systému, základní komunikaci a rozbalení záloh.
/usr byl hlavním prefixem, platným pro většinu balíků.
/usr/X11R6 byl prefixem balíků, které vyžadují X.
/usr/local byl prefix pro soubory konkrétního počítače. Při práci zastíní soubory z jiných prefixů.
/usr/{balík} byl prefixem pro rozsáhlé balíky programů (gtk, gnome, netpbm...).
/usr/games byl prefixem pro hry (skoro prázdný ;-)

Rozložení souborů

Další otázkou je rozložení souborů. Zde se držím co nejvíce GNU konvencí. Některé jsou bez vyznačení prefixu (z důvodu přehlednosti). Pokud program instaluje mnoho souborů, je vhodné, aby tam, kde se nepoužívají prefixy, byly buď v samostatném adresáři, nebo začínaly jménem balíku, ke kterému patří (samozřejmě kromě /tmp). Systém je sice navržen jako jednoplatformní, ale nevelkými změnami lze dosáhnout i sdílení souborů mezi různými platformami.
Cílem je, aby:
/etc (bez prefixu) obsahoval konfigurační soubory a nebyl měněn samotnými programy
bin obsahoval spustitelná data pro běžného uživatele
sbin obsahoval spustitelná data pro superuživatele
man obsahoval manuálová stránky
info obsahoval .info stránky
lib obsahoval knihovny
libexec obsahoval pomocné spustitelné soubory
/usr/doc (bez prefixu) obsahoval dokumentaci
include obsahoval include soubory pro kompilátor
share nebyl měněn kromě instalace
/var (bez prefixu) sloužil k trvalému ukládání proměnných dat
/usr/src (bez prefixu) obsahoval zdrojové soubory
/tmp (bez prefixu) sloužil k ukládání dočasných dat

Zdroje

Zdrojové kódy lze získat z Internetu. Hlavními archivy jsou: Vše potřebné mám též doma na svém pevném disku. Sešlo-li by se dost zájemců o data, začnu uvažovat o koupi CD-vypalovačky.

GNU configure

Mnoho programů používá tento balík na nastavení konfigurace systému. Je to systém velmi pružný, ale některé vlastnosti našeho systému nemusí rozpoznat korektně. Je proto potřeba sledovat co configure vypisuje. Časem již snadno poznáme, že něco není v pořádku (není nalezena standardní funkce, knihovna ap.). Pak je třeba určitého úsilí při nalezení chyby. Nejčastěji to bývá:

Místo na disku

Zdrojové soubory zaujímají mnoho místa na disku. Většinou je po úspěšné instalaci můžete smazat. Jedinou výjimkou jsou zdrojové kódy jádra - zde je nutné si uschovat z nich alespoň include, a glibc (pouze chcete-li trasovat i v něm).

Výhodné je, umožňuje-li to balík, kompilovat v odděleném adresáři. Po instalaci smažeme pracovní soubory, ale nahlížet do zdrojových kódů a trasovat můžeme.

Další úsporou je komprese. Na info (po nastavení v site-startu) a man (s upraveným makewhatis) soubory, zdrojové kódy je výhodný pomalý, ale účinný bzip2; na znakové sady, příp. za běhu dekomprimované spustitelné soubory je lepší méně účinný, ale mnohonásobně rychlejší gzip. Máte-li dost místa na disku, pak info a man soubory není třeba komprimovat.

Pro ty největší projekty (XFree86, GNU libc) počítejte nejméně s 200MB volného místa na disku pro kompilaci.

Čelíme křížovým závislostem

Objeví se brzy...

Základní systém

Následující výčet si neklade za cíl úplnost.

Základní balíky, nutné pro regeneraci (kompilaci sama sebe) systému:
egcs (gcc)
binutils
nějaký Bourne shell kompatibilní program (bash)
termcap nebo ncurses (pro more, less)
make
fetish (fileutils, textutils, sh-utils)
sed
diffutils a patch (cmp je téměř nutný, ostatní velmi vhodné)

Balíky, nutné (nebo vysoce žádoucí) pro start systému:
sysvinit (pokud nechcete používat zastaralý simpleinit)
update (u nových Linuxů - 2.2, 2.3 je již update zbytečný, funkci převzalo jádro - kflushd)
ldconfig (samostatný nebo z ld.so)
shadow (pokud nechcete používat zastaralý systém hesel)
util-linux
e2fsprogs
modutils (používáte-li nějaké moduly)
psmisc, procps (psmisc nutný pro zastavení systému, ostatní pro statistiku)

Balíky, nutné (nebo vysoce žádoucí) pro základní administraci:
inetutils a net-tools (chcete-li podporu sítě)
gzip nebo bzip2 (chcete-li kompresi)
tar (chcete-li rozbalovat archivy)
less (náhrada za more)
libovolný editor (např. klon vi)


Rozšířené vývojové prostředí, potřebné pro kompilaci některých balíků, X, apod.:
m4
automake, autoconf, libtool
bison
lex
findutils
texinfo (pro formátování dokumentace)
perl (není potřeba k téměř žádné instalaci, ale mnoho skriptů jej využívá)
tcl/tk (není potřeba k téměř žádné instalaci, ale mnoho skriptů jej využívá, křížová závislost při stavbě X)


Základní rozšíření uživatelského systému:
readline
zlib
emacs

Balíky, nutné pro nastavení určitého hardwaru:
scanpci
isapnptools
hdparm
scsifmt
mtools
setserial

Historická kompatibilita

Při práci na systému se ukázalo, že mnoho programů netestuje umístění a funkci své podpory, ale používá absolutních cest a jmen. Zejména je třeba dávat pozor na: