SmartHub i Raspberry Pi – możliwości systemów operacyjnych. Jaki wybrać?

W tym odcinku porównam systemy operacyjne jakie można zainstalować na Raspberry Pi. Urządzenie użyte do testów to Raspberry Pi 2. Zapraszam do czytania.

To porównanie ma na celu wskazanie różnic i podobieństw między systemami operacyjnymi dostępnymi na płytki SoC – w tym wpisie będzie dotyczyło Raspberry Pi, ale myślę, że w przyszłości pojawią się wpisy dotyczące innych płytek. Zaczynam od Raspberry Pi, bo posiadam wersję 2 tej płytki. Docelowym założeniem jest, aby SmartHub wspierał jak największą liczbę płytek, ale na początek będzie to tylko Raspberry Pi. Drugim celem porównania jest wskazanie kilku reprezentatywnych systemów, które zostaną bardziej szczegółowo przetestowane oraz odrzucenie systemów, które nie nadają się do wykorzystania w tym projekcie.

NOOBS

noobs noobs 2

Jest to nic innego jak system operacyjny ułatwiający instalację innych systemów operacyjnych dostępnych na RPI. Po wybraniu docelowego systemu ściąga potrzebne pliki i uruchamia instalację. Jest to jeden z dwóch oficjalnych systemów wydanych przez Raspberry Pi Foundation. Niestety nie przyda się w tym projekcie – no chyba, że do instalacji innego systemu z tej listy 🙂

Windows 10 IoT Core

windows 10 iot 1 windows 10 iot

Jedyny „Windows” z tej paczki. Nie jest to Windows znany z komputerów jakby mogło się wydawać. Jest bardziej podobny do obecnej 10 dostępnej na telefony. Jednak różni się tym, że można na nim uruchomić tylko jedną aplikację zawierającą interfejs użytkownika (Headed App). Pozwala także na uruchomienie kilku aplikacji w tle jako usługi (Headless App).

Aplikacje te piszę się z wykorzystaniem Universal Windows Platform (UWP) – w skrócie jest to platforma tworzenia aplikacji uniwersalnych, które mogą być uruchamiane na wszystkich wydaniach systemu Windows 10. W założeniu wystarczy napisać jeden raz kod, który będzie działał na komputerach, tabletach, telefonach, XBOXie, Raspberry Pi 2 lub 3 i innych. Mogę stwierdzić, że jeżeli chodzi o interfejs użytkownika to prawda. Trochę gorzej sprawa wygląda jeżeli chodzi pozostały kod – zwłaszcza wykorzystujący API specyficzne dla danej platformy. Jednak i tak to jest duży krok naprzód w temacie tworzenia jednej aplikacji na różne wersje Windowsów.

Niestety ta funkcja nie przyda się, ponieważ jest ona przydatna w przypadku aplikacji klienckich. SmartHub będzie to bardziej aplikacja serwerowa – przynajmniej główna część systemu uruchomiona na Raspberry Pi. Jest to pierwszy minus tego systemu w kontekście wykorzystania go w tym projekcie. Można emulować na nim usługi sieciowe poprzez usługi działające w tle (Headless Apps), ale raczej uruchomienie ASP.NET Web API byłoby problematyczne lub wręcz niemożliwe np. ze względu na to, że .NET w Windows 10 IoT Core jest ograniczony (Windows Runtime).

Aktualizacja (16.04.2016): Okazuje się, że uruchomienie ASP.NET 5 jest możliwe. Opis instalacji znajduje się w tym artykule. Do instalacji nie jest wykorzystywany mechanizm aplikacji uniwersalnych – instalacja odbywa się bezpośrednio w systemie poprzez konsolę oraz z użyciem narzędzi dnvm, dnu i dnx (ich opis pojawi się wkrótce przy okazji testów systemu Raspbian).

Wykonałem już testy tego systemu i w przyszłości szerzej opiszę jego możliwości. Do ich wykonania i w sumie zakupu RPI zachęciła mnie bardzo duża liczba ciekawych projektów na tę platformę dostępna na stronie hackster.io. Wiele z nich jest ściśle związanych z wymaganiami SmartHuba – wiele także posłużyło jako inspiracja. Jest także wiele przydatnych przykładów przygotowanych przez sam Microsoft, które pozwalają na szybsze zapoznanie się z tym systemem i implementację własnych pomysłów. Także dzięki powstaniu UWP liczba przykładów dostępna na RPI jest większa, ponieważ można na nim uruchomić przykłady dedykowane na telefony – out of the box lub po małym dostosowaniu.

Podsumowując ten system raczej nie będzie docelowym systemem, na którym będzie działał SmartHub. Jednak prawdopodobnie będzie używany do prototypowania funkcjonalności – ze względu na dużą liczbę przykładów z dostępnym kodem, które można uruchomić bardzo szybko i zweryfikować ich działanie w aktualnych warunkach. Więcej informacji pojawi się we wpisie dedykowanym temu systemowi.

Raspbian

raspbian2 raspbian1

Najpopularniejsza dystrybucja linuksa dla malinki. Chyba jest to także najpopularniejszy system ogólnie dla tej płytki (nie tylko jeżeli chodzi o linuksy). Jest to drugi i ostatni oficjalny system wydany i wspierany przez Raspberry Pi Foundation.

Jest to system oparty na Debianie Jessie – linux do ogólnych zastosowań zoptymalizowany do pracy na Raspberry Pi. Działa także z płytką Orange Pi.

Niedługo wykonam testy tego systemu. Nawet mam już go wrzuconego na kartę SD :-). Będę chciał sprawdzić działanie Mono na tym systemie oraz możliwość odpalenia ASP.NET Web API na nim. Wstępne przeszukanie internetu pozwoliło mi stwierdzić, że jest to możliwe, więc na ten moment wygląda, że będzie to system, który wybiorę jako docelowy system dla tego projektu.

OSMC

osmc1 osmc2

OSMC (Open Source Media Center) to otwarty oparty na Linuksie system operacyjny typu media center – jest przeznaczony do odtwarzania multimediów z różnych źródeł (sieci lokalnej, NASa lub z internetu). Widzę dla niego 2 zastosowania. Pierwsze po podłączeniu do telewizora jako odtwarzacz sieciowy filmów i moduł rozszerzający jego funkcje – coś w stylu smart TV. Drugie zastosowanie to jako bezprzewodowy odtwarzacz audio po podłączeniu do zestawu audio – coś podobnego do Chromecast Audio.

Nie przyda się więc on jako system na którym będzie uruchomiony SmartHub. Jednak wiele z jego funkcji ma być zaimplementowane w SmartHub (a właściwie w modułach). Głównie te związane z odtwarzaniem audio i streamingiem po sieci (UPnP Audio Renderer itp.). Być może przyda się do testów lub do sprawdzenia jak dana funkcja jest w nim zaimplementowana.

Ubuntu Mate

ubuntu mate

Kolejny Linux z listy. Tym razem oparty o dystrybucję Ubuntu. Prawdopodobnie kiedyś go przetestuję. Gdyby testy Raspbiana nie udały się, to wtedy nawet szybko 🙂

Snappy Ubuntu Core

Następne Ubuntu na liście. Według informacji, które znalazłem nie posiada GUI i jego przeznaczeniem jest tematyka IoT (Internet of Things). Jest to zastosowanie jak najbardziej zgodne z przeznaczeniem projektu. W sumie brak interfejsu użytkownika może ograniczyć zużycie zasobów i szybszą pracę oraz idealnie nadaje się do zastosowań serwerowych, więc byłby to odpowiedni system dla tego projektu. Podobnie jak z poprzednim Ubuntu jest szansa, że jego także przetestuje.

OpenELEC

OpenELEC (Open Embedded Linux Entertainment Center) to kolejny Linux typu media center obok OSMC. Tak samo jak OSMC nie nada się jako system, na którym będzie zainstalowany SmartHub.


Podsumowując najbardziej prawdopodobnym wyborem jeżeli chodzi o system operacyjny do tej części projektu będzie Raspbian. Głównie ze względu na popularność oraz wsparcie, jeżeli chodzi o linuksowe systemy na malinę. Dodatkowym plusem jest to, że działa na innych płytkach, m. in. Orange Pi. Jeżeli chodzi o Windows 10 IoT Core, to jest to fajny system, ale nie nada się do tego projektu, ze względu na jego bardziej kliencki charakter – a system do tej części powinien być bardziej serwerowy. Jednakże szczegółowy opis testów obu tych systemów pojawi się tutaj na blogu. Jeżeli chodzi o pozostałe systemy, czyli dwie wersje Ubuntu, to być może zainteresuje się nimi, ale dopiero jak zdobędę doświadczenie z Mono pod linuksem.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *