NCC Linux, czyli okręt, do którego instrukcję obsługi pisze cała galaktyka
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”. 🚀🐧🤣❤️
