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í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 ================= ...
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://ftp.penguin.cz/pub/users/utx/build/.
Zdrojové kódy lze získat z Internetu. Hlavními archivy jsou:
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.
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