XO.PL / IT na Wesoło
PL / EN
IT na Wesoło

Informatyka po ludzku. Bez magii, bez marketingowej waty. Za to z przykładami.

Tematy wyjaśnione prosto, ale bez przekręcania techniki.

Systemy operacyjne

NCC Linux, czyli okręt, do którego instrukcję obsługi pisze cała galaktyka

POSŁUCHAJ PODCASTUWersja audio · IT na Wesoło · LinuxCzas trwania: 17:50

Na skraju galaktyki, w dokach niezależnej stoczni, stoi NCC Linux. Z zewnątrz przypomina krążownik badawczy. W środku przypomina warsztat, w którym ktoś pozwolił inżynierom zrealizować wszystkie pomysły naraz. Na jednej ścianie wisi plan okrętu, na drugiej schemat narysowany na serwetce. Oba są aktualne. Kapitan właśnie przybył z wizytą na USS Windows i postanowił sprawdzić, dlaczego tutaj nawet ekspres do kawy ma własną instrukcję konfiguracji.

Rozdział pierwszy: kapitanie, kupiliśmy jądro. Resztę trzeba zorganizować

— Komputer, raport o gotowości okrętu!
— Jądro gotowe, kapitanie.
— Doskonale. Otworzyć mapę gwiazd!
— Brak programu do map gwiazd.
— To proszę uruchomić pulpit!
— Nie zainstalowano pulpitu.
— A chociaż zegarek działa?!
— Możemy odczytać czas z konsoli.
— CO TO ZA OKRĘT?!
— Taki, jaki pan zamówił. W wersji minimalnej.

Tu zaczyna się jedna z najważniejszych rzeczy w całej historii. Linux jest przede wszystkim jądrem systemu operacyjnego, czyli częścią odpowiedzialną między innymi za zarządzanie procesami, pamięcią i komunikację ze sprzętem. Samo jądro nie jest jeszcze kompletnym środowiskiem, w którym zwykły użytkownik wygodnie pisze dokumenty czy przegląda zdjęcia.

Kompletny system powstaje, gdy do jądra dołączymy potrzebne programy, biblioteki, narzędzia systemowe, sposób instalowania oprogramowania i — jeśli trzeba — środowisko graficzne. Taki gotowy zestaw nazywamy dystrybucją Linuksa. W wielu dystrybucjach istotną rolę odgrywają narzędzia projektu GNU, choć skład poszczególnych systemów bywa różny.

— Czyli jądro to maszynownia i centralne sterowanie, a nie cały krążownik?
— Dokładnie.
— A kto dobiera resztę wyposażenia?
— Stocznia, kapitanie. Albo my sami.
— CZY MY MOŻEMY WRESZCIE KUPIĆ COŚ, CO NIE WYMAGA ZEBRANIA KOMITETU?!
— Oczywiście. Gotową dystrybucję.

To dobra różnica względem USS Windows: tam producent dostarcza określoną rodzinę kompletnych systemów. Tutaj wokół wspólnego jądra działa wiele niezależnych projektów, które składają systemy do różnych zastosowań.

Rozdział drugi: stocznie galaktyki, czyli jeden silnik, wiele okrętów

Do doków NCC Linux podpływa delegacja ze stoczni. Na nabrzeżu czekają przedstawiciele Debiana, Ubuntu, Fedory i Rocky Linux.

— Kapitanie, każdy proponuje nam inny okręt.
— Ale przecież wszystkie mają Linux!
— Tak. Podobne fundamenty, różne decyzje konstrukcyjne.
— Jeden ma elegancki mostek, drugi serwerownię, trzeci laboratorium.
— A który najlepszy?
— Do czego, kapitanie?
— NO JAK TO DO CZEGO?! DO WSZYSTKIEGO!
— To zapraszam na bardzo długie spotkanie.

Debian znany jest z podejścia stawiającego na społeczność i przewidywalność wydań stabilnych. Ubuntu rozwija się na bazie Debiana, ale ma własny cykl wydań, rozwiązania i wsparcie. Fedora często wcześnie wprowadza nowe technologie do swojego środowiska. Rocky Linux należy do rodziny dystrybucji zgodnych z ekosystemem Red Hat Enterprise Linux i jest wybierany między innymi do zastosowań serwerowych.

Nie oznacza to, że któryś z tych systemów jest z natury szybki, wolny, bezpieczny albo niebezpieczny. Liczą się konkretne wersje, konfiguracja, utrzymanie, dostępność oprogramowania i potrzeby użytkownika. Serwer bazodanowy, komputer domowy i urządzenie przemysłowe mogą wymagać zupełnie innych decyzji.

— Kapitanie, wybraliśmy dystrybucję.
— Nareszcie!
— Teraz trzeba wybrać jej wydanie i sposób aktualizacji.
— MECHANIKU, PROSZĘ MI PODAĆ COŚ NA BÓL GŁOWY!
— Najpierw sprawdzę, czy jest w repozytorium.

Rozdział trzeci: czarny ekran, który nie jest awarią

Kapitan po raz pierwszy wchodzi na mostek NCC Linux. Zamiast dziesiątek kolorowych ikon widzi czarne okno z migającym kursorem.

— O nie. Komputer się popsuł.
— Nie, kapitanie. To terminal.
— A gdzie wszystkie przyciski?
— Możemy je mieć. Ale do tego zadania wystarczy polecenie.
— I pan chce powiedzieć, że tą linią tekstu można sterować statkiem?
— Tak.
— BEZ KLIKANIA?!
— Bez klikania.
— To brzmi podejrzanie wydajnie.

Linux może działać z graficznym pulpitem — na przykład GNOME lub KDE Plasma — albo bez niego. Na wielu serwerach interfejs graficzny zwyczajnie nie jest potrzebny. Terminal to program lub interfejs, przez który komunikujemy się z powłoką (shell), czyli interpretem poleceń. Popularną powłoką jest Bash, ale istnieją też inne.

Przykładowo polecenie pwd pokaże bieżący katalog, ls wypisze pliki, a cd zmieni katalog. Nie są to magiczne zaklęcia ani obowiązkowy rytuał. To narzędzia, które można łączyć w skrypty i wykorzystywać do powtarzalnych działań.

— Komputer, pokaż zawartość magazynu.
— Wykonano.
— Posortuj według rozmiaru.
— Wykonano.
— Powtórz jutro o szóstej.
— Można zaplanować zadanie.
— CZYLI JEDNA OSOBA MOŻE ZROBIĆ PRACĘ CAŁEJ ZMIANY?!
— O ile najpierw poprawnie napisze polecenie. Błędne też wykona się bardzo sprawnie.

I to jest druga strona swobody: narzędzie jest potężne, ale nie zastępuje myślenia. Polecenie uruchomione z wysokimi uprawnieniami może narobić dużych szkód równie szybko, jak wykonać pożyteczną pracę.

Rozdział czwarty: kapitan nie jest od każdej śrubki

Oficer bezpieczeństwa zatrzymuje kapitana przy wejściu do maszynowni.

— Hasło dostępu, kapitanie.
— Jestem kapitanem!
— To nie jest hasło.
— Proszę mnie wpuścić!
— To też nie.
— A CO W OGÓLE WOLNO MI ROBIĆ NA WŁASNYM OKRĘCIE?!
— Bardzo wiele. Ale nie wszystko jednym kontem.

W systemach uniksopodobnych, do których należy Linux, istotną rolę odgrywają użytkownicy, grupy i uprawnienia. Plik może mieć właściciela, grupę oraz prawa do odczytu, zapisu i wykonania. Istnieje też konto root, wyposażone w bardzo szerokie uprawnienia administracyjne.

Narzędzia takie jak sudo pozwalają uprawnionym użytkownikom wykonywać określone polecenia z podwyższonymi prawami. Nie znaczy to, że każdy użytkownik może zrobić wszystko, ani że sudo automatycznie czyni polecenie bezpiecznym.

— Mechaniku, dlaczego nie pracujemy cały czas jako root?
— Bo wtedy każda literówka ma uprawnienia admirała.
— A jeśli będę ostrożny?
— Kapitanie, wczoraj próbował pan naprawić panel sterowania kubkiem kawy.
— TO BYŁ EKSPERYMENT!

Linux, podobnie jak Windows, nie jest odporny na błędy ludzi, złe konfiguracje czy złośliwe oprogramowanie. O bezpieczeństwie decydują także aktualizacje, polityka dostępu, ograniczanie usług i dobre praktyki operacyjne. Maskotka pingwina nie jest firewallem. 🐧

Rozdział piąty: jedna wielka mapa ładowni

Na USS Windows kapitan pamiętał, że dokumenty są na dysku C:, a inne magazyny miały kolejne litery. Na NCC Linux otrzymuje mapę zaczynającą się od jednego znaku: /.

— To wszystko? Ukośnik?!
— To katalog główny, kapitanie.
— A gdzie pozostałe magazyny?
— Możemy je dołączyć w wybranych miejscach drzewa katalogów.
— Czyli ten dysk może być w środku tamtego katalogu?!
— Może być tam zamontowany system plików.
— PROSZĘ PRZESTAĆ MONTOWAĆ DYSKI W SZAFACH!

Linux zwykle prezentuje pliki w jednym drzewie katalogów zaczynającym się od /. Inne systemy plików można montować w wybranych katalogach. Typowe miejsca to /home na katalogi domowe użytkowników, /etc na liczne pliki konfiguracyjne i /var na dane, które zmieniają się podczas pracy systemu. Szczegóły zależą od dystrybucji i konfiguracji.

Na pokładzie znajdziemy różne systemy plików, na przykład ext4, XFS czy Btrfs. Mają odmienne właściwości i zastosowania. Ich wybór nie zastępuje jednak backupu, tak jak grubsze ściany magazynu nie zastępują planu ewakuacji.

— Kapitanie, znaleźliśmy pięć kopii konfiguracji.
— Doskonale!
— Wszystkie są na tym samym uszkodzonym nośniku.
— A WIĘC JEDNAK NIE DOSKONALE.

Rozdział szósty: sklep z częściami, czyli repozytoria

Kapitan potrzebuje programu do analizowania sygnałów.

— Proszę znaleźć go w Internecie!
— Lepiej najpierw sprawdzić oficjalne repozytoria naszej dystrybucji.
— Repozytoria? Czyli magazyny stoczni?
— Coś w tym rodzaju. Pakiety oprogramowania i informacje potrzebne do ich instalowania.
— A da się zainstalować wszystko jedną komendą?
— Często tak.
— A dlaczego na sąsiednim okręcie ta komenda wygląda inaczej?!
— Bo wybrali inną stocznię.

Dystrybucje zwykle mają menedżer pakietów, który pozwala instalować i aktualizować oprogramowanie oraz śledzić zależności. W rodzinie Debian/Ubuntu spotkamy między innymi apt, a w rodzinie Fedora/Rocky Linux — dnf. Są też inne sposoby dostarczania aplikacji.

Repozytorium nie jest równoznaczne z gwarancją absolutnego bezpieczeństwa. Ważne są zaufane źródła, podpisy pakietów, poprawna konfiguracja i bieżące utrzymanie. Nie każda dystrybucja dostarcza identyczne wersje programów: część preferuje stabilność i dłuższe utrzymywanie wydań, inne szybsze udostępnianie nowości.

— Kapitanie, nowa wersja programu jest dostępna.
— Instalować!
— Na serwerze podtrzymywania życia?
— Aaa…
— Najpierw testy, plan zmian i okno serwisowe.
— To czemu nie napisaliście tego na przycisku?
— Przycisk miałby trzy strony instrukcji.

Rozdział siódmy: serwer, desktop i komputer schowany w szafie

Po całym dniu kapitan wciąż nie może uwierzyć, że NCC Linux nie musi mieć okienek.

— Mechaniku, co robi nasz drugi okręt?
— Obsługuje strony WWW.
— A trzeci?
— Bazę danych.
— A czwarty?
— Steruje urządzeniami pomiarowymi.
— A GDZIE ONE MAJĄ PULPITY?!
— Nie wszystkie ich potrzebują.
— TO SKĄD WIEDZĄ, ŻE PRACUJĄ?!
— Z logów, monitoringu i wyników pracy. Nie z tapety.

Linux jest obecny na serwerach, komputerach osobistych, w chmurze, superkomputerach i wielu urządzeniach specjalizowanych. Dzięki możliwości dobrania komponentów bywa używany tam, gdzie liczą się automatyzacja, zdalne zarządzanie i kontrola nad środowiskiem. Nie oznacza to, że każda instalacja jest lekka, bezproblemowa albo idealnie zgodna z każdym programem.

Systemy oparte na jądrze Linux spotkamy również w świecie telefonów — Android korzysta z jądra Linux, choć nie jest po prostu typową desktopową dystrybucją i ma własny zestaw komponentów. W przyszłości odwiedzimy również jego flotyllę.

— Czyli jeden rodzaj silnika może służyć krążownikowi, stacji orbitalnej i urządzeniu mieszczącemu się w kieszeni?
— Tak, po odpowiednim przystosowaniu całego systemu.
— To poproszę NCC Linux w wersji kieszonkowej!
— Kapitanie, pan już ma telefon.
— …AHA.

Rozdział ósmy: open source nie oznacza „bez właściciela i bez zasad”

Na odprawę przybywają inżynierowie z różnych planet. Każdy przyniósł poprawkę, propozycję albo raport o błędzie.

— Kapitanie, ktoś z drugiego końca galaktyki znalazł problem w module.
— I co teraz?
— Zgłosił go i zaproponował zmianę.
— ZA DARMO?!
— Niektórzy pracują społecznie, inni zawodowo dla firm i instytucji.
— A kto decyduje, czy poprawka trafi na okręt?
— Osoby utrzymujące dany projekt.
— CZYLI TO NIE JEST GŁOSOWANIE CAŁEGO WSZECHŚWIATA?!
— Na szczęście nie.

Linux rozwija się w modelu otwartego oprogramowania (open source). Kod źródłowy jądra jest dostępny na warunkach licencji GNU GPL w wersji 2. Można go analizować, modyfikować i rozpowszechniać zgodnie z warunkami licencji. Otwarty kod nie oznacza automatycznie, że wszystkie programy działające na Linuksie są otwarte, ani że praca nad systemem nic nie kosztuje.

Za rozwojem stoją społeczności, opiekunowie projektów i płatni inżynierowie wielu organizacji. Pomysły podlegają przeglądom, testom i decyzjom technicznym. Dzięki temu można współpracować na ogromną skalę, ale nie każda proponowana zmiana trafia do oficjalnego projektu.

— Kapitanie, mechanik proponuje wymienić pół maszynowni na własną konstrukcję.
— Po co?
— Bo może.
— A czy powinien?
— To zupełnie inne pytanie.

Rozdział dziewiąty: Linux kontra Windows? Fałszywy alarm

Do NCC Linux zbliża się znajoma sylwetka USS Windows. Oba krążowniki wymieniają sygnały.

— Tu USS Windows. Potrzebujemy pomocy w analizie logów.
— Tu NCC Linux. Przyjęto. Prześlijcie dane.
— Kapitanie — szepcze nawigator — czy my nie mamy być konkurentami?
— W katalogu reklamowym może i tak. Ale w kosmosie ktoś musi naprawić silnik.

Windows i Linux realizują wiele podobnych zadań: uruchamiają programy, zarządzają zasobami, zapewniają dostęp do urządzeń i chronią uprawnienia. Różnią się architekturą poszczególnych komponentów, sposobem dystrybucji, ekosystemem oprogramowania i praktyką administrowania. Oba mogą mieć interfejs graficzny. Oba mogą pracować jako serwery. Oba wymagają aktualizacji, konfiguracji i rozsądnego użytkowania.

Nie trzeba udowadniać, że jedna flota jest głupia, żeby docenić drugą. W niektórych zadaniach wygodniej użyć Windows, w innych Linuksa, a w wielu środowiskach oba współpracują. Najlepszy wybór wynika z potrzeb, kompatybilności, doświadczenia zespołu i kosztu utrzymania — nie z tego, kto głośniej krzyczy na mostku.

— USS Windows do NCC Linux: mamy jeszcze jedno pytanie.
— Słuchamy.
— Czy naprawdę wszystko robicie przez terminal?
— Nie. Czasami też klikamy.
— UFF!
— Ale kapitan właśnie odkrył, że klikaniem nie da się naprawić kubka.

Raport końcowy: własny okręt, własna odpowiedzialność

NCC Linux wychodzi ze stoczni. Jądro koordynuje pracę sprzętu, usługi wykonują zadania, programy dostarczają funkcji, menedżer pakietów pomaga zarządzać oprogramowaniem, a użytkownicy mają określone uprawnienia. Wybrana dystrybucja łączy te elementy w działający system. Kapitan patrzy na gwiazdy, mechanik na wykresy, a komputer czeka na sensowne polecenie.

— Komputer, raport końcowy!
— Wszystkie podstawowe systemy sprawne.
— Czyli jesteśmy gotowi do lotu?
— Tak, kapitanie.
— Bez restartu?
— Na razie nie jest potrzebny.
— Bez okienka z pytaniem, czy na pewno?
— Pytam tylko wtedy, kiedy konfiguracja tego wymaga.
— Czyli mogę wreszcie dowodzić?
— Oczywiście. Ale główny mechanik prosi, aby nie edytował pan plików konfiguracyjnych na żywym reaktorze.
— JA TYLKO CHCIAŁEM ZMIENIĆ KOLOR LAMPEK! 🤣

Linux to nie jeden gotowy okręt, lecz jądro i cały ekosystem systemów budowanych wokół niego. Jego siłą jest możliwość wyboru i dostosowania. Ceną tej swobody bywa konieczność podjęcia większej liczby decyzji i ponoszenia za nie odpowiedzialności. A to, czy statek poleci daleko, zależy nie tylko od projektu silnika, ale również od załogi.


Dowództwo Floty Systemów Operacyjnych informuje: NCC Linux pomyślnie przeszedł przegląd. Kapitan złożył wniosek o przycisk „Zrób wszystko dobrze”. Wniosek odesłano z adnotacją: „Proszę sprecyzować wymagania”. 🚀🐧🤣❤️