OSBuilder: Postavte si GNU-Linux

English version

Postavte si GNU-Linux! To je výzva všem, kteří chtějí proniknout do tajů tvorby operačního systému a chtějí mít vše pod svou 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 ani peněz, ale na druhou stranu si lze vše přizpůsobit na míru - např. programy lze kompilovat s optimalizací pro svůj procesor, můžeme 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.

Cíl projektu

Cílem projektu je připravit konzistentní prostředí pro dynamickou tvorbu operačního systému, distribuce či firmwaru.

Systém by měl být volitelně vybavitelný různými programy či vývojovými větvemi programu. Stavba by měla maximálně odpovídat specifikaci Filesystem Hierrarchy Standard.

Hlavní součástí je program pkgsh - package compiling shell, jehož cílem je pomoci snadné kompilaci. Umí vyhledat poslední verzi, zjistit postup záplatování, způsob kompilace atd. Následuje ukázka:

nice pkgsh libtool

Pkgsh 0.05
=================
Return means run suggested command, h to help, shell fallback ===
*******************************************
*** Processing local site configuration ***
***       production debug mode         ***
*******************************************
loading GNU-FHS site script
=================
Package set to: libtool
Latest version found: 1.4
Seems to be upgrade 1.3.5 -> 1.4
=== phase unpack[0] === suggested by unp ===
=== suggested ===
cd /usr/src
bzcat /vol/cdrom/GNU/libtool/libtool-1.3.4.tar.bz2 >/tmp/pkgshdelta5995
echo "Applying delta /vol/cdrom/GNU/libtool/libtool-1.3.4-1.3.5.tar.xdp.gz"
xdelta patch -0 /vol/cdrom/GNU/libtool/libtool-1.3.4-1.3.5.tar.xdp.gz /tmp/pkgshdelta5995 /tmp/pkgshdelta__5995
mv /tmp/pkgshdelta__5995 /tmp/pkgshdelta5995
echo "Applying delta /vol/cdrom/GNU/libtool/libtool-1.3.5-1.4.tar.xdp.gz"
xdelta patch -0 /vol/cdrom/GNU/libtool/libtool-1.3.5-1.4.tar.xdp.gz /tmp/pkgshdelta5995 /tmp/pkgshdelta__5995
mv /tmp/pkgshdelta__5995 /tmp/pkgshdelta5995
tar -x -f /tmp/pkgshdelta5995
rm /tmp/pkgshdelta5995
cdfirst $BASE$SEPVERSION libtool libtool*
=================
pkgsh@libtool:/etc/pkgsh> 
=================
pkgsh@libtool:/etc/pkgsh> 
Applying delta /vol/cdrom/GNU/libtool/libtool-1.3.4-1.3.5.tar.xdp.gz
xdelta: warning: expected compressed from file
Applying delta /vol/cdrom/GNU/libtool/libtool-1.3.5-1.4.tar.xdp.gz
xdelta: warning: expected compressed from file
Recommended use GNU configure in separate build dir.
=== phase conf[0] === suggested by cs ===
=== suggested ===
mkdir -p /var/src/libtool-1.4
cd /var/src/libtool-1.4
 /usr/src/libtool-1.4/configure 
=================
pkgsh@libtool:/usr/src/libtool-1.4> 
loading site script /etc/config.site
...
=== phase make[0] ===
=== suggested ===
make
=================
...

Součásti

Dostupnost

Balík s názvem osbuilder bude konečnou verzí balíku build, jenž je již dostupný a má podobnou funkčnost. Dokumentace je velmi chudá.

Vše je dostupné na adrese http://www.penguin.cz/~utx/ftp/build/.

Obecné informace

Zdroje zdrojových kódů

Zdrojové kódy lze získat z Internetu. Hlavními archivy jsou:

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. Je jen málo výjimek (zdrojové kódy jádra).

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 (nebo nikdy |:-)

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:
gcc (egcs)
binutils
nějaký Bourne shell kompatibilní program (bash)
termcap nebo ncurses (pro more, less)
make
fetish (fileutils, textutils, sh-utils)
sed a grep
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 jednoduchý simpleinit)
update (pouze u linuxu 2.0, nyní funkci převzalo jádro)
ldconfig (from glibc, samostatný nebo z ld.so)
shadow (pokud nechcete používat zastaralý systém hesel)
util-linux
e2fsprogs nebo reiserfsprogs
modutils (používáte-li modulární jádro)
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 úplnou kompilaci:
bin86 (pro jádra ix86)
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 nebo vim

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


Připomínky posílejte na: Stanislav Brabec

Na hlavní stránku Penguin's UTX WWW

Penguin server