Interaktywny installer Alpine Linux z interfejsem TUI (dialog). Przeprowadza za reke przez caly proces instalacji — od partycjonowania dysku po dzialajacy desktop KDE Plasma, GNOME, XFCE, Sway lub niri.
Alpine Linux: musl libc + OpenRC + apk + minimalistyczny i bezpieczny. Binarne paczki, instalacja w ~10-20 minut. Najlzejsza dystrybucja z pelnym wsparciem desktop.
Pobierz Alpine Linux ISO:
- https://alpinelinux.org/downloads/ -> Extended (zalecany, ma firmware i dodatkowe narzedzia)
Nagraj na pendrive:
# UWAGA: /dev/sdX to pendrive, nie dysk systemowy!
sudo dd if=alpine-extended-*.iso of=/dev/sdX bs=4M status=progress
syncNa Windows: Rufus lub balenaEtcher.
- BIOS/UEFI: F2, F12, lub Del przy starcie
- Wylacz Secure Boot
- Boot z USB w trybie UEFI
- Login:
root(bez hasla)
Powinno dzialac od razu:
ping -c 3 alpinelinux.orgwpa_supplicant (dostepny na Alpine Live):
# Wlacz interfejs
ip link set wlan0 up
# Skanuj sieci
iwlist wlan0 scan | grep ESSID
# Polacz
wpa_passphrase 'NazwaSieci' 'TwojeHaslo' > /etc/wpa_supplicant.conf
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
udhcpc -i wlan0setup-interfaces (interaktywne narzedzie Alpine):
setup-interfacesSprawdz: ping -c 3 alpinelinux.org
Live ISO moze miec nieprawidlowa date systemowa. Ustaw ja przed klonowaniem repo:
date -s "2026-04-10 12:00:00"Bez poprawnej daty git clone moze nie dzialac (blad SSL "certificate is not yet valid").
apk add bash git
git clone https://github.com/szoniu/alpine.git
cd alpine
./install.shAlbo bez git:
apk add bash
wget -O- https://github.com/szoniu/alpine/archive/main.tar.gz | tar xz
cd alpine-main
./install.shWyjmij pendrive, reboot. Zobaczysz bootloader (GRUB), potem ekran logowania (SDDM/GDM/LightDM/greetd zaleznie od DE).
Po zalogowaniu — aktualizacja systemu i pakietow:
doas apk upgradeInstalacja nowych pakietow:
doas apk add pakiet# Tylko konfiguracja (generuje plik .conf, nic nie instaluje)
./install.sh --configure
# Instalacja z gotowego configa (bez wizarda)
./install.sh --config moj-config.conf --install
# Wznow po awarii (skanuje dyski w poszukiwaniu checkpointow)
./install.sh --resume
# Dry-run — przechodzi caly flow BEZ dotykania dyskow
./install.sh --dry-run
# Z presetu (np. dla kolegi z AMD)
./install.sh --config presets/desktop-amd.conf --install- Komputer z UEFI (nie Legacy BIOS)
- Secure Boot wylaczony
- Minimum 10 GiB wolnego miejsca na dysku (4 GiB dla console-only)
- Internet (LAN lub WiFi)
- Alpine Linux Live ISO (Extended zalecany);
dialog/whiptailopcjonalny — installer ma zaszytygum
| # | Ekran | Co konfigurujesz |
|---|---|---|
| 1 | Welcome | Sprawdzenie wymagan (root, UEFI, siec) |
| 2 | Preset | Opcjonalne zaladowanie gotowej konfiguracji |
| 3 | Hardware | Podglad wykrytego CPU, GPU (hybrid), dyskow, peryferiow, Windows/Linux |
| 4 | Dysk | Wybor dysku + schemat (auto/dual-boot/manual) |
| 5 | Filesystem | ext4 / btrfs / XFS + opcjonalne LUKS szyfrowanie |
| 6 | Swap | zram / partycja / brak |
| 7 | Siec | Hostname |
| 8 | Locale | Timezone + keymap |
| 9 | Bootloader | GRUB (jedyna opcja) |
| 10 | Kernel | LTS / Edge |
| 11 | GPU | AMD (RADV) / Intel (ANV) / NVIDIA (nouveau, open-source) |
| 12 | Desktop | KDE Plasma / GNOME / XFCE / Sway / niri / brak (console) |
| 13 | Uzytkownicy | Root, user, grupy, SSH |
| 14 | Pakiety | Dodatkowe pakiety apk + Hyprland / niri ecosystem + opcje sprzetowe |
| 15 | Preset save | Eksport konfiguracji |
| 16 | Podsumowanie | Przeglad + potwierdzenie YES + countdown |
Po potwierdzeniu installer:
- Partycjonuje dysk (opcjonalnie z LUKS)
- Instaluje system bazowy (
apk --root --initdb) - Wchodzi do chroota
- Instaluje kernel, bootloader, wybrane DE
- Konfiguruje system (timezone, hostname, uzytkownicy, OpenRC services)
- Wlacza uslugi OpenRC (SDDM/GDM/LightDM/greetd, NetworkManager, elogind, etc.)
| DE | Display Manager | Opis |
|---|---|---|
| KDE Plasma | SDDM | Pelny desktop z Konsole, Dolphin, PipeWire |
| GNOME | GDM | Nowoczesny desktop z Nautilus, GNOME Terminal |
| XFCE | LightDM | Lekki tradycyjny desktop z Thunar, Mousepad |
| Sway | greetd | Tiling Wayland compositor (i3-compatible) z foot, waybar, wofi |
| niri | greetd | Scrollable-tiling Wayland compositor z foot, waybar, fuzzel |
| brak | — | Tylko konsola (serwer, router, kontener) |
niri to scrollable-tiling Wayland compositor napisany w Rust. Dostepny w Alpine community repo od v3.23. Instalacja:
apk add niri niri-portalsconfInstaller automatycznie konfiguruje niri z greetd (login manager), waybar, fuzzel (launcher), mako (powiadomienia), foot (terminal).
- Auto-wykrywanie ESP z Windows Boot Manager i innych Linuksow
- ESP nigdy nie jest formatowany przy reuse
- GRUB + os-prober automatycznie widzi Windows
- Wizard do zmniejszania partycji jesli brak wolnego miejsca (NTFS, ext4, btrfs)
- Ostrzezenia o istniejacych OS-ach na wybranych partycjach
presets/desktop-amd.conf # AMD + ext4 + GRUB
presets/desktop-intel.conf # Intel + btrfs + GRUB
presets/desktop-nvidia-open.conf # NVIDIA (open) + LUKS + GRUB
Presety przenosne — sprzet re-wykrywany przy imporcie.
Live ISO ma zla date. Napraw:
date -s "2026-04-10 12:00:00"echo "nameserver 8.8.8.8" >> /etc/resolv.confInstaller probuje to naprawic automatycznie (ensure_dns), ale jesli nie — dodaj recznie.
Na Alpine Live mozesz podlaczyc sie przez SSH z innego komputera:
# Na Live ISO:
passwd root # Ustaw haslo roota
rc-service sshd start # Uruchom SSH (OpenRC)
# Sprawdz IP:
ip -4 addr show | grep inetZ innego komputera:
ssh -o PubkeyAuthentication=no root@ADRES_IPUwaga: Jesli laptop jest na innej sieci (np. WiFi dla gosci), SSH nie zadziala. Oba urzadzenia musza byc w tej samej sieci LAN.
Tip: Po restarcie Live ISO klucz SSH sie zmienia. Jesli
sshodmawia polaczenia ("WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED"), uruchom:ssh-keygen -R ADRES_IP
Wazne: Jesli polaczenie SSH sie zerwie, instalacja w zwyklej sesji zostanie przerwana. Zawsze uruchamiaj installer w tmux:
# Na Live ISO (po polaczeniu SSH):
apk add tmux
tmux new -s install
# Sklonuj repo i uruchom installer wewnatrz tmux
git clone https://github.com/szoniu/alpine.git
cd alpine
./install.shJesli polaczenie SSH sie zerwie:
# Polacz sie ponownie i wroc do sesji
ssh -o PubkeyAuthentication=no root@ADRES_IP
tmux attach -t installInstalacja bedzie nadal dzialac w tle — nic nie stracisz.
Podczas instalacji masz dostep do wielu konsol. Przelaczaj sie przez Ctrl+Alt+F1...F6:
- TTY1 — installer (tu leci instalacja)
- TTY2-6 — wolne konsole do debugowania
Na drugim TTY mozesz:
# Podglad co sie dzieje w czasie rzeczywistym
top
# Log installera
tail -f /tmp/alpine-installer.log # przed chroot
tail -f /media/root/tmp/alpine-installer.log # w chroot
# Sprawdz czy cos nie zawieszilo sie
ps aux | grep -E "tee|apk|mkinitfs"- Blad — menu: Retry / Shell / Continue / Log / Abort
- Awaria — checkpointy faz, wznowienie od ostatniego kroku
- Log —
/tmp/alpine-installer.log - Wznowienie — po awarii/restarcie:
./install.sh --resumeskanuje dyski, odzyskuje config i checkpointy, i wznawia od ostatniego ukonczonego kroku
| Alpine | Chimera | Gentoo | NixOS | |
|---|---|---|---|---|
| Czas | ~10-20 min | ~15-30 min | 3-8h | ~15-30 min |
| Pakiety | apk (binarne) | apk (binarne) | emerge (ze zrodel) | nix (binarne) |
| Init | OpenRC | dinit | systemd/OpenRC | systemd |
| libc | musl | musl | glibc | glibc |
| GPU | open-source | open-source | proprietary OK | proprietary OK |
| Desktopy | 6 opcji | 2 opcje | 2 opcje | 2 opcje |
| Min. dysk | 4-10 GiB | 20 GiB | 60 GiB | 20 GiB |
Installer ma trzy backendy TUI (w kolejnosci priorytetu):
- gum (domyslny) — nowoczesny, zaszyty w repo jako
data/gum.tar.gz(~4.5 MB). Ekstraowany automatycznie do/tmpna starcie. Zero dodatkowych zaleznosci. - dialog — klasyczny TUI, dostepny na wiekszosci live ISO
- whiptail — fallback gdy brak
dialog
Backend jest wybierany automatycznie. Zeby wymusic fallback na dialog/whiptail:
GUM_BACKEND=0 ./install.shZeby zaktualizowac bundlowana wersje gum:
# 1. Pobierz nowy tarball (podmien wersje)
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 pasowac do nazwy podkatalogu w tarballi)
# : "${GUM_VERSION:=0.18.0}"Wlasne skrypty uruchamiane przed/po fazach instalacji:
cp hooks/before_install.sh.example hooks/before_install.sh
chmod +x hooks/before_install.sh
# Edytuj hook...Dostepne hooki: before_install, after_install, before_preflight, after_preflight, before_disks, after_disks, before_bootstrap, after_bootstrap, before_chroot_setup, after_chroot_setup, before_apk_update, after_apk_update, before_kernel, after_kernel, before_fstab, after_fstab, before_system_config, after_system_config, before_bootloader, after_bootloader, before_swap_setup, after_swap_setup, before_networking, after_networking, before_desktop, after_desktop, before_users, after_users, before_extras, after_extras, before_finalize, after_finalize.
Installer automatycznie wykrywa sprzet i wyswietla go w ekranie Hardware:
| Peryferium | Metoda detekcji | Pakiet (opt-in w checklistie) |
|---|---|---|
| Bluetooth | /sys/class/bluetooth/hci* |
automatycznie z desktopem |
| Czytnik linii papilarnych | USB vendor IDs (Synaptics, Goodix, AuthenTec, Validity, Elan) | fprintd |
| Thunderbolt | sysfs + lspci | bolt |
| Czujniki IIO (2-in-1) | /sys/bus/iio/devices/ (accel, gyro, als) |
iio-sensor-proxy |
| Kamera | /sys/class/video4linux/video*/name |
— |
| WWAN LTE | lspci (Intel XMM7360) | modemmanager |
Wykryty sprzet pojawia sie jako opcje w ekranie "Dodatkowe pakiety" — widoczne tylko gdy odpowiedni sprzet zostal wykryty.
./install.sh [OPCJE] [POLECENIE]
Polecenia:
(domyslnie) Pelna instalacja (wizard + install)
--configure Tylko wizard konfiguracyjny
--install Tylko instalacja (wymaga configa)
--resume Wznow po awarii (skanuje dyski)
Opcje:
--config PLIK Uzyj podanego pliku konfiguracji
--dry-run Symulacja bez destrukcyjnych operacji
--force Kontynuuj mimo nieudanych prereq
--non-interactive Przerwij na kazdym bledzie (bez recovery menu)
--help Pokaz pomoc
Zmienne srodowiskowe:
GUM_BACKEND=0 Wymusz fallback na dialog/whiptail (pomin gum)
install.sh — Entry point
configure.sh — Wrapper: tylko wizard
lib/ — 16 modulow (constants, logging, dialog, hardware, disk, bootstrap...)
tui/ — 17 ekranow TUI
data/ — GPU database, dialogrc theme, gum binary cache
presets/ — Gotowe presety
hooks/ — before/after hooks
P: Jak dlugo trwa instalacja? ~10-20 minut (binarne paczki). Zalezy od predkosci internetu i wybranego DE.
P: Moge na VM? Tak, UEFI mode. VirtualBox: Settings -> System -> Enable EFI.
P: Dlaczego nie ma sterownikow NVIDIA proprietary? Alpine Linux uzywa musl libc i nie wspiera proprietarnych sterownikow NVIDIA. Uzywany jest nouveau (open-source).
P: Czym jest OpenRC?
Init system Alpine Linux. Zamiast systemctl uzywasz rc-service start/stop i rc-update add/del.
P: Czym jest doas?
Alpine uzywa doas zamiast sudo. Skladnia: doas apk add pakiet.
P: Czym jest niri? Scrollable-tiling Wayland compositor napisany w Rust. Dostepny w Alpine community repo od v3.23. Alternatywa dla Sway/Hyprland z unikatowym layoutem przewijanym.
P: Moge uzyc innego live ISO niz Alpine?
Tak, dowolne live ISO z Linuxem zadziala, pod warunkiem ze ma bash, apk-tools, sfdisk. Installer ma zaszyty gum jako backend TUI, wiec dialog/whiptail nie jest wymagany.
P: Co jesli gum nie dziala?
Installer automatycznie uzyje dialog lub whiptail jako fallback. Mozesz tez wymusic fallback: GUM_BACKEND=0 ./install.sh.
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 odswiezyc GRUB:
doas grub-mkconfig -o /boot/grub/grub.cfg