Architektura, historia i filozofia systemu Linux

Po lekturze tego rozdziału zrozumiesz, czym różni się jądro systemu od pełnego systemu operacyjnego. Poznasz koncepcję dystrybucji, dowiesz się, jak przebiega komunikacja użytkownika ze sprzętem za pomocą powłoki oraz środowiska graficznego, a także odkryjesz fundamenty i filozofię UNIX, które do dziś kształtują sposób zarządzania systemami z rodziny Linux.

1.1. Czym jest Linux? Jądro a system operacyjny

Często w mowie potocznej używamy słowa "Linux" w odniesieniu do całego systemu operacyjnego. Z technicznego punktu widzenia, Linux to wyłącznie jądro (ang. kernel), stworzone w 1991 roku przez fińskiego studenta, Linusa Torvaldsa.

Jądro jest sercem i fundamentem całego systemu. Działa ono jako pośrednik (most) między oprogramowaniem a fizycznym sprzętem komputera. Do jego głównych zadań należy:

Aby jądro stało się użytecznym systemem operacyjnym, musi zostać obudowane dodatkowym oprogramowaniem: narzędziami systemowymi, bibliotekami, powłoką i aplikacjami użytkowymi. Większość z tych kluczowych narzędzi w systemach linuksowych pochodzi z projektu GNU, dlatego poprawną, choć rzadziej używaną nazwą pełnego systemu jest GNU/Linux.

Co najważniejsze, Linux opiera się na licencji Open Source (otwartego oprogramowania). Oznacza to, że jego kod źródłowy jest jawny, darmowy i może być analizowany, modyfikowany oraz dystrybuowany przez każdego użytkownika czy organizację na świecie.

1.2. Dystrybucje Linuksa – system szyty na miarę

Ponieważ jądro i narzędzia systemowe są darmowe, różne społeczności i firmy zaczęły tworzyć własne pakiety instalacyjne, dostosowane do konkretnych potrzeb. Tak powstały dystrybucje Linuksa (potocznie distro).

Dystrybucja to kompletny, gotowy do instalacji system operacyjny, zawierający:

  1. Skompilowane jądro Linux.
  2. Narzędzia systemowe i biblioteki.
  3. System zarządzania pakietami (do instalacji i aktualizacji oprogramowania).
  4. Opcjonalnie: środowisko graficzne i preinstalowane aplikacje (przeglądarki, pakiety biurowe).

Dystrybucje dzielą się na rodziny, z których najpopularniejsze to:

1.3. Powłoka (Shell) – tekstowe centrum dowodzenia

Zanim systemy operacyjne zyskały kolorowe okna i kursory myszy, jedynym sposobem komunikacji z maszyną był tekst. Odpowiada za to powłoka (ang. shell) – program, który przyjmuje polecenia wpisywane przez użytkownika na klawiaturze, interpretuje je i przekazuje do wykonania przez jądro systemu operacyjnego.

Choć dziś powłoka (dostępna w emulatorze terminala) może wydawać się przestarzała, w świecie Linuksa jest to wciąż najpotężniejsze i najważniejsze narzędzie administratora. Pozwala na błyskawiczne zarządzanie systemem, pełną automatyzację zadań (pisanie skryptów) i zużywa ułamek zasobów, jakich wymaga interfejs graficzny.

Do najpopularniejszych powłok należą:

1.4. Środowisko graficzne (GUI)

W systemie Linux środowisko graficzne (GUI - Graphical User Interface) nie jest na stałe zintegrowane z jądrem systemu. Jest to po prostu kolejny program (lub zestaw programów), który można zainstalować, usunąć lub wymienić w dowolnym momencie. Środowisko graficzne zarządza wyświetlaniem okien, ikon, pasków zadań i menu, czyniąc system przystępnym dla codziennego użytkownika.

Wybór środowiska często decyduje o ostatecznym wyglądzie systemu oraz jego zapotrzebowaniu na pamięć RAM i moc procesora:

1.5. Dziedzictwo i filozofia UNIX

Aby w pełni zrozumieć, dlaczego Linux działa w taki, a nie inny sposób, należy cofnąć się do przełomu lat 60. i 70. XX wieku, do laboratoriów AT&T Bell Labs. To tam Ken Thompson i Dennis Ritchie stworzyli UNIX – system, który zdefiniował współczesną informatykę.

UNIX powstał z potrzeby stworzenia systemu:

UNIX stał się standardem dla systemów serwerowych i uniwersyteckich, a jego architektura zainspirowała twórców innych systemów. Linux nie posiada kodu UNIX-a, ale został od podstaw napisany tak, aby w 100% zachowywać się i funkcjonować jak UNIX (jest systemem uniksopodobnym).

1.6. Filozofia UNIX w sercu Linuksa

Twórcy UNIX-a wypracowali zbiór reguł i dobrych praktyk projektowych, zwany Filozofią UNIX-a. Te zasady są w Linuksie świętością i to one sprawiają, że administracja tym systemem jest tak logiczna:

  1. Rób jedną rzecz, ale rób ją dobrze (Zasada minimalizmu)
    Zamiast tworzyć jeden gigantyczny program "do wszystkiego" (który jest trudny w naprawie i aktualizacji), w Linuksie używa się dziesiątek małych programów. Każde polecenie powłoki (np. ls, grep, sort) odpowiada za jedno wąskie, konkretne zadanie i zostało do niego zoptymalizowane.

  2. Łącz programy ze sobą (Kombinowanie narzędzi)
    Skoro mamy małe programy, musimy umieć z nich korzystać. System oferuje tzw. potoki (ang. pipes, symbol |), które pozwalają przekazać wynik działania jednego programu jako wejście do drugiego. Dzięki temu z prostych klocków można układać wysoce złożone mechanizmy.

  3. Wszystko jest plikiem (Everything is a file)
    To najpotężniejsza zasada systemu Linux. W tym systemie nie tylko dokumenty tekstowe są plikami. Twój dysk twardy, karta sieciowa, drukarka, a nawet uruchomione procesy są w systemie widoczne jako pliki tekstowe. Konfiguracja systemu to nic innego jak edycja zwykłych plików tekstowych. Jeśli opanujesz modyfikację plików w Linuksie, opanujesz zarządzanie całym sprzętem.

  4. Format tekstowy jako uniwersalny interfejs
    Programy powinny komunikować się ze sobą i z użytkownikiem za pomocą czystego tekstu. Tekst jest uniwersalny, łatwy do przesłania przez sieć, do zapisu i analizy za pomocą skryptów.

  5. Złota klatka dostępu (Wieloużytkownikowość na poziomie DNA)
    Od samego początku system zakłada, że korzysta z niego wiele osób. Każdy plik, katalog i proces musi mieć określonego właściciela oraz ściśle zdefiniowane uprawnienia. System operacyjny rygorystycznie oddziela środowisko zwykłego użytkownika od konta administratora (root), co stanowi podstawę legendarnego bezpieczeństwa i stabilności Linuksa.