Java i Spring na Raspberry Pi, część 1

java raspberry pi 2015-11-29, 23:11,

Malinka to świetna platforma do nauki programowania. Szczególnie wtedy, gdy chcemy by efekty naszej pracy miały jakikolwiek kontakt ze światem zewnętrznym. Podobnie jak popularne Arduino tak i Malinka ma dostęp do portów wejścia/wyjścia (GPIO - General Purpouse Input Output) oraz magistrali SPI, I2C, RS-232. Do tego wyjście HDMI, port USB, w niektórych wersjach także kontroler Ethernet. Wszystko w niedrogim opakowaniu, a po premierze Raspberry Pi Zero, wręcz banalnie tanim.

Ale to co odróżnia Malinę od Arduino czy innych projektów opartych na 8-bitowych AVRach to praca pod pełnoprawnym systemem operacyjnym Linux (opcjonalnie Windows 10 IoT Core dla wersji 2B+). Oznacza to możliwość uruchamiania aplikacji natywnych, języków interpretowanych (np. Python), ale także Javy i na niej się chcę skupić.

Czym się zajmiemy?

Celem tego ćwiczenia jest instalacja systemu Raspbian Jessie Lite na czystej karcie SD, konfiguracja maszyny wirtualnej Javy oraz karty sieciowej (WiFi lub Ethernet) oraz wgranie przykładowej aplikacji, która przetestuje całe rozwiązanie.

Przygotowanie do instalacji

Zatem do dzieła. Potrzebne będą następujące elementy:

  • Raspberry Pi B+/2B+ (Pi Zero po zastosowaniu przejściówek)
  • Zasilacz (5V, minimum 2A)
  • Karta sieci bezprzewodowej lub możliwość wpięcia się kabelkiem w istniejącą sieć lokalną, z serwerem DHCP)
  • Karta SD lub Micro-SD o pojemności > 2 GB

Jeśli wszystko jest przygotowane to możemy zacząć od pobrania obrazu systemu Jessie Lite ze strony Fundacji.

Następnie pobrany obraz musimy przetransferować na kartę SD. Warto tu się posłużyć oficjalną instrukcją.

Po przesłaniu obrazu na dysk podpinamy Malinę do telewizora, monitora lub sieci lokalnej i konfigurujemy. Ja wybrałem opcję z kablem sieciowym, więc sprawdziłem jej adres IP na ruterze/serwerze DHCP i zalogowałem się przez SSH. Domyślny login/hasło dla Maliny to pi/raspberry

Zmiana hasła użytkownika

Pierwsze co należy zrobić to zmienić domyślne hasło.

pi@raspberrypi:~ $ passwd
Changing password for pi. 
(current) UNIX password: 
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

Dla ułatwienia życia można w katalogu ~/.ssh utworzyć plik authorized_keys i wkleić do niego swój klucz publiczny SSH. Nie będzie trzeba za każdym razem klepać hasła, by się zalogować ze swojej maszyny.

Aktualizacja systemu operacyjnego

Kolejna operacja to aktualizacja systemu operacyjnego.

sudo apt-get upgrade

Jeśli coś zostało zaktualizowane to restartujemy system, logujemy się ponownie i kontynuujemy.

sudo shutdown -h now

Konfiguracja sieci Wifi (opcjonalnie)

Osobiście nie lubię potykać się o kable, więc podłączam moją Malinę do sieci Wifi. Tak też docelowo planuję podłączyć do wydzielonej sieci gromadkę Pi Zero, gdy tylko pierwszy szum opadnie.

Oficjalna instrukcja dostępna jest tutaj.

sudo iwlist wlan0 scan

Odszukuję swoją sieć, sprawdzam czy jest szyfrowana WPA2 (innych, starszych WPA1 i WEP nie należy stosować) i przystępuję do konfiguracji WPA Supplicanta

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

W tym momencie można wyłączyć i włączyć interfejs bezprzewodowy lub zrestartować Malinę.

sudo ifdown wlan0
sudo ifup wlan0

Jeśli wszystko przebiegło po naszej myśli możemy sprawdzić adres IP interfejsu ifconfig wlan0. Jeśli tak, wylogowujemy się z SSH, odpinamy kabel sieci LAN i łączymy się ponownie po Wifi.

Zmiana rozmiaru partycji systemowej

Domyślny rozmiar partycji systemowej to 2 GB. Jeśli karta pamięci jest większa (a do instalacji Javy musi być) uruchamiamy raspi-config i wybieramy pierwszą opcję: Expand root partition. Po restarcie karta partycja powinna zajmować tyle, ile mamy miejsca na karcie (minus przestrzeń wymiany).

sudo raspi-config

Instalacja Javy

Jessie Lite nie zawiera zbyt wiele w systemie operacyjnym. Można powiedzieć, że zawiera absolutne minimum do pracy z wiersza poleceń. Aby korzystać z Javy musimy ją sobie doinstalować:

sudo apt-get install oracle-java8-jdk

Instalacja skonsumuje kolejne 231 MB z karty pamięci i potrwa kilka-kilkanaście minut, w zależności od wersji Maliny oraz szybkości łącza.

Jeśli wszystko przebiegło pomyślnie możemy sprawdzić, czy Java faktycznie działa:

pi@raspberrypi:~ $ java -version 
java version "1.8.0" 
Java(TM) SE Runtime Environment (build 1.8.0-b132) 
Java HotSpot(TM) Client VM (build 25.0-b70, mixed mode)

Podsumowanie

Jeśli wszystko przebiegło pomyślnie można przejść do uruchamiania aplikacji w Javie.

Komentarze