Motto Mistrza Magii

"Każdy początek jest trudny, lecz tylko najodważniejsi sięgają po swoją moc."

Rozpoczynanie Przygody z Linuxem - Przygotowanie do Instalacji Gentoo

Witajcie, młodzi czarodzieje!

Przede wszystkim niech Was nie przeraża ilość tekstu w dzisiejszym Kapitulum ale aby z byle czarownika zrobić prawdziwego Wiedźmina trzeba nabyć solidnych podstaw, dlatego na początku będę wyjaśniał w szczegółach każde zaklęcie i gest. Przyszłe zjazdy nie będą tak rozbudowane w opisy a bardziej treściwe i skupione na strategicznym knuciu rzucaniu zaklęć. Aby rozpocząć swoją przygodę z Linuxem, wykonajcie następujące kroki, aby przygotować bootowalny pendrive lub płytę CD do instalacji Gentoo Linux:

  1. Pobierz obraz ISO:
    • Jeśli chcesz prowadzić instalację na maszynie wirtualnej lub używać drugiego komputera (tabletu, telefonu), pobierz Arch Linux ISO.
    • Jeśli chcesz instalować Gentoo na tym samym komputerze na którym będziesz pobierać nauki czarnej magii, pobierz dystrybucję ze środowiskiem graficznym, które pomoże Ci zerkać na instrukcję w trakcie instalacji.
    • Wymagania: Do instalacji bezpośrednio na komputerze (bez VM) potrzebujesz pendrive'a 4GB lub większego.
    • Odwiedź gentoo.org, archlinux.org lub NeonKDE
    • Znajdź sekcję "Download" i kliknij najnowszy obraz ISO, aby pobrać plik.

Uwaga!
Co wybrać?

Pamiętaj, że eksperymentowanie z systemami operacyjnymi może skutkować całkowitą utratą danych! W Linuksie, to Ty jesteś władcą podziemi, więc jedna nieopatrzna literówka i możesz wyczyścić twarde dyski. Są też narzędzia, które pomogą Ci je przywrócić, ale do tego dopiero dojdziemy w przyszłości a teraz trzeba gdzieś posadzić system.
  1. Instalacja w VM:
    • 99% z Was ma komputer z Windowsem, więc najbezpieczniejsza opcja to użycie maszyny wirtualnej. Poniżej pokazałem Ci krótki opis jak uruchomić QEMU w którym możesz eksperymentować z zaklęciami ale możesz użyć dowolnego systemu wirtualizacji jak na przykład VirtualBox albo VMWare, jednak ta opcja jest bardzo wolna, bo komputer musi udźwignąć dwa systemy operacyjne.
    • Jeśli masz do dyspozycji drugi komputer, na którym nie boisz się eksperymentować to ta opcja jest najlepsza i najwygodniejsza.
    • Bitlocker jest bez sensu

      W Linuksie urządzenia blokowe USB są zlokalizowane w katalogu /dev/ i nazywane sd.. i kolejnymi literami - sda, sdb, sdc itd... Jak, mam nadzieję, wiesz - dyski mogą być podzielone na partycje, ale fizycznym urządzeniem jest dysk a nie partycja. Partycja jest urządzeniem logicznym.
      Partycje w linuksie numerowane są po kolei, po literze, czyli np:
      /dev/sda1, /dev/sda2...
      /dev/sdb1, /dev/sdb2... ..., /dev/sdb78
      /dev/sdc
      ...
      ...
      Graficznie wygląda to mniej więcej tak:

      Zrzut z programu gparted

      Z tą różnicą, że mój dysk nie jest przypięty do magistrali szeregowej (dyski SATA i SCSI) a do magistrali PCIe, dlatego system nazywa je inaczej i jest to zazwyczaj "nvme", a nomenklatura nazw jest podobna:
      nvme0n1p1 - pierwsza partycja pierwszego dysku przypiętego do pierwszego kontrolera (numeracja zaczyna się od 0)
      nvme1n1p5 - piąta partycja pierwszego dysku przypiętego do drugiego kontrolera.
      Pobrany obraz ISO jest obrazem urządzenia (jakiegoś nośnika danych, na którym ktoś wcześniej przygotował bootowalny system). Bootowalny, czyli taki z którego można uruchomić komputer.
      Kiedy odtwarzasz (przywracasz) pobrany z sieci obraz ISO przywracasz obraz urządzenia na inne urządzenie - na Twój pendrajw. Zapewne Twój pen ma utworzoną jedną partycję i system wykrywa go jako /dev/sda1. Ale ponieważ odtwarzasz obraz całego urządzenia to przywracasz go na całe urządzenie /dev/sda a nie na partycję /dev/sda1.
      Jak sprawdzić jak się nazywa Twój pen?
      Najpewniej jest zobaczyć to w katalogu /dev - to katalog, w którym znajdują się wszystkie pliki urządzeń systemowych. Katalog /dev i drzewo systemowe omówimy sobie później ale teraz musisz sprawdzić jaką literkę "dostał" Twój pen.

      cd /dev
      Wyjmij pena z komputera i rzejdź do katalogu /dev. Tu poznajemy pierwsze polecenie "cd" - change directory, czli tym zaklęciem przechodzimy pomiędzy katalogami i od teraz będzie Ci już znane.
      ls -l sd*
      Zaklęcie ls (list) wyświetla zawartość katalogu. Polecenie to (jak większość poleceń linuksowych) ma parametry. Listę parametrów możesz zobaczyć wpisując ls --help. --help jest standartowym parametrem i jeśli program nie jest jakimś punkowym wynalazkiem pisanym w piwnicy pod kołdrą, to parametr --help zadziała.
      Tu jeszcze trzeba zwrócić uwagę na "-" i na "--". Parametry zaklęć mają wersję krótką i długą. Do krótkich wersji używa się pojedyńczego "minusa", np. "ls -ar" znaczy to samo co "ls --all --reverse"
      Zaklęcie ls wylistuje zawartość katalogu /dev.
      Parametr "-l" wymusi długi format wyjściowy, czyli generalnie sformatuje wynik polecenia w listę
      "sd*" ograniczy wynik do nazw plików zaczynających się od "sd" a gwaizdka zastępuje wszystkie znaki
      Możecie wpisać wszystkie trzy wersje polecenia po kolei aby zobaczyć różnicę.
      Wyjmujecie więc pena z gniazdka i wpisujecie:
      ls -l sd*
      I patrzycie jakie urządzenia są widoczne w Waszym systemie. Jeśli nie macie urządzeń sd* to zaklęcie wyświetli Ci informację, że nie ma takiego pliku ani katalogu.
      Następnie wkładacie pena z powrtotem do USB i wpisujecie jeszcze raz to samo. Tym razem powinno pojawić się nowe urządzenie, które jest Waszym pendrivem i tą nazwę musicie podać jako parametr "of" polecenia "dd".
      Samo polecenie dd omówimy sobie później.

  2. Utwórz bootowalny nośnik:
    • Na Windowsie: Użyj Rufusa, aby stworzyć bootowalny pendrive:
      • Wybierz plik ISO i swój pendrive.
      • Kliknij Start i poczekaj na zakończenie procesu.
    • Na macOS/Linux: Użyj polecenia dd w terminalu:
    • !!!! Uwaga. Linux rozróżnia duże i małe litery !!! Teraz przejdź do katalogu gdzie pobrałeś ISO:
      cd ~/Pobrane
      lub cd ~/Downloads lub cd ~/Desktop - po prostu przejdź do katalogu, gdzie jest pobrałeś ISO. Tu jeszcze magiczne zaklęcia i gesty:
      pwd
      To polecenie wyświetla w jakim aktualnie folderze jesteś.
      TAB (naciśnięcie tabulatora)
      Sprawdź jak działa tabulator w bashu - to bardzo pomocny gest. Zaklęcia działąją lepiej z użyciem różdżki a shell lepiej działa z tabulatorem. Tabulator "dopełnia" lub listuje (rzuca zaklęcie "ls"), co znacząco przyspiesza robotę. na przykład:
      
      cd /home/tomek/Pobrane - przechodzimy do katalogu "Pobrane" w katalogu domowym użytkownika "tomek"
      ls - listujemy zawartość katalogu "Pobrane"
                               ==> tu zobaczymy listę rzeczy w pobrane i wpisujemy polecenie:
      dd if=[TAB] - naciskamy tabulator i po naciśnięciu [TAB] zobaczymy wynik polecenia ls, po czym kontynuujemy wpisywanie:
      dd if=ar[TAB] - znów naciskamy [TAB] i w tym momencie zostaną wyświetlone wszystkie pliki, które zaczynają się na "ar" a jeśli będzie tylko jeden, to automatycznie zostanie wstawiona jego nazwa w linię poleceń i dostaniemy mniej więcej coś takiego:
      dd if=archlinux-2025.02.01-x86_64.iso - teraz możemy dalej wpisywać polecenie:
      dd if=archlinux-2025.02.01-x86_64.iso of=/dev/sdX bs=4M status=progress
      
      Do tego co oznaczają powyższe polecenia przejdziemy później, ale teraz potrzebne nam jest środowisko uruchomieniowe, dlatego na razie po prostu otwórz terminal (czarne okno czarnej magii), włóż pendrajwa do komputera (tzn. do gniazdlka USB ;)), znajdź jego nazwę i wpisz w terminatu to co jest poniżej.
    • Zastąp X w /dev/sdX nazwą swojego urządzenia USB, czyli /dev/sda lub /dev/sdb, c ,d...

    • Uważaj!
      Upewnij się, że wybierasz właściwe urządzenie!
      sudo dd if="ścieżka i nazwa pobranego obrazu iso" of=/dev/sdX bs=4M status=progress

    • Uruchom z nośnika:
      • Zrestartuj komputer i wejdź do BIOS/UEFI (zwykle naciskając F2, F9, F12, Del lub Esc podczas uruchamiania). Jeśli nie wiesz, to sprawdź w necie jaki klawisz trzeba nacisnąć przy uruchamianiu żeby wejść do BIOSa
      • W niektórych komputerach, szczególnie tych nowszych może być konieczne wyłączenie "Secure boot" [SB]. SB w teorii to bardzo dobra opcja która zapobiega uruchamianiu nieautoryzowanego oprogramowania na komputerze. Niestety w praktyce złodziejskie korporacje - jak np. ta z Redmont, wywierają wpływ na producentów sprzętu i wykorzystują SB do blokowania możliwości instalowania innych systemów operacyjnych na komputerach. Na szczęście dzisiaj jeszcze można wyłączyć SB w BIOSie.
      • Ustaw USB lub CD/DVD jako pierwsze urządzenie startowe.
      • Zapisz zmiany i zrestartuj. System uruchomi się w środowisku Gentoo lub Arch Linux.
      • Jeśli instalujesz w emulowanym środowisku VM, utwórz dysk o pojemności 50GB, wskaż w maszynie wirtualnej pobrany obraz ISO jako napęd CD i uruchom VM. Jakże to uczynić?
      • Zainstaluj QEMU (lub inną maszynę wirtualną)
      • W oknie czarnej magii rzuć zaklęcia:
        cd ~
        - Przejdź do katalogu domowego
        mkdir OOS
        - Utwóż katalog OOS (lub jakiś inny)
        cd OOS
        - Wejdź do katalogu OOS
        qemu-img create -f qcow2 gentoo.img 50G
        Możesz też przekopiować pobrany obraz ISO do tego samego katalogu. W Łindołsie zakładam, że wiecie jak to zrobić. W linuksie i Macu:
        mv ~/Pobrane/obraz.iso ~/OOS/(wpisz właściwą ścieżkę do katalogu popbranych i nazwę pliku ISO)
        Jeśli masz utworzony obraz dysku twardego i pobrany obraz ISO możesz uruchamiać środowisko do budowy własnego portalu czarnej magii:

        Linux:

        qemu-system-x86_64 -m 4G -smp 4 -enable-kvm -cpu host -drive file=gentoo.img -cdrom archlinux.iso -boot order=d -nic user,model=virtio-net-pci,hostfwd=tcp::2222-:22 -display gtk,zoom-to-fit=on -vga virtio -usb -device usb-tablet -drive if=pflash,format=raw,readonly=on,file=/usr/share/OVMF/x64/OVMF_CODE.4m.fd  -drive if=pflash,format=raw,file=/usr/share/OVMF/x64/OVMF_VARS.4m.fd

        Wundows:

        qemu-system-x86_64.exe -m 4G -smp 4 -cpu host -drive file=gentoo.img -cdrom archlinux.iso -boot order=d -nic user,model=virtio-net-pci,hostfwd=tcp::2222-:22 -display gtk,zoom-to-fit=on -vga virtio -usb -device usb-tablet -drive if=pflash,format=raw,readonly=on,file="C:\Program Files\qemu\share\edk2-x86_64-secure-code.fd" -drive if=pflash,format=raw,file="C:\Program Files\qemu\share\edk2-x86_64-vars.fd"
        

        Wyjaśnienie:

        qemu-system-x86_64: wybierz swój typ CPU. Jeśli Twój sprzęt komputer to z Łindołsem, który ma mniej niż 15 lat, to na 99% opcja qemu-system-x86_64 jest dla Ciebie właściwa. Jeśli masz starszy sprzęt z procesorem 32 bitowym, to wybierz qemu-system-i386. Dla starszych makówek z procesoremi Intel wybierz qemu-system-x86_64, dla nowszych (z M2 ,M3 ,M4) qemu-system-aarch64 QEMU potrafi emulować chyba każdy dostępny typ procesora, więc wybierz właściwy.

        Polecenie / Opcja Opis
        Linux
        qemu-system-x86_64 Uruchomienie QEMU w trybie 64-bitowym.
        -m 4G Przydzielenie 4GB RAM.
        -smp 4 Ustawienie 4 rdzeni CPU.
        -enable-kvm Użycie KVM dla lepszej wydajności.
        -cpu host Użycie rzeczywistego procesora hosta.
        -drive file=disk.img,format=qcow2,if=virtio Obraz dysku `disk.img` w formacie QCOW2 z interfejsem VirtIO.
        -cdrom system.iso Obraz ISO `system.iso` jako napęd CD-ROM.
        -boot order=d Bootowanie najpierw z CD-ROM.
        -nic user,model=virtio-net-pci,hostfwd=tcp::2222-:22 Emulacja sieci NAT ze sterownikiem VirtIO, przekierowanie portu 22 na 2222 localhost
        -display gtk,zoom-to-fit=on Uruchomienie QEMU w oknie GTK z automatycznym dopasowaniem rozmiaru.
        -vga virtio Sterownik graficzny VirtIO dla lepszej wydajności.
        -usb -device usb-tablet Poprawiona obsługa myszy w oknie QEMU.
        -drive if=pflash,format=raw,readonly=on,file=/usr/share/OVMF/x64/OVMF_CODE.4m.fd
        -drive if=pflash,format=raw,file=/usr/share/OVMF/x64/OVMF_VARS.4m.fd
        Pliki wsadowe UEFI BIOS
        Windows
        qemu-system-x86_64.exe Uruchomienie QEMU w trybie 64-bitowym na Windows.
        -m 4G Przydzielenie 4GB RAM.
        -smp 4 Ustawienie 4 rdzeni CPU.
        -cpu qemu64 Użycie emulowanego procesora `qemu64` (większa kompatybilność z Windows).
        -drive file=disk.img,format=qcow2,if=ide Obraz dysku `disk.img` w formacie QCOW2 z interfejsem IDE dla większej kompatybilności.
        -cdrom system.iso Obraz ISO `system.iso` jako napęd CD-ROM.
        -boot order=d Bootowanie najpierw z CD-ROM.
        -netdev user,id=net0,hostfwd=tcp::2222-:22 Utworzenie urządzenia sieciowego w trybie użytkownika, przekierowanie portu 22 na 2222 localhost
        -device e1000,netdev=net0 Emulacja karty sieciowej Intel e1000.
        -display sdl Uruchomienie QEMU w oknie SDL (bardziej kompatybilne na Windowsie).
        -vga std Standardowy sterownik graficzny dla większej kompatybilności.
        -usb -device usb-tablet Poprawiona obsługa myszy w oknie QEMU.
        -drive if=pflash,format=raw,readonly=on,file="C:\Program Files\qemu\share\edk2-x86_64-secure-code.fd"
        -drive if=pflash,format=raw,file="C:\Program Files\qemu\share\edk2-x86_64-vars.fd"
        Pliki wsadowe UEFI BIOS


        Poczytaj o QEMU

Z gotowym nośnikiem startowym jesteście gotowi, by zanurzyć się w świecie Linuxa. Niech przygoda się rozpocznie!

Sesja 1: Początek Przygody

Fabuła

Przebudzenie Wiedźminów

Posłanie Starszego Maga

Wiedźmini, po wiekach oczekiwania nadszedł czas, by odbudować potęgę Szarych Brodów.

Każdy z was, młody czarodzieju, musi zrozumieć, że magia opiera się na solidnych fundamentach – Gentoo stanie się waszą tarczą i mieczem. To wy zdecydujecie, jak pokierować mocą swojego systemu. Kroczcie ostrożnie, ale z pewnością siebie, bo wielkie zaklęcia zaczynają się od małych inkantacji.

Właśnie wkroczyliście na ścieżkę wiedźmińskiego rzemiosła, lecz zamiast mikstur i srebrnych mieczy, będziecie zgłębiać tajniki systemów operacyjnych. Waszym pierwszym wyzwaniem będzie opanowanie Gentoo Linux, systemu równie dzikiego i wymagającego jak widłogoni w jaskini. Lecz nie obawiajcie się! Z pomocą mędrców z Kaer Morhen (czyli mnie i tej księgi) odkryjecie każdą tajemnicę tego systemu, od instalacji po konfigurację jądra. Pamiętajcie, młodzi adepci, że Gentoo to nie zabawka.

To potężne narzędzie, które w nieodpowiednich rękach może wyrządzić więcej szkody niż pożytku. Dlatego ważne jest, by podchodzić do niego z należytą ostrożnością i szacunkiem. Nie śpieszcie się, czytajcie instrukcje uważnie i nie wahajcie się pytać, jeśli czegoś nie rozumiecie. W końcu nawet Geralt z Rivii nie urodził się ze znajomością wszystkich znaków i mikstur. Musiał się ich nauczyć, tak jak wy teraz uczycie się Linuxa. A gdy opanujecie Gentoo, żaden system was nie przestraszy! Będziecie mogli tworzyć własne konfiguracje, optymalizować system pod swoje potrzeby i naprawiać problemy, które dla innych są nierozwiązywalne. Staniecie się prawdziwymi wiedźminami systemów, gotowymi stawić czoła każdemu wyzwaniu.

Cele

Plan Sesji

Wprowadzenie Teoretyczne

Linux to system operacyjny o otwartym kodzie źródłowym, który zyskał popularność dzięki swojej elastyczności, bezpieczeństwu i stabilności. Jego hierarchiczna struktura plików pozwala na intuicyjne zarządzanie danymi, a różnorodność narzędzi terminalowych czyni go idealnym zarówno dla serwerów, jak i komputerów osobistych. Linuks z założenia jest systemem zaprojektowanym do pracy w sieci i działa jak sieć.
Katalog /dev reprezentuje urządzenia sprzętowe jako pliki, zwiększając elastyczność w zarządzaniu sprzętem. Operatory takie jak ".", ".." i "~" ułatwiają nawigację po systemie plików. Wyobraź sobie Linuxa jako ogromny kontynent, pełen różnorodnych krain, miast i wiosek, z własnymi zwyczajami, językami i kulturami.

Aby swobodnie podróżować po tym kontynencie, musicie poznać jego mapę – czyli drzewo katalogów i ważnych plików. Na szczycie tej hierarchii znajduje się katalog główny, oznaczony przez "/". Stamtąd wszystkie drogi rozgałęziają się do różnych zakątków systemu.
Drzewo systemu Linuks jest zbiorem katalogów, z których (umownie) każdy jest przeznaczony do czegoś konkretnego. Poniżej jest przedstawione drzewo i krótki opis najważniejszych folderów najwyższego poziomu.


    /
    |-/boot - miejsce na pliki uruchomieniowe (boot loader, jądro)
    |-/dev - folder urządzeń - brzmi dziwnie ale za chwilę się wyjaśni
    |-/etc - folder wszystkich zmiennych systemowych i plików konfiguracyjnych
    |-/home - folder katalogów domowych użytkowników systemowych
    |-/lib - miejsce do trzymania bibliotek systemowych
    |-/mnt - miejsce montowania zasobów
    |-/opt - miejsce do trzymania bibliotek "alternatywnych"
    |-/proc - to wirtualny system plików, który dostarcza informacje o systeie i działających procesach
    |-/root - administrator systemu ma w nim swoje specjalne miejsce
    |-/sys - to wirtualny system plików, który dostarcza interfejs do zarządzania sprzętem
    |-/tmp - miejsce na pliki tymczasowe
    |-/usr - zawiera większość użytkowych programów i bibliotek systemowych, które nie są niezbędne do uruchomienia systemu
    |-/var - skrót od "variable", miejsce na dane, które często się zmieniają podczas pracy systemu
    
Powyższy opis jest pobieżny i w przyszłości wszystko Ci się wyjaśni ale na szczególną uwagę zasługuje katalog /dev.

Pewnie zdecydowana większość z Was jest przyzwyczajona do Łindołsowych literek C:, D:,E: itd. Pewnie nikt z Was już nie pamięta, że były jeszcze A: i B:, które były zarezerwowane dla stacji dyskietek. Podejście w którym, system operacyjny jest "uwiązany" jak pies na dysku sprawdzało się 30 lat temu. I wiem, że możecie pomyśleć, że nie jestem obiektywny bo moim zdaniem gorszy system niż Windows jeszcze się nie pojawił. Jednak najgorsze co jest w tym systemie, to sposób w jaki Windows oddziela warstwę programową od sprzętowej. Z Windowsa nie da się wyjąć dysku C: bo to na nim działa system. Użytkownik na nim trzyma swoje pliki, musi mieć więc prawa administratora do zapisu na dysku. Musi też mieć prawa administratora żeby przesyłać dane do karty dźwiękowej, sieciowej czy graficznej. A jak użytkownik ma prawa administratora, to jest prosty krok w przepaść i to z zamkniętymi oczami, bo każdy proces uruchamiany przez użytkownika, łącznie z wirusami, może te prawa administratora uzyskać. Ten system nigdy nie będzie bezpieczny bo tak jest zaprojektowany. Nie może być bezpieczny, bo nie będzie działał. I generalnie to koniec debaty na temat bezpieczeństwa Windowsa a szystko co dotyczy bezpieczeństwa Windows jest zapychaniem dziur kitem i taśmą klejącą i działa aż nie zacznie cieknąć z innej strony.

Linuks działa w pamięci RAM. Po uruchomieniu komputera najpierw ładowany jest BIOS, który bazpośrednio zarządza sprzętem - decyduje kiedy włączyć pamięć RAM, kiedy włączyć dyski, obudzić procesor, koprocesor, magistrale itd. Potem BIOS szuka partycji uruchomieniowej (zarówno w Windows i Linuks jest taka partycja) i z niej uruchamia bootloader (również wszystkie systemy x86 i x86_64 posiadają bootloadery, ale w Windows bootloader jest ukryty przed użytkownikiem, żeby jeszcze bardziej nie wiedzał co dzieje się w jego komputerze). Bootloader natomiast ma w pliku konfiguracyjnym zapisane opcje uruchomieniowe jądra systemu z parametrami uruchomieniowymi, np.:

linux (hd1,gpt1)/gentoo.img root=/dev/sda3
To mniej więcej znaczy:
Załaduj do RAMu jądro linuksa, które nazywa się gentoo.img i leży na pierwsze partycji pierwszego dysku twardego, z tablicą partycji zapisaną w formacie GPT a potem zamontuj trzecią partycję dysku jako główną partycję drzewa systemowego (/) i kontynuuj proces uruchamiania systemu. Tu jeszcze krótkie wyjaśnienie samego procesu uruchamiania systemu. Po załadowaniu jądra do pamięci jądro jest tylko plikiem w pamięci. Dopiero potem następuje proces dekompresji i lokowania (adresowania) w przestrzeni RAM i rozpoczęcia działania systemu. W trakcie uruchamiania jądra wykrywane są podzezpoły komputera a w katalogu /dev tworzone pliki reprezentujące te podzespoły. Żaden zasób dyskowy jeszcze nie jest zamontowany. Po uruchomieniu jądra w RAMie mamy uruchomiony podstawowy system Linux a dopiero potem system montuje wskazaną w bootloaderze partycję root (/). W następnej kolejności system odczytuje zapisane na dysku ustawienia systemowe np. to, żeby zamontować urządzenie /dev/sda4 jako katalog /usr a partycję /dev/sdb1 jako katalog home. Po zamontowaniu zasobów startowane są (w odpowiedniej kolejności) usługi systemowe (daemony), czyli np. usługa sieciowa, logger systemowy, manager zarządzania sprzętem i wszystkie pozostałe,

Tak więc BIOS ładuje jądro do RAMu i to w nim tworzone jest drzewo katalogów i plików systemowych i w nim pracuje cały system operacyjny. NIE NA DYSKU TWARDYM. Dlatego Linuks nie działa na dysku a w pamięci operacyjnej komputera. Możesz to sobie wyobrazić jako lotnisko towarowe, z wieżą kontroli lotów, w której jądro odbiera przesyłki (dane) z terminala (np. z sieci), patrzy gdzie są zaadresowane lub je adresuje i kieruje do kolejnego terminala (np. na dysk), tak aby dotarły do celu.

Airport
Wspomniałem już, że w Linuxie wszystko jest plikiem, również urządzenia sprzętowe. Dysk twardy, karta sieciowa czy monitor – wszystko można znaleźć w katalogu /dev. Każdy element waszego systemu jest w jednym miejscu - wszystko uporządkowane i łatwo dostępne. A jeśli chcecie szybko przemieszczać się między katalogami, używajcie operatorów ".", "..", "~", ">", "|" i innych poleceń. Są one jak wiedźmińskie znaki, które pozwalają Ci teleportować się w różne miejsca.

Ten jeden drobny szczegół, że w Linuksie wszsystko jest plikiem, sprawia że zdobycie twierdzy, jaką jest system operacyjmny staje się na prawdę sporym wyzwaniem. Dlaczego?

W Linuksie proces uruchomiony przez użytkownika dziedziczy prawa tego użytkownika (uprzednio nadane przez administratora), nie większe. Więc jeśli użytkownik ma prawo dostępu do pliku drukarki (/dev/lp0) i pliku cdrom (/dev/cdrom) to proces uruchomiony przez użytkownika (np. program do nagrywania pły lub edytor tekstu) też ma te prawa i użytkownik może drukować i nagrywać płyty lub słuchać muzyki. Ale w Linuksie twardy dysk też jest plikiem w systemie, CPU jest plikiem, port USB jest plikiem, wszystko jest plikiem i wszystko znajduje się w katalugu /dev. A plikom możemy nadać prawa - prawa odczytu, prawa zapisu, zmienić właściciela i grupy. Więc jeżeli użytkownik "tomek" pobierze złośliwe oprogramowanie, to staje się jego właścicielem, a jeżeli oprogramowanie zarząda dostępu do jakiegokolwiek zasobu, to jądro sprawdza co "tomkowi" wolno i jeżeli "tomek" nie należy do grupy użytkowników, którym wolno korzystać z drukarki, to mówi "Wolnoć Tomku w swoim domku". I to jest to, co betonuje naszą twierdzę.


    /

    |-/dev
    |    |-sda
    |    |   |-sda1
    |    |   |-sda2
    |    |   |-sda3
    |    |   |-sda4
    |    |-sdb
    |        |-sdb1
    |        |-sdb2
    |-/home
        |-tomek
        |-nie_tomek
    

Bo np. użytkownikowi "tomek" (ponieważ Linuks rozróźnia duże i małe litery, przyjęło się używanie małych liter w nazwach użytkowników) administrator może zabrać prawo zapisu do urządzenia /dev/sda1. Może mu również zabrać prawa zapisu gdziekolwiek w systemie poza folderem /home/tomek. A ponieważ każdy proces uruchomiony przez użytkownika dziedziczy jego prawa, to żeden wirus nie będzie miał praw zapisu nigdzie poza katalogiem domowym użytkownika i nawet jeśli w jego folderze roi się od wirusów, to system jest bezpieczny. A usuwając katalog użytkownika pozbywamy się całego syfu z systemu.
Każdy system można jednak zepsuć i o ile bezpieczeństwo Windows opiera się na łataniu dziur, tak w Linuksie system jest bezpieczny ale utalentowany administrator może to skutecznie zmienić ;).

🔥 Porównanie bezpieczeństwa: Windows vs Linux

🔍 Cecha 🪟 Windows 🐧 Linux
Popularność u hakerów 🎯 Wysoka – duży cel 🔍 Mniejsza
Kod źródłowy ❌ Zamknięty – mniej audytowany ✅ Otwarty – więcej oczu na błędy
Automatyczne uruchamianie aplikacji ❌ Możliwe ✅ Wymaga nadania uprawnień
Sterowniki ❌ Zewnętrzne – potencjalne luki ✅ Wbudowane w jądro
Uprawnienia ❌ Łatwe do obejścia (UAC) ✅ Dobre separowanie użytkowników
Dostęp do sprzętu ❌ Skomplikowane API ✅ "Wszystko jest plikiem"

Jeżeli wylistujemy katalog /dev zobaczymy mniej więcej coś takiego:


ls /dev
acpi_thermal_rel  dm-0         fuse       i2c-11  i2c-9         mqueue     nvme0n1p2  ptp0      stdout  tty16  tty27  tty38  tty49  tty6    ttyS12  ttyS23  ttyS6        userio  vcsa3  vga_arbiter
autofs            dm-1         gpiochip0  i2c-12  iio:device0   mtd        nvme0n1p3  pts       tpm0    tty17  tty28  tty39  tty5   tty60   ttyS13  ttyS24  ttyS7        v4l     vcsa4  vhci
block             dma_heap     hidraw0    i2c-13  input         mtd0       nvme0n1p4  random    tpmrm0  tty18  tty29  tty4   tty50  tty61   ttyS14  ttyS25  ttyS8        vcs     vcsa5  vhost-net
btrfs-control     dri          hidraw1    i2c-16  kmsg          mtd0ro     nvme0n1p5  rfkill    tty     tty19  tty3   tty40  tty51  tty62   ttyS15  ttyS26  ttyS9        vcs1    vcsa6  vhost-vsock
bus               drm_dp_aux0  hidraw2    i2c-17  kvm           mtd1       nvme0n1p6  rtc       tty0    tty2   tty30  tty41  tty52  tty63   ttyS16  ttyS27  ttyUSB0      vcs2    vcsu   video0
char              drm_dp_aux1  hidraw3    i2c-2   log           mtd1ro     nvme0n1p7  rtc0      tty1    tty20  tty31  tty42  tty53  tty7    ttyS17  ttyS28  ttyUSB1      vcs3    vcsu1  video1
console           drm_dp_aux2  hpet       i2c-3   loop-control  net        nvme0n1p8  serial    tty10   tty21  tty32  tty43  tty54  tty8    ttyS18  ttyS29  udmabuf      vcs4    vcsu2  video2
core              drm_dp_aux3  hugepages  i2c-4   mapper        ng0n1      nvram      shm       tty11   tty22  tty33  tty44  tty55  tty9    ttyS19  ttyS3   uhid         vcs5    vcsu3  video3
cpu               drm_dp_aux4  hwrng      i2c-5   media0        null       port       snapshot  tty12   tty23  tty34  tty45  tty56  ttyS0   ttyS2   ttyS30  uinput       vcs6    vcsu4  watchdog
cpu_dma_latency   fb0          i2c-0      i2c-6   media1        nvme0      ppp        snd       tty13   tty24  tty35  tty46  tty57  ttyS1   ttyS20  ttyS31  urandom      vcsa    vcsu5  watchdog0
cuse              fd           i2c-1      i2c-7   mei0          nvme0n1    psaux      stderr    tty14   tty25  tty36  tty47  tty58  ttyS10  ttyS21  ttyS4   usb          vcsa1   vcsu6  zero
disk              full         i2c-10     i2c-8   mem           nvme0n1p1  ptmx       stdin     tty15   tty26  tty37  tty48  tty59  ttyS11  ttyS22  ttyS5   userfaultfd  vcsa2   vfio
     

To co widzicie, to pliki, które reprezentują urządzenia w moim laptopie. A ponieważ są to pliki, to na większości z nich możemy wykonywać operacje takie jak na plikach - czyli możemy przepisywać ich zawartość do innych plików lub przesyłać pliki do urzączeń. Prosty przykład?
ffmpeg -i plik.mp4 -f rawvideo -pix_fmt rgb24 > /dev/fb0
Powższe zaklęcie (program ffmpeg) dekompresuje plik.mp4 do "surowego" obrazu i przesyła "wynik" dekompresji do urządenia /dev/fb0, czyli na ekran monitora. cat plik.wav > /dev/snd/controlC0 Powyższe polecenie "zagra" plik dźwiękowy na karcie dźwiękowej, która jest plikiem control0 w katalogu /dev/snd/ . Tu poznajesz też nowe polecenie "cat", które odczytuje zawartość pliku. wpisując: cat plik.txt Na ekranie zobaczysz zawartość pliku plik.txt, ale wpisując:
cat plik.txt > plik2.txt
Skopiujesz zawartość pliku plik.txt do plik2.txt.
A co zrobisz wpisując:
cat /dev/sda > /dev/sdb

Dokładnie tak! Skopiujesz udządzenie sda na urządzenie sdb, o ile to będą pendrajwy, to skopiujesz jeden pendrive na drugi. To oczywiście nieefektywne, bo zakładając że pen ma 32GB a na nim jest plik, który ma 2MB bez sensu jest kopiować 32GB żeby przenieść dwumegowy plik. Ale już przy robieniu backupów twardych dysków takie podejście ma sens, natomiast nie zaklęciem "cat" a wcześniej wspomnianym poleceniem "dd", które służy właśnie do tego celu ponieważ jest "czułe" na błędy odczytu. dd jest popularnym narzędziem przy odzyskiwaniu danych z uszkodzonych nośników.

W Internecie znajdziecie setki opisów zaklęć linuksowych i operatorów we/wy dlatego nie ma najmniejszego sensu powielania tego, co ktoś już zrobił.
I to jest właśnie fajne w otwartych źródłach - wszyscy możecie je zobaczyć, każdy może przeczytać ale nikomu się nie chce. Własnie na tym, że mało komu się chce żerują firmy takie jak Microsoft, Apple i Google robiąc wszystko za użytkownika, którego przy okazji okradają z danych, decyzyjności i samoświadomości, bo kto z Was wie co dzieje się z danymi pod maską Waszego komputera? O tym jak co działa decyduje otwarty kod źródłowy, który każdy może przejrzeć. To jak wiedźmińskie przepisy dostępne dla wszystkich, nie tylko dla wybranych. Każdy może je przeczytać, zmodyfikować i ulepszyć. Dlatego Linux jest tak elastyczny i ciągle się rozwija.

Istnieje wiele różnych dystrybucji Linuxa, tak jak istnieje wiele szkół wiedźmińskich. Każda ma swoje specjalizacje i metody nauczania. Gentoo jest jak Szkoła Wilka, znana z wymagającego szkolenia i skupienia na indywidualnym rozwoju. Arch Linux jest jak Szkoła Kota, ceniąca zwinność i niezależność. Ubuntu jest jak Szkoła Niedźwiedzia, przyjazna dla początkujących i oferująca wiele wsparcia. A metafora "wszystko jest plikiem" jest kluczem do zrozumienia Linuxa. Wyobraźcie sobie, że możecie zmienić jasność monitora, edytując plik tekstowy, lub kontrolować temperaturę procesora, zapisując określoną wartość w innym pliku. W Linuxie wszystko jest możliwe, jeśli zna się odpowiednie polecenia terminala – zaklęcia tego systemu.

Ale o tym już w następnej bajce ;)

Warsztaty

  • Wyświetl bieżący katalog:
    pwd
  • Wyświetl zawartość katalogu ze szczegółami:
    ls -la
  • Przejdź do katalogu nadrzędnego:
    cd ..
  • Utwórz nowy katalog:
    mkdir magic_tower
  • Utwórz nowy plik tekstowy:
    touch magic_tower/save.txt
  • Dodaj zawartość do pliku:
    nano magic_tower/save.txt

Zadanie Domowe

Utwórz dowolną strukturę katalogów odzwierciedlającą hierarchię Twojej osobistej widźmińskiej twierdzy. W każdym utwórz plik opisujący na co jest dany folder.

Przydatne Linki