Raspberry Pi niemal read only

W końcu padła kolejna karta microSD. Tym razem jakaś chińszczyzna, kupiona wieki temu na Aliexpress. Działała długo. Nie pamiętam od kiedy, ale chyba parę lat. Znaczy się, problemy miała wcześniej, ale nie miałem czasu się tym zająć i jakoś działało. Chodzi oczywiście o Raspberry Pi robiące za router GSM.

O tym, że nie jest z nią dobrze wiedziałem. Przy instalacji nowych pakietów miała narowy i leciały jakieś błędy. Za pierwszym razem ograniczyłem zapisy na kartę – wyłączyłem bieda statystyki w postaci logowania ilości przesłanych danych. Mogłem wyłączyć więcej logów oraz swap, ale nie wpadłem na to. Zresztą, działało.

A teraz pewnego dnia zniknął internet, akurat gdy pracowałem. Oczywiście udostępniłem sobie net z komórki, ale zrobiłem szybką diagnostykę. W logach czysto, w dmesg czysto, uptime 240 dni. Reboot i… nadal nie działało. Za to chwilę po reboocie przy zwykłym działaniu pojawiły się błędy odczytu. Uznałem, że wina karty.

Chyba niesłusznie i była to po prostu awaria a2mobile, bo po przełożeniu modemu do innego komputera netu także nie było.

Tu mała dygresja odnośnie operatorów. Zmigrowałem z Aero2 na a2mobile i tak to sobie działa. Przy okazji – można odzyskać kaucję za kartę, którą pobierało Aero2. Nie trzeba odsyłać karty, nie trzeba podawać numeru ani wypełniać druku – wystarczy napisać email, tak jak to opisano na Pepper. W mniej niż tydzień pieniądze z depozytu miałem na koncie.

Tak w ogóle to widzę, że w Aero2 mają nowe pakiety i może niepotrzebnie rezygnowałem. Bo teraz w Aero2 dają 10 GB za 10 zł bez limitu prędkości. Z kolei obecne a2mobile nadal daje za 12,9 zł 5 GB bez limitu prędkości, kolejne 5 GB z limitem 3 Mbps (modem 3G, więc nie robi to dramatycznej różnicy i spokojnie da się działać), kolejne 5 z limitem 1 Mbps (no tu jest wolno już), a potem 512 kbps. W praktyce pewnie zwykle mieściłbym się w 10 GB, a lepiej dopłacić 10 zł za kolejny pakiet przy tych rzadkich okazjach, kiedy potrzeba będzie więcej transferu. Hmm…

No ale skoro karta ewidentnie pada, to pora na wymianę. Czasu mało, więc zamawiać nie będę, szybka wizyta w sklepie, kupiłem jakiś dziwny wynalazek 32GB za 20 zł. Karta microSD z napisem full HD na opakowaniu. Przy okazji zauważyłem, że bardzo stary Raspbian się tam ostał – jeszcze oparty na bullseye. Zastanawiałem się przez chwilę, czy nie instalować nowego Raspbiana (oparty na bookworm), ale o ile backup obrazu karty miałem, o tyle plików nie. Oczywiście mogłem podmontować i zgrać pliki, ale stwierdziłem, że więcej będzie roboty z szukaniem ich wszystkich, niż z aktualizacją Raspbiana.

No i w sumie miałem rację – aktualizacja była bezproblemowa. Przy okazji wyłączyłem logi, wyłączyłem swap, zrobiłem lekki tuning pamięci, ustawiając minimalną możliwą dla karty graficznej (16 MB zamiast domyślnych 64 MB). No i zobaczymy, ile podziała teraz. Oczywiście mam świeży backup, znowu w postaci obrazu karty.

Przy okazji, trafiłem na ciekawy opis, jak zrobić w Raspberry Pi kartę w trybie read only przy pomocy overlayFS. Spróbowałem i… niestety nie działa, choć raspi-config twierdzi, że przełączył. Nie tylko u mnie, widziałem podobne opisy na forach – na 64bit niby działa, na 32bit – nie. A moje RPi to 1B, więc nie mogę 64bit użyć. Na dokładniejszy debug nie starczyło już czasu, może następnym razem się uda…

Aktualizacyjne wpadki

Aktualizować, czy nie aktualizować, oto jest (odwieczne) pytanie. Na systemie, gdzie działa blog wychodzę z założenia, że aktualizować. Nie jest to żaden krytyczny system, problemy z unattended-upgrades są rzadkie. Za to aktualizacje bezpieczeństwa są całkiem częste, więc po co pilnować tego i co chwila klepać apt update && apt upgrade, skoro może się zrobić samo?

Jednak wczoraj sprawdziłem maile i okazało się, że jest wiadomość, że blog leży. Od godziny szóstej z małymi groszami. Przemknęło mi przez myśl, że może jakiś błąd monitoringu, albo zablokowałem im IP (tzn. ktoś ich dopisał jako złośliwe IP, a korzystam z blokad). Jednak otwarcie bloga w przeglądarce potwierdziło. Backendu nie ma, błąd 502, zła brama.

„Równa” godzina podpowiadała, że to jednak coś automatycznego. No i faktycznie, spojrzałem w konfig nginx, powinien korzystać z php-fpm 8.3. A tymczasem takiej wersji w systemie nie ma. Choć była, bo konfiguracje zostały[1]. Za to jest php-fpm 8.4. Cóż, szybka poprawa konfiguracji nginx, by korzystał z nowej wersji, dostosowanie konfiguracji PHP, doinstalowanie brakujących pakietów (np. obsługa mysql) i… działa.

Trochę nie dawało mi spokoju co się dokładnie stało, więc jak tylko miałem chwilę, sprawdziłem logi unattended-upgrades. A tam:

2025-04-03 06:08:19,883 INFO Packages that will be upgraded: php-common php-fpm
2025-04-03 06:08:19,883 INFO Writing dpkg log to /var/log/unattended-upgrades/unattended-upgrades-dpkg.log
2025-04-03 06:08:54,101 INFO All upgrades installed
2025-04-03 06:09:11,494 INFO Packages that were successfully auto-removed: php8.3-cli php8.3-fpm php8.3-opcache php8.3-readline

Zagadki nie ma, żadnej, wszystko jest w zależnościach pakietu php-fpm:

Package: php-fpm
Depends: php8.4-fpm

Dodam jedynie, że problem wynika w tym przypadku z wykorzystania nieoficjalnego repozytorium, z nowszymi wersjami PHP packages.sury.org. W waniliowym Debianie wszystko by działało. Ale PHP byłoby w wersji 8.2. W sumie nie jest to jakaś wielka różnica – kiedyś była większa. Możliwe, że wrócę do waniliowego Debiana… Tym bardziej, że wkrótce wydanie kolejnej wersji stabilnej.

UPDATE: Po krótkim namyśle stwierdziłem, że nie ma na co czekać na nowe wydanie i wróciłem do waniliowego Debiana już teraz. Zresztą przy aktualizacji i tak jest zalecane usunięcie pakietów z 3rd party repozytoriów…

[1] Debian przy usuwaniu pakietu zwykle nie usuwa jego konfiguracji.

Chromebook HP G11

Minął ponad rok, odkąd kupiłem chromebooka (HP chromebook G11). Używanego, prawdopodobnie poleasingowego. Przyczyn było kilka, więc gdy pojawiła się okazja na zakup używanego w dobrej cenie (wtedy 200 zł) – zaryzykowałem. Ryzyko było niewielkie, gdyż gdyby ChromeOS lub wydajność mi nie pasowały, sprzęt skończyłby z zainstalowanym Linuksem jako przenośny do prostych prac. Zalety 4 GB RAM oraz x86, choć z ARM pewnie też bym sobie poradził.

Tak się jednak nie stało, bo sprzęt okazał się bardzo przyjazny w użytkowaniu. Pozytywnie zaskoczyło mnie kilka rzeczy. Pierwszą z nich jest czas pracy na baterii. W tej chwili słucham radia, jestem na WiFi, korzystam z przeglądarki WWW, mam 85% baterii, a przewidywany czas działania to 9,5 godziny. I to na x86 – przypuszczam, że ARMy mają jeszcze lepiej.

Czas pracy nie ma większego znaczenia, gdy pracować się nie da. I tu kolejne pozytywne zaskoczenie. Nie tylko da się korzystać z WWW, ale jest to komfortowe, nic nie zwalnia. Nie mam porównania dla tego procesora z innymi systemami operacyjnymi, ale po sprzęcie z 4 GB RAM spodziewałem się nieco mniej. Czyli nie wiem czy jest to kwestia optymalizacji ChromeOS, czy sprzętu, ale efekt jest bardzo przyjemny.

Klawiatura jest komfortowa. Nieco obawiałem się, że tak mała przekątna ekranu będzie oznaczała małą, niewygodną klawiaturę. Ta jest w zasadzie pełnowymiarowa – nieco węższe są niektóre klawisze, w tym skrajne, natomiast litery i odstępy między nimi są normalnej wielkości – korzysta się komfortowo. Uwaga – w sprzedawanym sprzęcie klawiatura jest tzw. z naklejkami. Zrobione na tyle dobrze, że trzymają się po roku, a zauważyłem po paru miesiącach…

Touchpad – brak fizycznych klawiszy, czyli mamy sytuację podobną jak w sprzęcie Apple. Oczywiście touchpad jest mniejszy i gorszy, niż w makach, ale spokojnie daje się z niego korzystać i mam wrażenie, że jest lepszy niż w wielu laptopach. Choć ja raczej wolę mysz (także na maku). Niemniej i tu, i na maku mogę żyć bez niej.

No i na deser, coś dla użytkowników Linuksa czy też zwolenników konsoli. ChromeOS na wielu sprzętach umożliwia dostęp do wiersza poleceń, czyli tak zwanego terminala. Jednak niezupełnie tego w ChromeOS. Terminal to tak naprawdę osobny system (Debian, prznynajmniej domyślnie) w formie maszyny wirtualnej (kernel jest wspólny, podejrzewam okolice LXC). Świetna integracja między systemami – z poziomu ChromeOS mamy dostęp do dysku Linuksa, co umożliwia łatwe przenoszenie plików między systemami.

Kolejnym zaskoczeniem był fakt, że w „terminalu” działa nie tylko tryb tekstowy, ale i graficzny, w dodatku integrując się z serwerem okien ChromeOS. Czyli nie musimy instalować środowiska graficznego pod Linuksem, by skorzystać z dowolnych programów instalowanych pod Linuksem, typu Firefox czy Gimp. Przyznaję, że poste i wygodne.

Ogólnie korzystanie z chromebooka przywołuje u mnie skojarzenia z macOS – wszystko po prostu działa, jest dopracowane, liczba ustawień znacznie ograniczona, ale wystarczająca. I wszystko dopracowane. Na przykład regulacja jasności to także możliwość włączenia ciemnego motywu czy trybu nocnego (filtrowanie niebieskiego).

System uruchamia się błyskawicznie. Nie jest to praktycznie natychmiast, jak na maku, ale znacznie szybciej niż znane mi systemy pod kontrolą Linuksa czy Windows. Oczywiście mamy też możliwość integracji z całym ekosystemem, czyli usługami Google czy Android – ale nie jest to opcja z której korzystam.

Jest też inaczej niż wszędzie – własne skróty, własne klawisze. Trzeba czasem poszukać instrukcji, ale w sieci wszystko jest dobrze opisane, a liczba opcji jest niewielka. Zresztą, poznanie/dostęp do ekosystemu było dla mnie jednym z powodów zakupu. Ogólnie widać, że Google przyłożyło się do UI i UX i nie jest to po prostu tani sprzęt z Linuksem, tylko przemyślany projekt.

Podsumowując, jestem bardzo zadowolony. Używam do sieci, do pisania tekstów (np. ten wpis). Świetnie sprawdza się w pociągu. Jest dość pancerny, dość mały, a w razie czego to tylko 200 zł. Nie jest moim podstawowym sprzętem, mam osobne konta i nie mam na nim istotniejszych danych.

Pokazałem sprzęt paru znajomym, kupili (do różnych zastosowań, np. dla dzieci) i z tego co słyszałem, po pierwszych wrażeniach zadowoleni. Jeśli komuś nie przeszkadza mocna integracja z usługami Google, ChromeOS – polecam. Link (afiliacyjny) do sprzedawcy na Allegro, gdzie kupowałem na początku wpisu.