Dystrybucje Linuksa




GNU/Linux dostępny jest w postaci dystrybucji. Dystrybucją nazywamy przygotowany przez pewną firmę, organizację bądź osobę zastaw zawierający system operacyjny oraz zbiór aplikacji skonfigurowanych w specyfinczy sposób. Rozmaite dystrybucje różnią się między sobą sposobem instalacji i konfiguracji, rozlokowaniem plików systemowych, doborem aplikacji.

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

Historia

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.

Linux from scratch

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

Podprojekty LFS:

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.

Jakie korzyści daje nam LFS?

LFS uczy ludzi jak działa Linux "od wewnątrz"
Budowanie systemu linuksowego od zera pokaże nam mechanizmy Linuksa, jak elementy działają razem i zależą od siebie nawzajem.

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.

Opis budowy LFS

Przygotowanie do budowy

Zamierzając zbudować nasz nowy system linuksowy potrzebujemy pustej partycji dyskowej. Jesli nie mamy wolnej partycji ani miejsca na żadnym z dysków, aby ją tam utworzyć, możemy budować LFS na tej samej partycji, na której jest aktualna dystrybucja Linuksa. Takie postępowanie nie jest zalecane przy pierwszej instalacji LFS, ale jeśli brakuje nam miejsca to możemy budować LFS na tej samej partycji.

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.

Budowa systemu LFS

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/