Interaktywny installer Gentoo Linux z interfejsem TUI (dialog). Przeprowadza za rękę przez cały proces instalacji — od partycjonowania dysku po działający desktop KDE Plasma / GNOME.
Pobierz Gentoo Live GUI ISO (ma dialog, git, sterowniki WiFi — wszystko co trzeba):
- https://www.gentoo.org/downloads/ → amd64 → LiveGUI USB Image
Nagraj na pendrive (Linux/macOS):
# UWAGA: /dev/sdX to twój pendrive, nie dysk systemowy!
sudo dd if=livegui-amd64-*.iso of=/dev/sdX bs=4M status=progress
syncNa Windows użyj Rufus lub balenaEtcher.
- Wejdź do BIOS/UEFI (zwykle F2, F12, Del przy starcie)
- Secure Boot — możesz wyłączyć lub zostawić włączony (installer obsługuje MOK signing)
- Ustaw boot z USB
- Wybierz opcję UEFI (nie Legacy/CSM!)
Powinno działać od razu. Sprawdź:
ping -c 3 gentoo.orgOpcja A: iwctl (iwd) — dostępny na większości live ISO:
iwctl
# W interaktywnej konsoli iwctl:
station wlan0 scan
station wlan0 get-networks
station wlan0 connect "NazwaTwojejSieci"
# Wpisz hasło WiFi gdy zapyta
exitOpcja B: nmcli (NetworkManager) — dostępny na Gentoo LiveGUI:
nmcli device wifi list
nmcli device wifi connect 'NazwaTwojejSieci' password 'TwojeHaslo'Opcja C: wpa_supplicant — zawsze dostępny, bardziej manualny:
# Znajdź interfejs WiFi
ip link show
# Włącz interfejs
ip link set wlan0 up
# Połącz
wpa_supplicant -B -i wlan0 -c <(wpa_passphrase "NazwaTwojejSieci" "TwojeHaslo")
dhcpcd wlan0Sprawdź połączenie:
ping -c 3 gentoo.orgLive ISO może mieć przestarzały zegar (np. z 2021 roku). Bez poprawnej daty SSL nie zadziała i git clone / emerge będą failować.
# Sprawdź aktualną datę
date
# Jeśli data jest nieprawidłowa, ustaw ręcznie (wstaw aktualną datę):
date -s "2026-02-25 09:00:00"sudo su
git clone https://github.com/szoniu/gentoo.git
cd gentoo
./install.shBłąd SSL przy
git clone? Najprawdopodobniej zły zegar systemowy — wróć do kroku 4.
Permission denied (publickey)? Użyj adresu HTTPS (jak wyżej), nie SSH (git@github.com:...). Live ISO nie ma Twoich kluczy SSH.
Installer poprowadzi Cię przez 18 ekranów konfiguracji, a potem zainstaluje wszystko automatycznie.
Po zakończeniu installer zapyta czy chcesz rebootować. Wyjmij pendrive i uruchom komputer — powinieneś zobaczyć GRUB, a potem ekran logowania SDDM (KDE Plasma) lub GDM (GNOME).
Po zalogowaniu — aktualizacja systemu i pakietów:
sudo emerge --sync # synchronizacja drzewa Portage
sudo emerge -avuDN @world # aktualizacja wszystkich pakietów
sudo emerge --depclean # usunięcie nieużywanych zależnościUWAGA: Flagi muszą być wielkie:
-D(deep),-N(newuse). Małe-d(debug) i-n(noreplace) robią coś zupełnie innego!
# Tylko konfiguracja (generuje plik .conf, nic nie instaluje)
./install.sh --configure
# Instalacja z gotowego configa (bez wizarda)
./install.sh --config moj-config.conf --install
# Wznów po awarii (skanuje dyski w poszukiwaniu checkpointów)
./install.sh --resume
# Dry-run — przechodzi cały flow BEZ dotykania dysków
./install.sh --dry-run
# Z presetu (np. dla kolegi z NVIDIA + systemd)
./install.sh --config presets/desktop-nvidia-systemd.conf --install- Komputer z UEFI (nie Legacy BIOS)
- Secure Boot wyłączony (lub włączony — installer obsługuje MOK signing)
- Minimum 60 GiB wolnego miejsca na dysku docelowym
- Połączenie z internetem (LAN lub WiFi)
- Bootowalny pendrive z Gentoo Live ISO (lub dowolne live z
dialogigit)
18 ekranów TUI prowadzi przez:
| # | Ekran | Co konfigurujesz |
|---|---|---|
| 1 | Welcome | Sprawdzenie wymagań (root, UEFI, sieć) |
| 2 | Preset | Opcjonalne załadowanie gotowej konfiguracji |
| 3 | Hardware | Podgląd wykrytego CPU, GPU, dysków, zainstalowanych OS-ów |
| 4 | Init system | systemd (zalecany dla KDE/GNOME) lub OpenRC |
| 5 | Dysk | Wybór dysku + schemat (auto/dual-boot/manual), shrink wizard dla dual-boot |
| 6 | Filesystem | ext4 / btrfs (ze snapshotami) / XFS |
| 7 | Swap | zram (domyślnie) / partycja / plik / brak |
| 8 | Sieć | Hostname + mirror Gentoo |
| 9 | Locale | Timezone, język, keymap |
| 10 | Desktop | KDE Plasma / GNOME / brak (server/minimal) |
| 11 | Kernel | dist-kernel (szybki) lub genkernel (custom); surface-kernel na Surface |
| 12 | Secure Boot | MOK signing — generowanie kluczy, podpisywanie kerneli, shim |
| 13 | GPU | Auto-wykryty sterownik + możliwość zmiany (hybrid GPU / PRIME) |
| 14 | Aplikacje desktopowe | Wybór aplikacji dla KDE/GNOME (Dolphin, Firefox, Kate...) |
| 15 | Użytkownicy | Hasło root, konto użytkownika, grupy |
| 16 | Pakiety | Dodatkowe pakiety + peryferia (fingerprint, thunderbolt, Hyprland ecosystem, Noctalia Shell...) |
| 17 | Preset save | Opcjonalny eksport konfiguracji na przyszłość |
| 18 | Podsumowanie | Pełny przegląd + potwierdzenie "YES" |
- Microsoft Surface — auto-detekcja urządzeń Surface (Pro, Book, Laptop, Go...). Dedykowany kernel z patchami
linux-surface, daemoniptsd(touchscreen/rysik),surface-control(hardware). Opcje kernela Surface pojawiają się automatycznie w wizardzie. - Hybrid GPU (NVIDIA Optimus / PRIME) — auto-detekcja laptopów z dwoma GPU (iGPU + dGPU). Konfiguracja PRIME render offload,
prime-run, runtime power management. - ASUS ROG / TUF — auto-detekcja płyt ASUS ROG/TUF. Opcjonalna instalacja
asusctl+supergfxctlz overlay zGentoo. - Secure Boot (MOK signing) — generowanie kluczy MOK, podpisywanie kerneli przez
sbsign, instalacja shim, automatyczny enrollment. Działa z GRUB i dual-boot. - Auto-detekcja peryferiów — installer wykrywa i oferuje sterowniki/daemony dla: czytnik linii papilarnych (
fprintd), Thunderbolt (bolt), sensory IIO (akcelerometr, żyroskop, ALS), kamera (v4l-utils), modem WWAN/LTE (ModemManager). - Noctalia Shell — opcjonalny shell do compositorów Wayland (Hyprland/Niri/Sway), instalowany z repozytorium GURU.
Installer automatycznie:
- Wykrywa zainstalowane OS-y (Windows, openSUSE, Ubuntu, Fedora, etc.)
- Wykrywa istniejący ESP z Windows Boot Manager i innymi bootloaderami
- Reuse'uje ESP (nigdy go nie formatuje!)
- Oferuje shrink wizard — interaktywne zmniejszanie istniejącej partycji (NTFS/ext4/btrfs/xfs) żeby zrobić miejsce na Gentoo
- GRUB instaluje się do
EFI/Gentoo/obokEFI/Microsoft/i innych os-proberdodaje wszystkie wykryte OS-y do menu GRUB- Partycje z istniejącymi OS-ami są oznaczone w menu — przypadkowe nadpisanie wymaga potwierdzenia
ERASE - Po instalacji weryfikuje czy GRUB i wpisy EFI zawierają wszystkie OS-y
Wystarczy wybrać "Dual-boot" w ekranie partycjonowania. Opcja pojawia się automatycznie gdy installer wykryje inny OS na dysku.
Gotowe presety w presets/:
presets/desktop-nvidia-systemd.conf # NVIDIA + systemd + ext4
presets/desktop-amd-openrc.conf # AMD + OpenRC + btrfs
presets/desktop-intel-systemd.conf # Intel + systemd + ext4
Presety są przenośne między maszynami — wartości sprzętowe (CPU, GPU, dysk) są automatycznie re-wykrywane przy imporcie. Czyli: konfigurujesz raz, instalujesz na wielu komputerach.
Możesz też wyeksportować własny preset w ekranie 17 wizarda.
Gdy komenda się nie powiedzie, installer wyświetli menu recovery:
- (r)etry — ponów komendę (np. po naprawieniu problemu w shellu)
- (s)hell — wejdź do shella, napraw ręcznie, wpisz
exitżeby wrócić - (c)ontinue — pomiń ten krok i kontynuuj (ostrożnie!)
- (a)bort — przerwij instalację
Jeśli instalacja została przerwana (OOM kill, zawieszenie, utrata SSH, przerwa w prądzie), możesz wznowić jedną komendą:
./install.sh --resume--resume automatycznie:
- Skanuje wszystkie partycje (ext4/btrfs/xfs) w poszukiwaniu danych z poprzedniej instalacji
- Odzyskuje checkpointy (informacje o ukończonych fazach) i plik konfiguracji
- Pomija już ukończone fazy i kontynuuje od miejsca przerwania
Co przetrwało na dysku docelowym:
- Checkpointy — pliki w
/tmp/gentoo-installer-checkpoints/na partycji docelowej - Config —
/tmp/gentoo-installer.confna partycji docelowej (zapisywany po fazie partycjonowania)
Jeśli config nie zostanie znaleziony (np. awaria nastąpiła przed partycjonowaniem), --resume poprosi o ponowne przejście wizarda konfiguracyjnego — ale ukończone fazy instalacji nadal zostaną pominięte.
Ręczna alternatywa (jeśli --resume nie zadziała):
# 1. Zamontuj dysk docelowy
mount /dev/sdX2 /mnt/gentoo
# 2. Skopiuj checkpointy
cp -a /mnt/gentoo/tmp/gentoo-installer-checkpoints/* /tmp/gentoo-installer-checkpoints/
# 3. Skopiuj config (jeśli istnieje)
cp /mnt/gentoo/tmp/gentoo-installer.conf /tmp/gentoo-installer.conf
# 4. Odmontuj i uruchom normalnie
umount /mnt/gentoo
./install.shPodczas instalacji masz dostęp do wielu konsol. Przełączaj się przez Ctrl+Alt+F1...F6:
- TTY1 — installer (tu lecą kompilacje)
- TTY2-6 — wolne konsole do debugowania
Na drugim TTY możesz:
# Podgląd co się kompiluje w czasie rzeczywistym
top
# Log installera
tail -f /tmp/gentoo-installer.log # przed chroot
tail -f /mnt/gentoo/tmp/gentoo-installer.log # w chroot
# Log genkernel (jeśli wybrałeś genkernel)
tail -f /mnt/gentoo/var/log/genkernel.log
# Sprawdź czy coś nie zawiesiło się
ps aux | grep -E "tee|emerge|make"Możesz odpalić instalację zdalnie — uruchom SSH na Live ISO, połącz się z innego komputera i odpal installer przez SSH. To pozwala wygodnie monitorować instalację, kopiować/wklejać, a nawet odejść od maszyny docelowej.
Na maszynie docelowej (bootowanej z Live ISO), otwórz konsolę (TTY lub terminal) i:
# 1. Ustaw hasło root (Live ISO domyślnie nie ma hasła)
passwd root
# 2. Ustaw datę (Live ISO może mieć przestarzały zegar — SSL nie zadziała)
date -s "2026-02-25 09:00:00" # wstaw aktualną datę
# 3. Uruchom sshd
# Gentoo LiveGUI (OpenRC):
rc-service sshd start
# Jeśli live ISO ma systemd:
systemctl start sshd
# 4. Sprawdź IP
ip -4 addr show | grep inet# Połącz się (wyłączamy klucze SSH, bo Live ISO ich nie ma — łączymy hasłem)
ssh -o PubkeyAuthentication=no root@<IP-live-ISO>
# Sklonuj repo i uruchom installer
git clone https://github.com/szoniu/gentoo.git
cd gentoo
./install.shInstaller działa normalnie przez SSH — dialog TUI renderuje się w terminalu SSH.
"Connection refused"? Sprawdź czy
sshddziała na Live ISO:rc-service sshd status."Encrypted private OpenSSH key detected"? Twój klient SSH próbuje użyć zaszyfrowanego klucza. Użyj flagi
-o PubkeyAuthentication=nojak wyżej, żeby wymusić hasło.Nie możesz się połączyć mimo poprawnego IP? Upewnij się, że oba komputery są w tej samej sieci. Sieci gościnne (Guest WiFi) są zazwyczaj izolowane od firmowego LAN-u. Podłącz oba urządzenia do tej samej sieci.
"WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED"? Po restarcie Live ISO klucze SSH hosta się zmieniają. Usuń stary klucz i połącz się ponownie:
ssh-keygen -R <IP-live-ISO> ssh -o PubkeyAuthentication=no root@<IP-live-ISO>
Ważne: Instalacja Gentoo trwa długo (kompilacja kernela, KDE). Jeśli połączenie SSH się zerwie, instalacja w zwykłej sesji zostanie przerwana. Zawsze uruchamiaj installer w tmux:
# Na Live ISO (po połączeniu SSH):
tmux new -s install
# Sklonuj repo i uruchom installer wewnątrz tmux
git clone https://github.com/szoniu/gentoo.git
cd gentoo
./install.shJeśli połączenie SSH się zerwie:
# Połącz się ponownie i wróć do sesji
ssh root@<IP-live-ISO>
tmux attach -t installInstalacja będzie nadal działać w tle — nic nie stracisz.
tmux nie jest zainstalowany? Na Gentoo Live ISO zazwyczaj jest. Jeśli nie:
emerge --quiet app-misc/tmuxlub użyjscreen(screen -S install, powrót:screen -r install).
Otwórz drugie okno terminala i połącz się ponownie (lub użyj drugiego panelu tmux — Ctrl+B potem "):
ssh root@<IP-live-ISO>
# Logi w czasie rzeczywistym
tail -f /tmp/gentoo-installer.log # przed chroot
tail -f /mnt/gentoo/tmp/gentoo-installer.log # w chroot
# Log genkernel (jeśli wybrałeś genkernel)
tail -f /mnt/gentoo/var/log/genkernel.log
# Co się kompiluje
top
# OOM killer
dmesg | grep -i "oom\|killed"git clone— SSL certificate not yet valid — zegar systemowy jest przestarzały. Ustaw datę:date -s "2026-02-25 09:00:00"(wstaw aktualną).git clone— Permission denied (publickey) — użyj HTTPS:git clone https://github.com/szoniu/gentoo.git, nie SSH (git@github.com:...).nmclinie łączy z WiFi — użyj single quotes zamiast double quotes:nmcli device wifi connect 'MojaSiec' password 'MojeHaslo'. Double quotes mogą łamać się na znakach specjalnych w SSID/haśle.- Preflight: "Network connectivity required" — installer pinguje
gentoo.orgigoogle.com. Jeśli sieć działa ale DNS nie, dodaj ręcznie:echo "nameserver 8.8.8.8" >> /etc/resolv.conf. Installer próbuje to naprawić automatycznie, ale na świeżym Live ISO DNS może nie być skonfigurowany.
emerge— "Temporary failure in name resolution" — DNS przestał działać. Na innym TTY (Ctrl+Alt+F2) wpisz:echo "nameserver 8.8.8.8" >> /etc/resolv.conf, wróć na TTY1 i wybierzr(retry).chronyd -q— "No suitable source for synchronisation" — zegar nie zsynchronizował się z NTP. Nie krytyczne jeśli data jest w miarę poprawna. Wybierz Continue.- Installer zawisł, nic się nie dzieje — sprawdź na TTY2 (
Ctrl+Alt+F2) czycc1/gcc/makedziałają wtop. Jeśli tak — kompilacja trwa, po prostu czekaj. Gentoo kompiluje WSZYSTKO ze źródeł. Kernel: 20-60 min. KDE Plasma / GNOME: 1-4h. - Przerwa w prądzie / reboot — uruchom installer ponownie, zapyta czy wznowić od ostatniego checkpointu. Fazy takie jak kompilacja kernela czy @world nie będą powtarzane.
- Menu "retry / shell / continue / abort" — installer napotkał błąd.
r= spróbuj ponownie,s= otwórz shell i napraw ręcznie (potemexit),c= pomiń ten krok,a= przerwij instalację.
- Log — pełny log instalacji:
/tmp/gentoo-installer.log(przed chroot) i/mnt/gentoo/tmp/gentoo-installer.log(w chroot) - Coś jest nie tak z konfiguracją — użyj
./install.sh --configureżeby przejść wizarda ponownie
Installer ma trzy backendy TUI (w kolejności priorytetu):
- gum (domyślny) — nowoczesny, zaszyty w repo jako
data/gum.tar.gz(~4.5 MB). Ekstraowany automatycznie do/tmpna starcie. Zero dodatkowych zależności. - dialog — klasyczny TUI, dostępny na większości live ISO
- whiptail — fallback gdy brak
dialog
Backend jest wybierany automatycznie. Żeby wymusić fallback na dialog/whiptail:
GUM_BACKEND=0 ./install.shŻeby zaktualizować bundlowaną wersję gum:
# 1. Pobierz nowy tarball (podmień wersję)
curl -fSL -o data/gum.tar.gz \
"https://github.com/charmbracelet/gum/releases/download/v0.18.0/gum_0.18.0_Linux_x86_64.tar.gz"
# 2. Zaktualizuj GUM_VERSION w lib/constants.sh (musi pasować do nazwy podkatalogu w tarballi)
# : "${GUM_VERSION:=0.18.0}"Własne skrypty uruchamiane przed/po fazach instalacji:
cp hooks/before_install.sh.example hooks/before_install.sh
chmod +x hooks/before_install.sh
# Edytuj hook...Dostępne hooki: before_install, after_install, before_disks, after_disks, before_kernel, after_kernel, itd.
./install.sh [OPCJE] [POLECENIE]
Polecenia:
(domyślnie) Pełna instalacja (wizard + install)
--configure Tylko wizard konfiguracyjny
--install Tylko instalacja (wymaga configa)
--resume Wznów po awarii (skanuje dyski)
Opcje:
--config PLIK Użyj podanego pliku konfiguracji
--dry-run Symulacja bez destrukcyjnych operacji
--force Kontynuuj mimo nieudanych prereq
--non-interactive Przerwij na każdym błędzie (bez recovery menu)
--help Pokaż pomoc
Zmienne środowiskowe:
GUM_BACKEND=0 Wymuś fallback na dialog/whiptail (pomiń gum)
bash tests/test_config.sh # Config round-trip
bash tests/test_hardware.sh # CPU march + GPU database
bash tests/test_disk.sh # Disk planning dry-run
bash tests/test_makeconf.sh # make.conf generation
bash tests/test_checkpoint.sh # Checkpoint validate + migrate
bash tests/test_resume.sh # Resume from disk scanning + recovery
bash tests/test_multiboot.sh # Multi-boot OS detection + serialization
bash tests/test_infer_config.sh # Config inference from installed system
bash tests/test_hybrid_gpu.sh # Hybrid GPU + ASUS ROG detection
bash tests/test_validate.sh # Config validation before install
bash tests/test_surface.sh # Surface detection, kernel types, inference
bash tests/test_peripherals.sh # Peripheral detection + inference
bash tests/test_shrink.sh # Shrink wizard partition resizinginstall.sh — Główny entry point
configure.sh — Wrapper: tylko wizard TUI
gentoo.conf.example — Przykładowa konfiguracja z komentarzami
lib/ — Moduły biblioteczne (sourcowane, nie uruchamiane)
├── secureboot.sh — Secure Boot MOK signing (keygen, sbsign, shim, enrollment)
├── desktop.sh — KDE Plasma / GNOME, SDDM/GDM, PipeWire, GPU drivers
└── ... — hardware, disk, kernel, portage, config, etc.
tui/ — Ekrany TUI (każdy = funkcja, return 0/1/2)
data/ — Bazy danych, motyw TUI, bundled gum binary
presets/ — Gotowe presety
hooks/ — Hooki (*.sh.example)
tests/ — Testy
TODO.md — Planowane ulepszenia
P: Jak długo trwa instalacja?
Zależy od CPU i łącza. dist-kernel (binarny) to ~30-60 min. genkernel (kompilacja) to 1-3h. Kompilacja KDE Plasma / GNOME to dodatkowe 1-4h.
P: Mogę zainstalować na VM?
Tak, ale upewnij się że VM jest w trybie UEFI. W VirtualBox: Settings → System → Enable EFI. W QEMU: dodaj -bios /usr/share/ovmf/OVMF.fd.
P: Co jeśli mam Secure Boot?
Installer obsługuje Secure Boot przez MOK (Machine Owner Key) signing. W ekranie 12 wizarda możesz włączyć generowanie kluczy MOK, automatyczne podpisywanie kerneli i konfigurację shim. Po pierwszym restarcie MokManager poprosi o zatwierdzenie klucza (hasło: gentoo). Alternatywnie możesz wyłączyć Secure Boot w BIOS.
P: Mogę użyć innego live ISO niż Gentoo?
Tak, dowolne live ISO z Linuxem zadziała, pod warunkiem że ma bash, git, sfdisk, wget, gpg. Installer ma zaszyty gum jako backend TUI, więc dialog/whiptail nie jest wymagany. Ubuntu/Fedora live zazwyczaj mają wszystko albo można doinstalować.
P: Co jeśli gum nie działa?
Installer automatycznie użyje dialog lub whiptail jako fallback. Możesz też wymusić fallback: GUM_BACKEND=0 ./install.sh. Na większości live ISO dialog jest dostępny domyślnie, a jeśli nie: apt install dialog (Debian/Ubuntu), pacman -S dialog (Arch), dnf install dialog (Fedora).
P: Mam multi-boot (kilka Linuxów). Po aktualizacji kernela inne systemy zniknęły z GRUB. Ostatni zainstalowany GRUB jest master bootloaderem. Po aktualizacji kernela w dowolnym systemie trzeba odświeżyć GRUB:
sudo grub-mkconfig -o /boot/grub/grub.cfgWystarczy uruchomić z dowolnego systemu, który ma GRUB + os-prober. Jeśli używasz ~/dotfiles aktualizatora, robi to automatycznie.
P: Zapomniałem odświeżyć GRUB i po restarcie nie widzę innych systemów. Systemy dalej są na dysku — nic nie zostało usunięte. Wystarczy:
- Uruchom dowolny z widocznych systemów
- Upewnij się że
os-proberjest zainstalowany (emerge sys-boot/os-prober/xbps-install os-prober/apk add os-prober) - Uruchom
sudo grub-mkconfig -o /boot/grub/grub.cfg - Restart — wszystkie systemy powinny być widoczne
Jeśli żaden system nie startuje (uszkodzony GRUB), boot z Live USB i napraw z chroot:
mount /dev/<root-partycja> /mnt
mount /dev/<esp> /mnt/efi
mount --rbind /dev /mnt/dev && mount --rbind /sys /mnt/sys && mount -t proc /proc /mnt/proc
chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg