sobota, 18 lipca 2015

Moja malinka - część 2: instalacja systemu i konfiguracja zdalnego dostępu

W tym "odcinku" przybliżę sposób instalacji systemu na Raspberry Pi i opiszę zagadnienie istotne dla większości użytkowników - konfigurację zdalnego dostępu.

Oba działania są proste gdy wie się jak je wykonać. Poniżej - konkrety.


Przygotowanie karty SD

Kartę najlepiej przygotować zgodnie z instrukcją dostępną na stronie projektu:
https://www.raspberrypi.org/documentation/installation/noobs.md

Instalacja systemu 

Po przygotowaniu karty umieszczamy ją w urządzeniu. Po uruchomieniu urządzenia wybieramy system który ma zostać zainstalowany. Ja korzystam z dystrybucji Raspbian. W skrócie jest to Debian zoptymalizowany pod kątem instalacji na platformie Raspberry Pi.
Strona projektu: https://www.raspbian.org/
Instalacja trwa koło 10 minut.
Po jej zakończeniu następuje pierwsze uruchomienie, gdzie na początku można dokonfigurować różne opcje - np. włączyć kamerę. Po zakończeniu wstępnej konfiguracji dostajemy zalogowaną linię poleceń

Ustawienie nazwy urządzenia

sudo nano /etc/hosts


Tu interesuje nas tylko modyfikacja ostatniej linii:


sudo nano /etc/hostname

sudo /etc/init.d/hostname.sh 

Dostęp przez SSH

SSH (ang. secure shell) to standard protokołów komunikacyjnych używanych w sieciach komputerowych TCP/IP. SSH jest następcą protokołu Telnet, służącego do terminalowego łączenia się ze zdalnymi komputerami. SSH różni się od Telnetu tym, że transfer wszelkich danych jest zaszyfrowany oraz możliwe jest rozpoznawanie użytkownika na wiele różnych sposobów.

Może zostać włączony na poziomie konfiguracji systemu podczas pierwszego uruchomienia (opcja "A4 SSH" w sekcji Advanced). Ewentualnie Raspberry Pi Software Configuration Tool można wywołać później, przez:
sudo raspi-config
Raspberry Pi Software Configuration Tool: 8 Advanced Options

Raspberry Pi Software Configuration Tool: A4 SSH
Gdy włączymy już SSH, to do naszego Pi możemy się dostawać, zależnie od systemu, poprzez:
  • linux/unix - ssh [<username>@]<host>
  • windows - np. Putty

 Dostęp przez VNC

VNC (Virtual Network Computing) – system przekazywania obrazu z wirtualnego, bądź fizycznego środowiska graficznego.

Opisany powyżej dostęp przez SSH nie jest wszystkim co może nam zaoferować malinka w kwestii zdalnego dostępu. Kiedy z jakiegoś powodu potrzebny jest dostęp do interfejsu graficznego możliwe jest wykorzystanie VNC.

Konfigracja VNC przebiega następująco:
    sudo apt-get update - aktualizacja bazy dostępnych pakietów.
    sudo apt-get install tightvncserver - instalacja tightvncserver.
    tightvncserver - uruchomienie ręcznie serwera VNC. Należy podać hasło które będzie wymagane przy połączeniu z naszą malinką. Możliwe jest również podanie hasła dla dostępu tylko do przeglądania (view-only).

Tworzenie instancji

Zwróćmy uwagę na linię: New ‚X’ desktop is mypi:1
Oznacza ona tyle, że nasza malinka (w moim przypadku mypi) oczekuje na nas w pierwszej instancji. Możemy uruchmić usługę tightvncserver w innej/określonej instancji, robimy to poleceniem:

tightvncserver :x

gdzie x jest numerem instancji, którą chcemy udostępnić. Jeśli nie podamy tego parametru zostanie uruchomiona pierwsza wolna. Jest to szczególnie przydatne na potrzeby kilku użytkowników pracujących jednocześnie na jednym sprzęcie.

Zamykanie instancji

Aby zakończyć działanie danej instancji wydajemy polecenie:

tightvncserver -kill :x

gdzie x jest numerem instancji, którą chcemy zakończyć. Poniżej przykład operacji tworzenia i zamykania instancji.
przykład utworzenia 1,2 i 4 instancji i późniejszego ich zakończenia

Skrzypt uruchomienia usługi tightvncserver

sudo nano /etc/init.d/tightvncserver - tworzy plik z ustawieniami serwera VNC, i należy wstawić do niego następujący kod:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          tightvncserver
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/stop tightvncserver
### END INIT INFO

### Customize this entry
# Set the USER variable to the name of the user to start tightvncserver under
export USER='pi'
### End customization required

eval cd ~$USER

case "$1" in
  start)
    su $USER -c '/usr/bin/tightvncserver :1'
    echo "Starting TightVNC server for $USER "
    ;;
  stop)
    pkill Xtightvnc
    echo "Tightvncserver stopped"
    ;;
  *)
    echo "Usage: /etc/init.d/tightvncserver {start|stop}"
    exit 1
    ;;
esac
exit 0


Jeśli nazwa użytkownika jest inna niż ‘pi’, należy zmienić wiersz: export USER='pi'.
Należy zapisać plik przez Ctrl+O i wyjść przez Ctrl+X.

sudo chmod 755 /etc/init.d/tightvncserver - nadanie uprawnień do wykonywania utworzonemu wcześniej skryptowi.
sudo update-rc.d tightvncserver defaults - dodanie serwera VNC do procesów uruchamianych przy starcie systemu.

Nawiązanie połączenia

Gdy włączymy już VNC, to do naszego Pi możemy się dostawać, zależnie od systemu, poprzez:
  • linux/unix - Remote Desktop Viewer
  • windows - TightVNC
Aby połączyć się z naszym raspberry łączymy z nazwa_hosta:numer_instancji lub ip_hosta:numer_instancji. Przykład poniżej.
 

Restart/wyłączenie urządzenia

Piętą achillesową Raspberry Pi jest, według mnie, karta pamięci. Piszę to z własnego doświadczenia, pracując na mojej pierwszej karcie wielokrotnie byłem w sytuacji, gdy wyłączenie urządzenia wtyczką (twardy restart) kończyło się problemem z ponownym uruchomieniem systemu - trzeba było uruchamiać go kilka razy nim się wreszcie włączył - błąd karty SD. Raz zakończyło się to koniecznością ponownego uruchomienia setupu przed startem systemu i ponowną instalacją systemu.
Piszę o "pierwszej karcie" - działa, żyje, mam na niej system skonfigurowany w jakimś tam stopniu, teraz pracuję na drugiej 8GB SanDisk - jednak zbyt krótko by coś więcej powiedzieć.

W związku z powyższym ważną rzeczą jest umiejętny restart urządzenia. Służy do tego polecenie shutdown. Interesujące nas wersje poleceń, to - restart:
sudo shutdown -r now
to samo mozna osiągnąć poleceniem: sudo reboot
- zatrzymanie do wyłączenia:
sudo shutdown -hP now




Brak komentarzy:

Publikowanie komentarza