Dlaczego nie kupię Raspberry Pi

Pierwsze egzemplarze Raspberry Pi dotarły parę dni temu do nabywców w Polsce, pojawiają się pierwsze recenzje i zachwyty. FullHD, mało prądu[1], działa Linux – wydawać by się mogło, że pełna sielanka. Jednym okiem śledzę nowinki ze świata komputerów opartych na ARM, szczególnie pod kątem Linuksa. Mam domowy serwerek (głównie router) z Debianem działającym na Dockstarze. I już wcześnie pisałem, że sytuacja ARM i Linuksa nie jest różowa.

Od czasu tego ostatniego wpisu minęło trochę czasu, sytuacja stopniowo poprawia się, jeśli chodzi o wsparcie dla Linuksa. W Debianie pojawi się (prawdopodobnie już we Wheezy) nowa architektura ArmHardFloatPort. Stwierdziłem, że sprawdzę, czy przypadkiem da się z niej skorzystać na Dockstarze (nie, nie da się), w międzyczasie zakręciłem się w oznaczeniach, więc zadałem pytanie na forum Dockstara, a jedna z odpowiedzi bardzo otworzyła mi oczy na sytuację i jest inspiracją dla tego wpisu. Gorąco polecam lekturę całego wątku w oryginale, ale dla tych, którzy nie mają czasu lub możliwości skrót głównej myśli poniżej.

Otóż Raspberry Pi jest drogi i przestarzały. Niby miało być 35 dolarów, ale w praktyce jest to minimum 35 euro. Za sprzęt bez portu SATA, z 256 MB RAM (piszcie co chcecie, ale to stanowczo za mało na desktop, pracowałem ostatnio na niecałych 400 MB), bez obudowy (pewnie prędzej czy później pojawią się za ok. 10 dolarów, plus wysyłka) i bez zasilacza. Przede wszystkim jednak jest to sprzęt, na którym nowa, wydajniejsza architektura nie zadziała w ogóle. Z tego samego powodu nie zadziała na Raspberry Pi Ubuntu.

Pojawiła się alternatywa w postaci Gooseberry (płyta z tabletów), która jest oparta na nowszym, wspierającym armhf procesorze i oferująca 2-3 razy większą wydajność, 512 MB RAM, ale też ma wady, przede wszystkim cenowe, szerzej omówione w wątku na forum. Ogólnie myśl jest taka: Raspberry Pi jest tragicznie przestarzałe i drogie, Gooseberry to goła płyta z tableta, dopłacając minimalnie, można mieć tablet, czyli kompletne urządzenie, z ekranem, obudową, zasilaczem itd. Ale sugestia jest taka, by kupić po prostu Mele A2000 za 90 dolarów (z wysyłką do Polski). Trochę drożej ale dostajemy 512 MB RAM, port ethernet, normalne SATA, HDMI, VGA i obudowę. I – przede wszystkim – nowszą architekturę, nad którą pracuje większość developerów różnych dystrybucji Linuksa.

Oczywiście, zapewne pojawi się, przynajmniej początkowo, jakaś dystrybucja wspierająca Raspberry Pi. Można też będzie samemu rekompilować z odpowiednimi aktualizacjami. Ale powoli będzie się to coraz bardziej rozjeżdżać między główną linią Linuksa na ARM i wymagać coraz więcej pracy w utrzymaniu.

Oczywiście mówię o zastosowaniach, gdzie rozmiar płytki i pojedyncze W różnicy w poborze prądu mają drugorzędne znaczenie i bardziej o desktopach. Mój Dockstar jest równie przestarzały, ale jako router i domowy serwer pewnie będzie wystarczający jeszcze długie lata. Ale nigdy nie był kupowany z myślą o podłączaniu do niego monitora i korzystaniu z graficznego środowiska.

[1] No dobrze, niby mało, ale lepiej się dało. Prosta (ideowo, niekoniecznie prosta do wykonania, bo wymaga lutowania na płytce) modyfikacja pozwala na zmniejszenie poboru prądu w Raspberry Pi o 25%.

UPDATE: Pojawiła się kolejna alternatywa dla Raspberry Pi – ODROID-X. Co prawda aż 130 dolarów za gołą płytkę, ale czterordzeniowy procesor 1,4 GHz, 1 GB RAM i mocne GPU, więc chyba najbliżej sensownego desktopu. Oczywiście nowa architektura procesora ARM. Raczej nie będę już aktualizował tego wpisu o kolejne sprzęty – ten pojawił się po prostu krótko po zamieszczeniu wpisu.

UPDATE: Długo nie trzeba było czekać – na Allegro już pojawiają się praktycznie nieużywane egzemplarze Raspberry Pi. Ceny nie podam, bo nie ma kup teraz, tylko licytacja (ok. 100-150 zł w tej chwili). A sprzedający nowe sztuki życzą sobie 250 zł i więcej za gołą płytkę. Plus minimum 20 zł za pseudoobudowę (dwie płytki akrylu z przerwą) i 40 zł za „oryginalny zasilacz”. W zamian jedynie faktura i szybsza dostawa. No i ew. gwarancja/rękojmia. Tyle, że to drożej niż Mele A2000. Przy okazji, info dla oszczędzających: pojawiła się wersja oznaczona Mele A100, która jest wykastrowana z SATA, ale za to 10 USD tańsza. IMO nie warto, chyba, że ktoś na pewno nie chce dysku podłączać.

Najlepszy mirror w Debianie.

Z wpisu Raphaela można się dowiedzieć, że dla HTTP uruchomiony został nowy sposób znajdowania najlepszego mirrora pakietów Debiana. Obsługuje zarówno źródła, jak i pakiety binarne dla wszystkich podstawowych wersji Debiana (stable, testing, unstable, experimental), a także dla backports oraz archiwalnych wersji systemu (archive).

Używając redirectora zawsze trafimy do aktualnego, działającego i teoretycznie najbliższego, czyli najszybszego (na podstawie adresu IP) mirrora pakietów Debiana. Przydatne szczególnie dla tych, którzy często zmieniają miejsce połączenia z siecią, trafiają na nieaktualne lub niedostępne repozytoria lub chcą pobierać pakiety szybciej.

Pełna lista zalet (ze strony projektu Debian mirror HTTP redirector):

  • Brak niedostępnych mirrorów
  • Brak przeterminowanych mirrorów
  • Wykorzystanie nowych mirrorów
  • Load-balancing
  • Szybsze pobieranie (gdy wykorzystywany jest APT, poprzez równoległe pobieranie)
  • Świetne przy połączeniach mobilnych

Możemy bez jakichkolwiek zmian w systemie zobaczyć, jaki będzie wpływ (dla danego IP) przy pomocy demo. Sama konfiguracja jest trywialna i sprowadza się do podania adresu redirectora w sources.list.

Włączyłem testowo, działa, planuję włączać kolejno na moich systemach.

PolicyKit w Debianie.

Wczoraj po krótkiej rozmowie na kanale IRC zostałem przekonany do przejścia na unstable pełną gębą (plus odrobinka testing…). Do tej pory korzystałem ze stable plus backporty plus testing plus unstable, gdzie ok. połowy pakietów było ze stable. Upgrade przebiegł pomyślnie i w sumie dość bezproblemowo: przestała działać karta wifi (kwestia zdjęcia blacklist odpowiednich modułów), odinstalowało fglrx (nie patrzyłem jeszcze czemu, grafika Intela działała od kopa) i… znowu system przestał pozwalać na wyłączenie, wstrzymanie i hibernację.

Piszę znowu, bo temat jest znany i stary, pamiętam odkąd używam Debiana z LXDE, że był z tym problem. Czyli chyba od Lenny’ego. Na pewno było w Squeeze. Do tej pory pomagało ubicie procesu  /usr/lib/policykit-1/polkitd, albo, trwalej, usunięcie pakietu policykit-1. Mało eleganckie, ale proste i skuteczne. Zresztą na żadnym z moich desktopów nie potrzebowałem takich wynalazków.

Problem z PolicyKit jest taki, że może i jest to fajne, ale wygląda na skomplikowane, a dokumentacja jest żenująca – wystarczy spojrzeć na opis PolicyKit na wiki Debina. No i co najgorsze, niespecjalnie są przykłady. Podobnie jest w wielu innych miejscach, a nawet jeśli coś jest, to często są to stare i nieaktualne dane. Ostatecznie pomógł ten wpis nt. PolicyKit i opis PolicyKit na wiki Arch. Po kolei, czyli najpierw wyświetlanie dostępnych w systemie akcji – polecenie pkaction. Jego wynik to u mnie:

com.ubuntu.pkexec.gparted
org.blueman.bluez.config
org.blueman.dhcp.client
org.blueman.hal.manager
org.blueman.network.setup
org.freedesktop.consolekit.system.restart
org.freedesktop.consolekit.system.restart-multiple-users
org.freedesktop.consolekit.system.stop
org.freedesktop.consolekit.system.stop-multiple-users
org.freedesktop.policykit.exec
org.freedesktop.policykit.lockdown
org.freedesktop.udisks.cancel-job-others
org.freedesktop.udisks.change
org.freedesktop.udisks.change-system-internal
org.freedesktop.udisks.drive-ata-smart-refresh
org.freedesktop.udisks.drive-ata-smart-retrieve-historical-data
org.freedesktop.udisks.drive-ata-smart-selftest
org.freedesktop.udisks.drive-detach
org.freedesktop.udisks.drive-eject
org.freedesktop.udisks.drive-set-spindown
org.freedesktop.udisks.filesystem-check
org.freedesktop.udisks.filesystem-check-system-internal
org.freedesktop.udisks.filesystem-lsof
org.freedesktop.udisks.filesystem-lsof-system-internal
org.freedesktop.udisks.filesystem-mount
org.freedesktop.udisks.filesystem-mount-system-internal
org.freedesktop.udisks.filesystem-unmount-others
org.freedesktop.udisks.inhibit-polling
org.freedesktop.udisks.linux-lvm2
org.freedesktop.udisks.linux-md
org.freedesktop.udisks.luks-lock-others
org.freedesktop.udisks.luks-unlock
org.freedesktop.upower.hibernate
org.freedesktop.upower.qos.cancel-request
org.freedesktop.upower.qos.request-latency
org.freedesktop.upower.qos.request-latency-persistent
org.freedesktop.upower.qos.set-minimum-latency
org.freedesktop.upower.suspend
org.kde.kcontrol.kcmremotewidgets.save

Jak widać uprawnienia odpowiedzialne za suspend i hibernację są w jednej grupie (czy też raczej gałęzi drzewa), a restartowanie i zatrzymywanie systemu – w innej. Ostatecznie utworzyłem plik /etc/polkit-1/localauthority/50-local.d/10-my-power-policy.pkla o zawartości:

[Let rozie shutdown]
Identity=unix-user:rozie
Action=org.freedesktop.upower.*;org.freedesktop.consolekit.system.*
ResultActive=yes

Jak widać z wildcardem, bo – jak wspomniałem – niespecjalnie zależy mi na ograniczaniu samego siebie. Ale można podać konkretne uprawnienia, po średniku. Podobnie, można przyznać uprawnienia grupie użytkowników, a nie tylko pojedynczemu. Wówczas linia odpowiedzialna za przyznanie uprawnień dla usera rozie i dodatkowo grupy będzie miała postać:

Identity=unix-user:rozie;unix-group:jakaśgrupa

Na wiki Debiana jest pokazany screenshot policykit-gnome, ale jakoś nie udało mi się na to natknąć, choć pakiet mam zainstalowany. Może Gnome only i dlatego na LXDE nie działa?

UPDATE: Skoro już o naprawianiu błędów po upgrade do unstable, to jeszcze jedna ważna rzecz, którą „zepsuł” upgrade – po odłączeniu zasilania dysk co chwilę zatrzymuje się i rozpędza. Czyli co kilkadziesiąt sekund spin down i spin up. Tradycyjne miejsca (hdparm, apmd itp.) okazały się niewinne, rozwiązaniem okazało się odinstalowanie upower dostarczającego upowerd, który wygląda na słabo konfigurowalny. dodanie wpisu w /etc/hdparm.conf:

/dev/sda {
        apm = 254
        apm_battery = 254
}


UPDATE2: We wpisie o policykit był błąd: nie ResultAny=yes a ResultActive=yes (poprawione we wpisie). Po jakimś czasie zauważyłem, że nie działa, ale zwaliłem winę na lxpolkit, który w międzyczasie pojawił się w systemie (uroki unstable). Po bliższym przyjrzeniu – j.w. Nie żebym wnikał, czym to się dokładnie różni.