Typowa dystrybucja Linuksa zawiera jądro Linuksa, narzędzia i
biblioteki GNU, dodatkowe oprogramowanie, dokumentacje i multimedia.
Większość zawartego w nich oprogramowania jest darmowa i jest
dostarczana zarówno w wersji skompilowanej jak i kodu źródłowego.
Użytkownicy Linuksa mogą modyfikować i kompilować orginalny kod
wedle uznania. Niektóre oprogramowanie zawarte w dystrybucji może
nie być dostępne w postaci kodu źródłowego
Nazwy dystrybucja zaczęto używać w kontekście zbioru oprogramowania stanowiącego osobną całość, możliwą do zainstalowania i uruchomienia na komputerze już za czasów wczesnych wersji Uniksa. Ewentualnie słowo dystrybucja używane było na określenie powiązanego ze sobą dużego pakietu oprogramowania, który był intslowany na jakiejś wersji Uniksa (np. dystrybucja Emacsa czy TeX-a). Wówczas nie bylo jeszcze ani Linuksa, ani Windowsa, czy też innych sysytemów, które są obecnie powszechnie używane.
Jak wszyscy wiemy, Linus Torvalds udostępnił wczesną werję swojego systemu w interniecie w 1991 roku i opublikował infomracje o tym na grupie comp.os.minix.
Początkowo sam system składał sie z basha, kompilatora gcc oraz jądra realizującego operacje wejścia/wyjścia. Czy juz wtedy można mówic o dystrybucji Linuksa? Sam Torvalds pisał o swoim projekcie jako o projekcie "systemu operacyjnego", nie zaś jak o "dystrybucji". Już w 1991 pojawiła się nazwa "pakiet Linuksa" (ang. Linux package), a potem nawet "dystrybucji Linuksa". Linuks początkowo wymagał do instalacji posiadania zainstalowanego Miniksa, bo nie posiadał samodzielnego instalatora.
Dystrybucje Linuksa określano wtedy od nazwy jądra np.".95 distribution". Potem dodano programy gdb, ldiff i coraz więcej narzędzi uniksowych udało sie przeportować na Linuksa. Wraz z pojawieniem sie możliwości uruchaminaia X Window, pojawiło się określenie Linux X Distribution albo też X11 Linux Distribution (dla odróżnienia zbioru programów, które zawierają system graficzny, i które go nie posiadają).
MCC Interim Linux
W lutym 1992 Manchester Computing Center wydał swoją własną dystrybucję o nazwie "MCC Interim Linux". Nie była ona jednak na tyle używana, aby w sieci można było znaleźć wiele informacji o jej budowie. MCC Interim Linux była przeznaczona dla małych maszyn 386-SX. Nie zawierała szerokej gamy pakietów. Miała służyć do kursów C i Uniksa.
Na jej podstawie budowano kolejne dystrybucje, takie jak MJ (Martin Junius) - wydana w lipcu 1992, czy Tamu (Texas A&M Univeristy) - wydana w tym samym czasie.
SLS
W sierpniu 1992 pojawiła sie dystrybucja Petera MacDonalds, "Softlanding Linux System" (SLS). Była to już naprawdę w pełni samodzielny zbiór skompilowanych pakietów. Można ją było zainstalować z dyskietek (10 na system podstawowy i 5 na X Window) wydając polecenie doinstall /dev/hda. Wśród pierwszych pakietów wyszczególniono gcc/g++, emacs, kermit, elm/mail/uucp, sc (arkusz kalkulacyjny), man pages, groff, elvis, zip/zoo/lh oraz menu. W skład aplikacji dyskietek X Window weszły: X, biblioteki programistyczne, czcionki 75 dpi, gry (spider, tetris, chess itd) oraz narzędzia takie jak xmag, xmenu, xcolormap i gwm. Pełna dystrybucja po zainstalowaniu mieściła się na 27MB. Dystrybucja ta zdobyła dużą popularność. Była używana przez większość osób, na których komputerach pracował Linux.
W kolejnych miesiącach zaczęły się pojawiać następne dystrybucje, nazywane głownie od ich autorów (wówczas pakietów było na tyle niewiele, że stworzenie własnej dystrybucji było względnie proste). Wreszcie przyszedł czas na pierwszą, która dotrwała do naszych czasów pod obecną nazwą. Patrick Volkerding 16 lipca 1993 oglosił powstanie nowej dystrybucji - Slackware, na bazie istniejącej od niemalże roku dystrybucji SLS.
Pakiety systemu podstawowego rozrosły się przez ten czas do 13 dyskietek, zaś na aplikacje X Window potrzeba było już 11.
W sierpniu 1993 powstaje Debian, którego autorem jest Ian Murdock. Dystrybucja ta została także zbudowana na podstawie SLS. Wśród założeń Debiana było między innymi to, że będzie zawierał najbardziej aktualne wersje oprogramowania.
Inna z popularnych obecnie dystrybucji - Red Hat - powstaje w czerwcu 1994 roku. Dystrybucja ta od początku była przedsięwzięciem komercyjnym.
Następnie powstają kolejne dystrybucje. Obecnie jest ich kilkaset.
Pomimo, że jest szeroki wybór dystrybucji i tak mamy problem z
wyborem tej najbardziej odpowiedniej dla nas. Często dystrybucje
zawierają niepotrzebne nam oprogramowanie, bądź nie zawierają
niezbędnych dla nas aplikacji. W celu rozwiązania tego problemu
powstał projekt Linux From scratch (Linux od zera). Linux From
Scratch (LFS) jest to projekt, który dostarcza instrukcje,
jak krok po kroku zbudować własnego Linuksa wyłącznie ze źródeł.
Autorem projektu jest Gerard Beekmans. Najnowsza wersja - 6.1.1
LFS - Linux From Scratch jest to główna książka, na bazie której powstały inne projekty.
BLFS - Beyond Linux From Scratch pomaga rozwinąć zaintalowanego LFS do bardziej użytecznego systemu. Jego priorytetem jest dopasowanie systemu do użytkownika. Projekt ten opisuje między innymi jak dodać do systemu graficzny interfejs, sieć, dźwięk, drukarkę itp.
ALFS - Automated Linux From Scratch dostarcza narzędzi do zarządzania budową LFS i BLFS.
HLFS - Hardened Linux From Scratch skupia się na budowie LFS z podwyższonym bezpieczeństwem
Hints - zawiera dokumentację wyjaśniającą jak rozwinąć LFS i BLFS, by zwiększyć ich możliwości.
LiveCD - jest to projekt, który dostarcza płytę CD będącą
podstawą do budowy LFS albo ogólniej jako płyta ratunkowa.
Budowanie LFS daje zwarty system
Przy instalowaniu tradycyjnej dystrybucji jesteśmy zwykle zmuszeni
do instalacji pewnych programów, choć prawdopodobnie nigdy ich nie
użyjemy. Zajmują one cenną przestrzeń na dysku lub co gorsza, mogą
obiążać procesor. Z łatwością można zbudować system LFS mniejszy niż
100MB. Czy to nadal za dużo? Można zainstalować system
wystarczająco duży dla serwera Apache o calkowitym rozmiarze około 8MB.
LFS jest bardziej dostosowany do naszych wymagań
Budowanie LFS można porównać do wykańczania domu. LFS daje na dom w
stanie surowym i tylko od nas zależy, w którym pokoju będzie
kuchnia, łazienka i jak będą rozmieszczone kable czy rury.
LFS daje dodatkowe bezpieczeństwo
Kompilując cały system z kodu źródłowego, możemy sprawdzić
wszystko i stosować wszystkie łatki, które uważamy za potrzebne. Nie
potrzebujemy czekać na kogoś, żeby skompilował pakiet binarny dla
naprawienia dziury w bezpieczeństwie.
Teraz, gdy mamy już pustą partycję, możemy założyć na niej system plików. Najczęściej używanym systemem plików w Linuksie jest ext2, ale jeśli chodzi o współczesne dyski wielkiej pojemności coraz większą popularność zdobywają systemy z tak zwanym dziennikowaniem (journaling).
Aby mieć dostęp do naszej partycji musimy ją zamontować.
Gdy juz mamy przygotowaną partycję ściągamy wszystkie potrzebne pakiety i łatki. Pełna lista znajduje sie pod adresem: http://www.tldp.org/LDP/lfs/html/chapter04/packages.html
Wszystkie programy kompilowane podczas budowy tymczasowego systemu instalujemy do $LFS/tools, aby oddzielić je od programów kompilowanych podczas budowy właściwego systemu. Te pierwsze są tylko tymczasowymi narzędziami i nie staną się częścią tworzonego systemu LFS. Trzymanie ich w oddzielnym katalogu ułatwi nam pózniej ich usunięcie.
Zaczynamy budowę tymczasowego systemu. Pierwszą rzeczą do zrobienia jest budowa zestawu narzędzi pierwszego przebiegu, złożonych z Binutils i GCC. Programy z tych pakietów zostaną zlinkowane statycznie, aby dało się je stosować niezależnie od systemu wejściowego. Nastepną rzeczą jest budowanie Glibc, czyli biblioteki C. Glibc zostanie skompilowana przy użyciu programów, które zbudowaliśmy w pierwszym przebiegu. Trzecią rzeczą jest budowa narzędzi w drugim przebiegu. Tym razem zestaw narzędzi zostanie zlinkowany dynamicznie. Pozostałe pakiety buduje się przy użyciu narzędzi drugiego przebiegu i linkuje sie dynamicznie. Po wykonaniu powyższego proces instalacji LFS nie będzie już zależał od dystrybucji wejściowej, z wyjątkiem działającego jeszcze jądra.
Dopiero teraz możemy zabrać się za budowę prawdziwego systemu LFS. Używamy programu chroot (change root - zmień katalog główny), by wejść do systemu wirtualnego środowiska i uruchomić nową powłokę, której katalogiem głównym będzie partycja LFS. To tak jakby zresetować komputer i polecić jądru systemu zamonotwać partycję jako główną (the root partition). Używamy rozkazu chroot zamiast klawisza reset, bo stworzenie bootowalnego systemu wymaga dodatkowej pracy, która w tym momencie nie jest niezbędna. Jednak główną zaletą tej czynności (chroot) jest to, że pozwala ona nadal używać wyjściowego systemu podczas budowania LFS.
Tworzymy standardowe drzewo katalogów. W środowisku chroot muszą być dostępne systemy plików proc oraz devpts, żeby pewne programy miały linki symboliczne. Aby użytkownik root mógł sie zalogować i być rozpoznawany jako root, muszą istnieć odpowiednie wpisy w plikach /etc/passwd oraz /etc/group i dlatego je tworzymy. Dalej tworzymy urządzenia i rozpoczynamy instalacje potrzebnych pakietów. Gdy skończymy instalacje ustawiamy skrypty ładowania systemu, takie jak: setclock, sysklogd, localnet i inne.
Po ustawieniu skryptów startowych tworzymy plik fstab, budujemy jądro dla nowego systemu LFS i instalujemy bootloadera Grub, abyśmy mogli wybrać LFS przy uruchamianiu komputera.
Szczegółowy opis jak zbudować system LFS znajduje sie pod adresem:
http://www.tldp.org/LDP/lfs/html/chapter04/packages.html
Źródla:
http://en.wikipedia.org/wiki/Linux_distribution
http://www.linuxfromscratch.org/