Jak ożywiłem Samsunga Galaxy A21s: Moja wyboista droga z instalacją LineageOS pod Linuksem

Samsung Galaxy A21s LineageOS

Samsung Galaxy A21s (SM-A217F/DSN) to telefon, który fabrycznie zatrzymał się na Androidzie 12 z nakładką One UI, działającą na procesorze Exynos 850. Postanowiłem nieco go odświeżyć i zainstalować czystego LineageOS.

Oficjalny poradnik na wiki LineageOS wygląda prosto: kilka komend, restart i gotowe. W praktyce — zwłaszcza jeśli pracujesz na dystrybucji bazującej na Archu (CachyOS/Arch Linux) — rzeczywistość jest różna: brakujące pakiety, konflikty kompilatora, błędy protokołu Samsunga i wiszący ekran startowy.

Oto relacja krok po kroku z moich zmagań, rozwiązane problemy i gotowy przewodnik dla każdego, kto chce przejść tę samą drogę bez wyrywania sobie włosów z głowy.


1. Wymagania wstępne: Pułapka oprogramowania bazowego

Pierwszy warunek instalacji LineageOS na A21s to posiadanie dokładnie stockowego Androida 12. Starsze wersje bootloadera uniemożliwią uruchomienie nowszego jądra systemu.

W moim przypadku wersja oprogramowania w recovery pokazywała:

12/SP1A.210812.016/A217FXXSCDXE2

To oznaczało zielone światło: model SM-A217F, Android 12, baza gotowa.

Odblokowanie Bootloadera (OEM Unlock)

Na Samsungach z układami Exynos odblokowanie bootloadera potrafi zniknąć z opcji programisty. Aby je wymusić:

  1. Połącz telefon z siecią Wi-Fi.
  2. Włącz Opcje programisty (7 kliknięć w Numer kompilacji w informacjach o telefonie).
  3. Przestaw datę systemową o 2 lata wstecz i zrestartuj urządzenie.
  4. Włącz suwak Zdjęcie blokady OEM (OEM unlock).
  5. Wyłącz telefon, przytrzymaj Vol Up + Vol Down i podłącz kabel USB do PC.
  6. Przytrzymaj dłużej Vol Up na błękitnym ekranie ostrzegawczym, aby sformatować telefon i zdjąć blokadę Knoxa.
Ekran ostrzegawczy odblokowania Tryb Download

2. Wojna narzędziowa na Linuksie: Gdzie jest samloader-rs?

Oficjalna dokumentacja LineageOS zaleca użycie narzędzia samloader-rs zamiast tradycyjnego Odina (który jest tylko pod Windowsa).

Tu zaczęły się pierwsze schody w terminalu Archa:

sudo pacman -S samloader-rs
# błąd: pakiet samloader-rs nie został znaleziony

Pułapka dwóch różnych programów

Szybkie przeszukanie sieci prowadzi często do pythonowego narzędzia samloader (pip install samloader). Uwaga: to zupełnie inny program! Służy wyłącznie do pobierania oficjalnych plików ROM z serwerów Samsunga, a nie do komunikacji w trybie Download Mode.

Próba skompilowania właściwego narzędzia w Rust przez cargo install samloader skończyła się kolejnym błędem środowiska:

error: linker `x86_64-linux-gnu-gcc` not found

(Arch stosuje po prostu binarkę gcc, a build script szukał linkera ze specyficzną nazwą dystrybucji Debian/Ubuntu).

Próba ratunkowa z Heimdallem (i dlaczego poległa)

Zainstalowałem z oficjalnych repozytoriów Archa sprawdzony program heimdall:

sudo pacman -S heimdall
sudo heimdall detect # Device detected
sudo heimdall flash --RECOVERY recovery.img --no-reboot

Partycja doszła do 100%, ale na sam koniec Heimdall zgłosił:

ERROR: Failed to receive session end confirmation!

Telefon nie zamknął sesji poprawnie i po restarcie z powrotem załadował fabryczne recovery Samsunga, natychmiast nadpisując wgrany przed chwilą obraz.

Właściwe rozwiązanie: Gotowa binarka samloader-rs

Najprostszym i najczystszym rozwiązaniem okazało się pobranie gotowej, skompilowanej binarki z wydań projektu topjohnwu/samloader-rs:

# Pobranie gotowej binarki
wget https://github.com/topjohnwu/samloader-rs/releases/latest/download/samloader-v2.2.0-linux-x86_64.zip
unzip -o samloader-v2.2.0-linux-x86_64.zip
chmod +x samloader

Weryfikacja połączenia w Download Mode:

sudo ./samloader detect

Telefon został natychmiast bezbłędnie zidentyfikowany jako SM-A217F.


3. Walka z protokołem LOKE i błędem Handshake

Próba bezpośredniego sflashowania surowego pliku recovery.img zakończyła się kolejnym komunikatem błędu:

RECOVERY flash successful [100%]
ERROR: Odin error: LOKE returned general failure (FAIL!) [code: -1]

Moduł LOKE w bootloaderze Samsunga odrzucił surowy plik .img. Dodatkowo zawiesił sesję USB, skutkując błędem ERROR: Failed to send handshake! przy kolejnych poleceniach.

Recepta:

  1. Reset stanu USB: Wymuszenie restartu telefonu (przytrzymanie Vol Down + Power przez 8 sekund) i ponowne wejście w czysty tryb Download (Vol Up + Vol Down + wpięcie kabla USB).
  2. Spakowanie do formatu TAR:
    tar -cvf recovery.tar recovery.img
  3. Prawidłowe wgranie:
    sudo ./samloader flash --partition RECOVERY recovery.tar --no-reboot

Tym razem flash przeszedł bezproblemowo!


4. Przechwycenie Recovery: Klawiszowy balet

Gdy flaga --no-reboot zadziała, telefon cały czas wyświetla ekran Downloading.... Jeśli pozwolisz mu wystartować do systemu normalnie, Samsung bezpowrotnie zastąpi Lineage Recovery swoim stockowym obrazem.

Trzymając kabel USB wpięty do komputera, wykonałem kluczową sekwencję:

  1. Przytrzymałem Volume Down + Power przez około 8 sekund.
  2. Dokładnie w momencie, w którym ekran zgasł, błyskawicznie puściłem klawisze i wcisnąłem Volume Up + Power.
  3. Trzymałem je, dopóki na ekranie nie pojawiło się upragnione, fioletowo-czarne menu: LineageOS Recovery 23.2!
LineageOS Recovery

5. Instalacja systemu i usług Google (GApps)

Będąc wreszcie w Lineage Recovery:

  1. Format danych:
    Wybrałem Factory reset → Format data / factory reset → potwierdzenie. Usunęło to fabryczne szyfrowanie Samsunga.
    Formatowanie partycji
  2. Wgranie LineageOS:
    Na telefonie: Apply update → Apply from ADB.
    Na komputerze (po doinstalowaniu pakietu sudo pacman -S android-tools):
    adb -d sideload lineage-23.2-20261006-nightly-a21s-signed.zip
    Terminal doszedł do 47% z komunikatem Success (co w ADB oznacza udane ukończenie), a na telefonie pojawił się napis: Install completed with status 0.
    ADB Sideload postęp Koniec instalacji system image
  3. Instalacja Sklepu Play (MindTheGapps):
    Aby mieć Sklep Play, paczkę GApps trzeba wgrać przed pierwszym uruchomieniem systemu. Dla LineageOS 23.2 (opartego na Androidzie 16) pobrałem architekturę arm64:
    Na telefonie ponownie: Apply update → Apply from ADB.
    Na komputerze:
    adb -d sideload MindTheGapps-16.0.0-arm64-*.zip
    Gdy telefon zapytał: „Signature verification failed. Install anyway?” – zatwierdziłem Yes (paczki GApps nie są podpisane oficjalnym kluczem Lineage, więc to w 100% oczekiwany monit).
    Instalacja GApps sideload Potwierdzenie instalacji

6. Chwila grozy i upragniony pulpit

Po wybraniu Reboot system now telefon przywitał mnie żółtym trójkątem ostrzegawczym Samsunga:
„This phone is not running Samsung's official software...”

Ostrzeżenie Knox

Zastygłem na chwilę w niepewności, czy to bootloop. Jednak po chwili ekran zgasł i pojawiła się animacja trzech pulsujących kropek na okręgu – oficjalny bootanimation LineageOS. Pierwszy rozruch z optymalizacją usług Google zajął około 3 minut, po czym przywitał mnie czysty, niesamowicie responsywny kreator konfiguracji nowego systemu.

Bootanimation LineageOS

Podsumowanie i wnioski na przyszłość

  1. Nie kompiluj samloadera na Archu: Pobierz gotową binarkę samloader-rs od topjohnwu. Oszczędzisz czas i nerwy.
  2. Pakuj obrazy do .tar: Protokół LOKE w nowszych Exynosach bywa wybredny wobec surowych plików .img.
  3. Kabel USB wpięty do PC to podstawa: Nowsze urządzenia Samsunga bez aktywnego połączenia USB z komputerem często odmawiają wejścia do Recovery kombinacją klawiszy.
  4. Warto było: Różnica w kulturze pracy A21s bez bloatware'u Samsunga jest kolosalna. Telefon zyskał zupełnie drugie życie.

Komentarze

Popularne posty