"Każdy początek jest trudny, lecz tylko najodważniejsi sięgają po swoją moc."
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:
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:
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.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.dd w terminalu:
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.
/dev/sdX nazwą swojego urządzenia USB, czyli /dev/sda lub /dev/sdb, c ,d... sudo dd if="ścieżka i nazwa pobranego obrazu iso" of=/dev/sdX bs=4M status=progress
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 BIOSacd ~ - 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:
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
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"
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 |
Z gotowym nośnikiem startowym jesteście gotowi, by zanurzyć się w świecie Linuxa. Niech przygoda się rozpocznie!
Przebudzenie Wiedźminów
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.
.
Kropka oznacza bieżący katalog. Po co? W linuksie czasami trzeba podać pełą ścieżkę do pliku. Jeśli jesteśmy już w katalogu, w którym chcemy wykonać jakiś plik nie musimy wpisywać:
python /mnt/USB1/katalog1/katalog2/skrypt.py
tylko piszemy:
python ./skrypt.py
..
Dwie kropki oznaczają katalog nadrzędny. Działa to podobnie jak jedna kropka. Np. jeżeli potrzebujemy przekopiować plik z katalogu o dwa poziomy wyżej, możemy użyć składni:
cp ../../plik.iso .
Powyższe zaklęcie kopiuje plik.iso z poziomu dwa razy wyższego (../../) w obecną lokalizację (.)
~
cat, head, hexdump.pwd
ls
cd
touch
mkdir
rm
cp
mv
hexdump
head
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: 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.

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ć ;).
| 🔍 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" |