aA

Od idei do setek dystrybucji. Historia Linuksa w dobrej pigułce

Historia_linuksa

Wiele osób zna historię powstania i rozwoju Linuksa. Jednak wiele osób, nie tylko młodych i przyszłych adeptów IT, jeszcze nie poznało wielu jej szczegółów. Zapraszamy do krótkiej i ciekawej podróży w przeszłość.

Aby odkopać korzenie Linuksa, musimy cofnąć się do roku 1966, kiedy to rozpoczęły się prace nad systemem Multics. Został on zaprojektowany przy współpracy pracowników z Massachusetts Institute of Technology, firmy General Electric oraz Bell Laboratories. Jest to system z podziałem czasu, który niemal w całości napisano w języku PL/I. Z założenia miał być naturalnym rozszerzeniem systemu CTSS (Compatible Time-Sharing System), jednak szybko zyskał ogromne powodzenie, zresztą tak jak inne systemy operacyjne z podziałem czasu, co spowodowało zapotrzebowanie na szybkie przejście do większych i lepszych opracowań tego rodzaju1.

Kilka lat później, w 1969 roku powstał system UNIX. Jego główni twórcy Dennis Ritchie i Ken Thompson wzorowali się właśnie na wspomnianym wyżej systemie Multics. Początkowo system nazywał się Unics, jednak po dodaniu możliwości pracy wielu użytkowników w jednym czasie zmieniono ją na UNIX. Pełna nazwa to Unix Time-Sharing System. Z kolei samo słowo Unix [Unisc] (Uniplexed Information and Computing Service) jest kalamburem określenia Multics (Multiplexed Information and Computing Service)2.

C

Pierwotnie system UNIX napisany był w języku B, który stworzony został właśnie przez twórców Uniksa i opierał się na języku BCPL. Obecnie nie jest już rozwijany ani używany. W latach 1971-1972 B został rozwinięty do New B3, aż wreszcie dzięki Dennisowi Ritchiemu ukazał się C, który do dziś jest podstawą do wielu innych języków programowania. Ponadto, jak czytamy w rankingu Tiobe, język C jest na drugim miejscu najpopularniejszych języków pod względem wyszukiwań4. Niedługo po ukazaniu się C został na niego przepisany system Unix wbrew panującemu wówczas przekonaniu, że coś tak złożonego, jak system operacyjny, który musi radzić sobie z szybką obsługą krytycznych zdarzeń, powinno być tworzone wyłącznie w asemblerze5. Zaowocowało to przenośnością systemu i wzrostem jego zainteresowania.

Należałoby tutaj wspomnieć wcale nie prostą historię C. Wbrew intuicji dzisiejszy C znacznie różni się od swoich początkowych implementacji. Od wydania pierwszej wersji książki "The C Programming Language", która przez wiele lat była uznawana za referencje do ustandaryzowania języka przez ANSI (American National Standards Institute), minęło aż 11 lat. Pierwsze wydanie książki opisuje tzw. K&R C, którego nazwa pochodzi od nazwisk autorów (Kerrigan and Ritchie). Drugie wydanie opisuje już ANSI C. Na temat tej książki oraz jej wpływu na pokolenia programistów można by napisać osobny artykuł.

Po pewnym czasie twórcy Uniksa przestali ze sobą współpracować, co przyczyniło się do powstania dwóch jego wersji. Pierwsza, BSD (Berkeley Software Distribution) rozwijana była na Uniwersytecie Kalifornijskim w Berkeley, druga wydana w 1983 nazwana „System V” stała się komercyjną wersją Uniksa, nad którą pracowano w AT&T6. W dalszych latach 80. Unix stał się bardzo popularny. Stąd wiele jego odmian i implementacji.

Wolność kocham i rozumiem

Koncepcja komercyjnego Uniksa nie spodobała się hakerowi i jednemu z twórców ruchu wolnego oprogramowania, Richardowi Stallmanowi. W 1983 roku wieku 30 lat Stallman ogłosił na grupach dyskusyjnych net.unix-wizards i net.usoft, że zamierza stworzyć kompletny i całkowicie wolny, uniksopodobny system operacyjny GNU (GNU's Not UNIX). Jednak pracę nad nim rozpoczął dopiero po 5 stycznia 1984 roku, gdy zakończył współpracę z Massachusetts Institute of Technology. Haker chciał bowiem, aby uczelnia nie miała możliwości ingerencji w projekt i roszczenia do niego praw autorskich.

Nie nazywaliśmy naszego oprogramowania „wolnym oprogramowaniem”, bo taki termin wówczas nie istniał. Ale właśnie takie ono było. Kiedy pracownicy innego uniwersytetu albo firmy chcieli przenieść jakiś program na swój system i korzystać z niego, to z chęcią się zgadzaliśmy. Kiedy widziało się kogoś korzystającego z nieznanego, interesującego programu, to zawsze można było poprosić o jego kod źródłowy – żeby go przeczytać, zmienić lub użyć jego fragmentów do stworzenia nowego programu7 – powiedział Richard Stallman o projekcie GNU. Mężczyzna chciał zapewnić użytkownikom pełną swobodę. Zaczynając od możliwości analizowania kodu źródłowego, przez swobodę dzielenia się oprogramowaniem, zmiany jego zachowania, czy możliwość publikowania dokonanych zmian.

W związku z tym w 1985 roku w marcowym numerze magazynu Dr. Gobb's Journal opublikowany został Manifest GNU. Był to tekst Stallmana napisany w celu pozyskania współpracowników i poparcia prac nad bezpłatnym, otwartym systemem operacyjnym posiadającym wszystkie cechy użytkowe i strukturę Uniksa8. Publikacja ta posłużyła później do stworzenia Definicji Wolnego Oprogramowania. W październiku tego samego roku Stallman założył Fundację Wolnego Oprogramowania9.

Mimo iż system GNU jest w użyciu od wielu lat, to jego jądro, GNU Hurd, oparte na architekturze mikrojądra10, jest niekompletne, słabo wydajne i nie obsługuje SMP, czyli wieloprocesorowości symetrycznej w obecnej wersji (Mach 4). Dlatego też większość użytkowników GNU używa jądra Linuksa, o którym za chwilę.

MINIX

W 1987 roku powstał MINIX – niekomercyjny system uniksopodobny. Jego twórcą jest holenderski profesor Wydziału Systemów Informatycznych na Vrije Universiteit w Amsterdamie – Andrew Stuart Tanenbaum. MINIX dostępny jest na licencji BSD, co pozwala na swobodne modyfikowanie kodu oraz dystrybucję. Z założenia miał służyć celom edukacyjnym, jednak jego 3. wersja przeznaczona jest także dla systemów wbudowanych. To właśnie MINIX zainspirował Linusa Torvaldsa do napisania Linuksa11.

Profesor Tanenbaum jest twórcą znamienitej książki "Modern Operating Systems", dostępnej także w języku polskim "Systemy operacyjne. Wydanie IV" dzięki wydawnictwu Helion. Jest on wiodącym autorytetem w swojej dziedzinie i wyczerpująco opisuje architekturę systemów operacyjnych. Tanenbaum, jako zwolennik mikrojądra, powiedział o Linuksie: LINUX is obsolete, czyli (ang. Linux jest przestarzały) [Linux jest jądrem monolitycznym]. Dało to początek słynnej dyskusji na temat wyższości mikrojąder nad jądrami monolitycznymi, dyskusje te zwyczajowo nazywa się debatą Tanenbaum–Torvalds12.

Na początku był Linus

W 1988 19-letni student Uniwersytetu Helsinki – Linus Torvalds, poznał w klubie „Spektrum” Larsa Wirzeniusa – studenta informatyki na tej samej uczelni. Panowie szybko znaleźli wspólny język, fascynowała ich bowiem właśnie informatyka. Komputery w tych czasach były jednak stosunkowo drogie, a uczelnia dysponowała głównie maszynami z MS-DOS. Po pewnym czasie Lars odkrył na Wydziale Informatyki mały komputer z systemem ULTRIX, czyli wersją Uniksa dla minikomputerów firmy DEC13. Zabawy z nim przynosiły obu studentom ogromną satysfakcję. Spędzali także dużo czasu na czytaniu postów na grupach dyskusyjnych. W czerwcu 1989 roku Linus i Lars rozpoczęli służbę wojskową. Zapewne było to dla nich traumatyczne przeżycie, bo przez kilka miesięcy byli całkowicie odcięci od komputerów.

Po zakończeniu służby wrócili do eksplorowania Uniksa. W międzyczasie skończyli kurs z języka C i programowania w Uniksie. 5 stycznia 1991 roku Torvalds zaciągnął studencki kredyt i kupił komputer z procesorem Intel 386. Od tego czasu uczył się programowania 386. Cały czas pragnął jednak, by posiadać komputer z systemem UNIX w domu. Po pewnym czasie zainstalował Miniksa i zaczął go rozwijać. W rezultacie skupił się na pisaniu własnego jądra. Swój wkład miał w nim także Lars, którego pierwszą kontrybucją do kodu jądra była funkcja sprintf, poprawiona i usprawniona później przez Torvaldsa. Do dziś znajduje się ona w jądrze jako snprintf14. Linus dokładał do swojego programu coraz nowsze funkcje jak sterownik dysku twardego, zarządzanie pamięcią oraz system plików. Cały czas wykorzystywał Miniksa. Kompilował na nim programy i uruchamiał je na własnym kernelu.

25 sierpnia 1991 roku Linus Torvalds poinformował użytkowników grupy dyskusyjnej Miniksa – comp.os.minix o tym, że tworzy (darmowy) system operacyjny (tylko hobby, nie będzie wielki i profesjonalny jak GNU) dla klonów AT na 386(486). Oryginalny wpis Torvaldsa można zobaczyć tutaj. Niedługo później programista postanowił udostępnić swój kod publicznie. Umożliwiła mu to administracja ftp.funet.fi. Linus musiał wymyślić dla swojego projektu jakąś nazwę. Początkowo chciał go nazwać Freax, jednak Arni Lemmke, administrator ftp.funet.fi stwierdził, że lepsza będzie nazwa Linux.

Co dalej z jądrem?

Na początku nie było łatwo, bo kernel to dopiero początek. Linus musiał opracować sposób instalacji swojego systemu. Jednak zainteresowanie jego projektem z miesiąca na miesiąc rosło. Wiele osób zaczęło używać Linuksa i wiele osób zaczęło go usprawniać. Pod koniec 1991 roku Torvalds zaimplementował do jądra zarządzanie pamięcią wirtualną. To spowodowało, że Linux stał się jeszcze bardziej użyteczny. Było to jednak tylko jądro i do pełnego systemu operacyjnego brakowało wielu rzeczy typu powłoka, biblioteka czy kompilator15. W 1992 postanowiono wykorzystać wspomniany wcześniej system GNU. Połączono jądro stworzone przez Torvaldsa z narzędziami systemowymi oraz bibliotekami z GNU. Nie było to jednak łatwe. Niektóre komponenty GNU wymagały bowiem sporych zmian, by mogły współpracować z Linuksem. W tym momencie jednak zajmowało się nim już sporo osób i prace zostały wykonane. Można było już mówić o kompletnym systemie operacyjnym GNU/Linux.

Linus wraz z Larsem otworzyli własną grupę dyskusyjną na alt.os.linux, która później została zamieniona na comp.os.linux i podzielona na wiele grup. W rezultacie stworzono comp.os.linux.announce, a Wirzenius został jej moderatorem. W tym roku rozpoczął się także projekt dokumentacji Linuksa. 1993 roku młodzi programiści znaleźli zatrudnienie na uczelni w Departamencie Computer Science jako asystenci nauczycieli. Linus cały czas udoskonalał Linuksa16. W 1993 zaczęły pojawiać się pierwsze dystrybucje, takie jak najstarsza aktywnie rozwijana dystrybucja, opublikowana 16 lipca 1993 roku – Slackware Linux17, czy wydany dokładnie miesiąc później Debian18.

Poniżej wykres przedstawiający wzrost liczby linii kodu jądra Linuksa w ciągu kilku lat z uwzględnieniem jego wersji.

Wykres

Rys 1. Źródło: https://www.ibm.com/developerworks/linux/library/l-linux-kernel/

Nazwa Linux

Nazwa systemu to zbitka dwóch słów: imienia twórcy, czyli Linus oraz Unix. W późniejszym czasie pojawił się także akronim rekurencyjny, który mówi, że Linux Is Not Unix (Linux To Nie Jest Unix).

Dystrybucje

Dziś mówimy o setkach znanych dystrybucji Linuksa. Biorąc pod uwagę te, które nie są już rozwijane oraz małe dystrybucje, o których jeszcze nic nie wiadomo, liczba może sięgnąć nawet kilku tysięcy. Wszystkie te dystrybucje opierają się na jądrze stworzonym 26 lat temu i nieustannie udoskonalanym do dziś. Jedną z takich dystrybucji jest EuroLinux. Ma doskonałą podstawę w postaci jądra napisanego przez Torvaldsa, która sprawia, że system jest nie tylko niezwykle stabilny i bezpieczny, ale także przyjazny użytkownikowi. Ponadto w standardzie posiada zaimplementowane użyteczne dodatki znacznie rozszerzające jego możliwości.

Linux zyskuje z każdym rokiem coraz większą popularność i zaufanie, co owocuje pojawianiem się tego systemu praktycznie w każdej branży i w każdym obszarze rynku. Zainteresowanych odsyłamy do tego artykułu, w którym zaprezentowaliśmy obszary, w których w 2017 roku używa się Linuksa.

Źródła:
1https://pl.wikipedia.org/wiki/Multics
2https://pl.wikipedia.org/wiki/Unix
3https://pl.wikipedia.org/wiki/B_(język_programowania)
4https://www.tiobe.com/tiobe-index/
5W. Stallings, Operating Systems: Internals and Design Principles. Wyd. 5. Pearson Education, Inc., 2005, s. 91. (ang), [cyt. za:] https://pl.wikipedia.org/wiki/Unix
6http://zasoby.open.agh.edu.pl/~09saprzybylo/historia.html
7https://pl.wikipedia.org/wiki/Historia_wolnego_oprogramowania
8https://pl.wikipedia.org/wiki/Manifest_GNU
9https://pl.wikipedia.org/wiki/GNU
10https://pl.wikipedia.org/wiki/GNU_Hurd
11https://pl.wikipedia.org/wiki/MINIX
12https://en.wikipedia.org/wiki/Tanenbaum%E2%80%93Torvalds_debate
13https://pl.wikipedia.org/wiki/Ultrix
14https://github.com/torvalds/linux/blob/master/lib/vsprintf.c
15http://www.flug.org.pl/Historia_Linuxa.html
16https://liw.fi/linux20/
17https://pl.wikipedia.org/wiki/Slackware
18https://pl.wikipedia.org/wiki/Debian

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *