Do tematu "Wprowadzenie"

1.1 Opis systemu operacyjnego Linux

 

Spis treści


Minihistoria Linuxa
Linux zaczął powstawać w 1991 roku. W dokładnosci wtedy to, jego autor Linus Torvalds rozpoczął eksperymenty z systemem operacyjnym Minix. System ten pracował na komputerach z procesorem i80286, czyli tzw. "AT-ekach". Informacje o pracy Linusa, opublikowane przez niego na liście dyskusyjnej spotkały się z dużym zainteresowaniem i wkrótce nad Linuxem pracowała grupa ludzi. Znacznie przyspieszyło to rozwój systemu nazwanego później Linux. Im bardziej system ten stawał się popularny, tym więcej ludzi wspierało jego rozwój. Proces ten trwa do dziś, a liczbę użytkowników Linuxa szacuje się obecnie na ponad 10 milionów.

Ogólnie o systemie
Trudno powiedzieć ile osób rozwija obecnie Linuxa, ponieważ system operacyjny to dla użytkownika tak naprawdę nie tylko jądro, ale i oprogramowanie oraz dokumentacja (jądro bez oprogramowania użytkowego i dokumentacji byłoby interesujące conajwyżej dla hobbystów, specjalistów i studentów ;). Formalnie jednak, Linuxem nazywamy tylko jądro tego systemu. Obecnie, system jest już bardzo rozwinięty, uznany jest za stabilną platformę Unixową. Pod względem szybkości dorównuje wielu komercyjnym systemom Unixowym, tworzonym od kilkunastu lub więcej lat, a niektóre z nich nawet przewyższa szybkością na tym samym sprzęcie (patrz np. testy porównawcze Linuxa i SunOSa na procesorze SPARC, LinuxPlus 1/97 ). Jeżeli chodzi o procesory Intel to zapewne sam/a będziesz miał/a okazję to zobaczyć. Wystarczy powiedzieć, że Linux potrafi "wrócić życie" zapomnianym już 386/486-tkom.

Wsród fachowców Linux uchodzi za system lepszy pod względem szybkości, efektywności, stabilności i co ważne w zastosowaniach Internetowych - bezpieczeństwa od modnych ostatnio Windows NT. Do tej sytuacji doszło między innymi dlatego, że od znalezienia błędu w Linuxie do wypuszczenia poprawek przez autorów, nie mija zazwyczaj więcej jak kilka godzin, maksymalnie kilka dni. Niektóre duże firmy znane są natomiast z opieszałości przy wprowadzaniu poprawek do swoich systemów. Utarło się nawet powiedzenie, że błędy w ich programach są nazywane cechami (ang. features) tych programów.

Dystrybucje
Linux jako jądro systemu jest jednakowy dla wszystkich (z dokładnością do wersji), natomiast Linux oraz towarzyszące mu oprogramowanie nazywane jest dystrybucją. Różne firmy i organizacje zajmują się sprzedawaniem Linuxa i wiele z nich opracowało własne dystrybucje. Wyróżniamy generalnie dwa rodzaje dystrybucji: komercyjne i niekomercyjne. Komercyjne (jak np. RedHat, Caldera) zawierają oprócz oprogramowania darmowego (GNU, FreeWare) lub częściowo darmowego (Shareware) także komercyjne oprogramowanie, jak np. pakiety typu office, wydajne X serwery ze wsparciem dla najnowszego sprzętu, przeglądarki internetowe, narzędzia programistyczne etc. Takie dystrybucje kosztują od kilkudziesięciu do kilkuset dolarów. Ale są też dystrybucje niekomercyjne jak np. Debian, Slackware tworzone przez ochotników lub dystrybutorów darmowego oprogramowania. Także firmy wypuszczają wersje Linuxa nie zawierające oprogramowania komercyjnego. Takie dystrybucje kosztują zazwyczaj od kilku do kilkunastu dolarów. Jedna dystrybucja zajmuje od jednego do kilku CD-ROMów. Te wersje dystrybucji są umieszczane na serwerach ftp, skąd można je sobie pobrać (za darmo). Oprócz dystrybucji są też archiwa, czyli zbiory najróżniejszego oprogramowania, które autorzy postanowili udostępnić wszystkim, wierząc, że będzie komuś przydatne, lub że uczyni świat lepszym. Co zazwyczaj jest zgodne z prawdą. Jeżeli jesteś posiadaczką/posiadaczem karty kredytowej to warto zajrzeć na http://www.cheapbytes.com i http://www.lsl.com, gdzie można zamówić płytkę z Linuxem i kilka płytek z archiwami, za kilkanaście dolarów, przy czym cena ta zawiera opłatę za przesyłkę do Polski!
W Polsce (częsciowo za sprawą pisma LinuxPlus) najpopularniejsze są dystrybucje RedHat (w wersji bez komercyjnego oprogramowania), Slackware i Debian. Wszystkie wyposażone są w przyjazne użytkownikowi programy instalacyjne. RedHat i Debian zawierają oprogramowanie w tzw. pakietach (ang. package). Każdy pakiet zawiera program lub grupę ściśle powiązanych programów. Między pakietami istnieją pewne zależności (ang. dependencies), polegające na tym, że do działania programów z jednego pakietu, potrzebne są programy z innych pakietów. Przykładowo: do działania graficznej przeglądarki internetowej potrzebny jest system XWindows. Zależności uwzględniają również wersje oprogramowania, np. do działania programu A w wersji x potrzebne są biblioteki Y w wersji b. Dzięki mechanizmowi pakietów, łatwo jest instalować system na nowym komputerze (można automatycznie wykorzystać spis pakietów) lub automatycznie instalować nowe wersje (ang. upgrade). Slackware pozbawiony jest mechanizmu pakietów, przez co może być dla początkujących osób nieco trudniejszy w instalacji i utrzymaniu, ale za to (tak twierdzą jego zwolennicy) umożliwia lepszą kontrolę nad zainstalowanymi programami/bibliotekami. Ja korzystam z RedHata, gdyż bardziej sobię cenię wygodę nad kilka niepotrzebnych plików, a poza tym łatwiej można kupić jego najnowszą wersję z jakimś pismem.

Numeracja wersji jądra
Początkowa wersja jądra Linuxa miała numer 0.02. W tym czasie był to raczej eksperyment, który równie dobrze mógł znudzić się jego twórcom i zostać zarzucony. Tak się jednak nie stało. Po dwóch latach pracy Linusa i jego pomocników powstała wersja 0.99 nastęnie 1.0 i tak aż do 1.2.13. W tym momencie projekt związany z Linuxem już nie mógł upaść. Osiągnął już dużą bezwładność i związanych z nim było od tej pory wiele osób, które miały wystarczają wiedzę i umiejętności, by zastąpić tych, którzy chcieliby zrezygnować, w tym nawet samego Linusa. Na tej wersji oparte były dystrybucje dosyć długo. Następna wersja jądra, miała już numer 2, gdyż była przełomowa w rozwoju tego systemu.
Numeracja jądra Linuxa jest nieprzypadkowa. Numer składa się z trzech częci: x.y.z. gdzie:

Najciekawszy z tych numerów to numer podwersji. Jeżeli jest on parzysty, to znaczy że dana wersja jądra jest stabilna. Jeżeli zaś jest nieparzysty to znaczy, że dana wersja jądra jest rozwojowa, czyli że wprowadzane są do niej różne nowości. Zazwyczaj tę wersję instalują osoby prognące śledzić/wspierać rozwój systemu lub jak to ktoś określił "szukające mocnych wrażeń" :-)). Tym niemniej, twórcy nie zalecają korzystania z niej tam, gdzie stabilnosć i bezpieczeństwo danych stanowią kluczową rolę. Z drugiej strony Linus i wiele innych osób, zaangażowani są bardziej w prace nad wersjami rozwojowymi, dzięki czemu tam znajduje się wsparcie dla najnowszych technologii oraz największe usprawnienia w działaniu systemu. Ponieważ użytkownicy wersji stabilnych również domagają się możliwości korzystania ze swoich najnowszych "zabawek" (ISDN, Quake w GL), tworzone są dla nich tzw. łatki (ang. pre-patches), które usprawniają daną wersję systemu (a więc faktycznie numer wersji systemu jest CZTEROczłonowy). Gdy zbierze się kilka takich łatek, są one łączone i numer rewizji systemu ulega zmianie.

Wieloplatformowość i SMP
Linux, a wraz z nim prawie całe dostępne na niego oprogramowanie, jest dostępne i rozwijane na wielu platformach sprzętowych. Procesory na których obecnie można uruchomić Linuxa to:

Na niektórych z powyższych platform Linux jest jedynym i poważnym konkurentem dla wcześniej z nią związanego systemu operacyjnego. Przykładowo 64-bitowa wersja Linuxa na UltraSparca powstała szybciej niż analogiczny Solaris na tę platformę. (Solaris i UltraSPARC to produkty różnych działów firmy Sun)
Wydaje się, że w interesie producentów procesorów jest, aby ich produkty pracowały z jak największą ilością oprogramowania. Jednak tezie tej zaprzecza Intel, który wespół z Microsoftem i innymi pomniejszymi firmami stworzył konsorcjum I2O, które będzie rozwijać różne technologie, w tym szynę systemową. Dostęp do dokumentacji będzie miała każda firma za symboliczną opłatą 5000 dolarów rocznie, o ile Microsoft nie zgłosi veta. Oczywiście publikacja dokumentacji jest zabroniona. Jest to wyraźnie ruch skierowany przeciwko rozwojowi darmowego oprogramowania.

SMP to skrót od Symmetric MultiProcessing. Uogólniając, jest to protokół symetrycznej współpracy wielu procesorów w ramach jednego komputera. Mimo swoich ograniczeń, umożliwia on skuteczne współdziałanie wielu procesorów, co przy niewielkiej ich liczbie daje użytkownikowi zwielokrotnienie szybkości działania systemu za ceną dołożenia jednego procesora (wcześniej trzeba mieć specjalną płytę główną). Linux potrafi wykorzystać SMP i wiele procesorów, uruchamiając na nich niezależne zadania. Obecnie wsparcie dla SMP jest na platformach Intel i SPARC.

Wymagania sprzętowe (PC)
Jeżeli chodzi o PC-ta, to wymagania sprzętowe są niewielkie. Wystarczy procesor 386, 4 MB pamięci, dowolna karta graficzna i stacja dysków. Jeżeli chcemy skorzystać z jakiegoś oprogramowania, to potrzebujemy twardy dysk, na którym utworzymy partycję na Linuxa (najlepiej kilkadziesiąt MB) oraz partycję wymiany (SWAP). Oczywiście Linux potrafi wykorzystać partycje DOSowe i instaluje się w podkatalogu, ale wtedy nie możemy korzystać z doskonałego systemu plików EXT2, więc nie jest to zalecane. Jeżeli pragniemy uruchamiać wiele programów jednocześnie, to warto mieć 8 MB pamięci, a jeżeli chcemy korzystać z graficznego środowiska XWindows, to optymalne jest 16 MB pamięci. Konieczna jest wtedy karta graficzna kompatybilna z VGA. Jeżeli masz kartę SVGA to Linux zapewne potrafi ją wykorzystać, chyba że jest szczególnie egzotyczna (ale wtedy może działać jako VGA), lub szczególnie nowa, a wtedy być może będziesz musiał trochę zaczekać, aż programiści z XFree napiszą sterownik do twojej karty. Producenci sprzętu coraz częściej dostarczają sterowniki do Linuxa lub udostępniają dokumentację, dzięki czemu szybko można stworzyć obsługę danego sprzętu w Linuxie. Niektórzy jednak nie chcą tego robić, a wtedy z użyciem ich sprzętu mogą być problemy, zwłaszcza jeżeli jest on niekompatybilny z innymi rozwiązaniami. Lecz jest to bardzo rzadkie.
Jeżeli chodzi o efektywność, to z mojego doświadczenia wynika, że na 486DX4/100 z 28 MB RAM, Linux + XFree86 dają nieco lepszy komfort pracy niż Windows NT Workstation na Pentium 150 z 32 MB RAM. Oczywiście odczucia innych osób mogą się znacznie różnić.

Moduły
W rozwoju wielu systemów operacyjnych daje się zauważyć trend ku zmniejszaniu jądra systemu, poprzez usuwanie z niego rzeczy, które nie są tam niezbędne. W przypadku Linuxa proces ten ma odzwierciedlenie w mechanizmie modułów. To, co można zmodularyzować, to przykładowo sterowniki sprzętu, interfejsy do innych systemów plików, uruchamiacze programów w innych formatach. Umieszczenie części kodu w module powoduje, że kod ten będzie ładowany w razie potrzeby i po pewnym czasie nie używania - usuwany z pamięci. Ponieważ pamięć zaalokowana przez jądro nie podlega stronicowaniu, jest to jedyny sposób na zwolnienie pamięci. Z używania modułów płyną też inne korzyści:

Współpraca z innymi systemami
Linux potrafi współpracować z wieloma systemami na wiele sposobów.
Sieciowo, m.in.:

Wewnętrznie, m.in.:

Co będzie w przyszłych wersjach?
Na następną wersję Linuxa planuje się wprowadzenie obsługi m.in.:

Inne, podobne Linuxowi systemy
Linux chociaż najpupolarniejszy, nie jest jedynym darmowym systemem operacyjnymi. Inne projekty tego typu to GNU HURD, OpenBSD, NetBSD, FreeBSD, i zapewne inne.
FreeBSD jest systemem starszym od Linuxa o kilka lat, obecnie dorównuje mu rozwojem, a dodatkowo potrafi uruchamiać oprogramowanie skompilowane na Linuxa. Nie obsługuje tak szerokiej gamy sprzętu co Linux. Rdzeń projektu FreeBSD to "The FreeBSD Core Team", składający się z kilku osób oraz "The FreeBSD Development Team", będący nieco szerszą grupą ludzi rozwijających system i tylko te osoby mają możliwość wprowadzania poprawek do systemu. Pozostali hobbyści mogą jedynie zgłosić błąd/poprawkę na specjalnym formularzu. Zapewne ma to na celu utrzymanie projektu spójnym, ale jak widać na przykładzie Linuxa, szeroki dostęp do źródeł i możliwości poprawiania na "własną rękę" nie szkodzą rozwojowi, a wręcz przeciwnie.
HURD jest innym bardzo ciekawym projektem organizacji o znanej nazwie: GNU. Projekt HURD również powstał w czasach, gdy o Linuxie jeszcze nikt nie słyszał. Jego celem było dostarczenie całkowicie darmowego systemu operacyjnego zbliżonego do UNIXa, jednak bardziej nowoczesnego jeżeli chodzi o budowę wewnętrzną. Założeniem było oparcie go na architekturze mikrojądra, z maksymalnymi możliwościami doładowywania/usuwania funkcji, sterowników itp. Jest to naprawdę ciekawy projekt, warto zajrzeć na stronę GNU Hurd. Niestety nie rozwija się on tak szybko jak Linux, ostatnia wersja 0.2 (a więc wciąż uznawana przez autorów za wersję beta, niestabilną) pochodzi z połowy 1997. Co ciekawe, autorzy twierdzą, że gdyby mieli się zająć tym projektem już w momencie kiedy Linux istnieje, to nie robiliby tego, stworzyliby jakieś inne, potrzebne oprogramowanie. Projektem tym zajmują się dlatego, że chcą go poprowadzić do końca. Być może zmienili zdanie.

Czy ktoś tego w ogóle używa? (TAK!)
TAK, TAK, TAK. Oprócz ponad 10 milionów osób (liczba ta ostatnio szybko wzrasta), Linux używany jest przez wiele firm i instytucji na całym świecie. Przytaczanie tutaj ich nazw jest bezcelowe, dość będzie powiedzieć, że w Polsce z Linuxa korzystają np. Sejm RP, OBOP (do zbierania i przetwarzania danych) jak i wiele pracowni komputerowych, takich jak na przykład ta, zdanych na łaskę i niełaskę studentów oraz ich dziwacznych niekiedy programów.

Ciekawe zasoby linuxowe
Kilka moich prywatnych odnośników związanych z Linuxem:



Autor: Marcin Polak
Uwagi: Temat ten jest bardzo obszerny. Dlatego też przy opisywaniu Linuxa, posłużyłem się oprócz własnej wiedzy, następującymi materiałami:
Niniejszym dziękuję im wszystkim.
Dokument ten zapewne nie jest wolny od błędów, ale wszystkie one wynikają z mojego i tylko mojego niedopatrzenia.
Marcin Polak