Raspberry einrichten

Grundkonfiguration

Es wird ein Raspberry Pi benötigt. Manchmal bekommt man noch ein Modell 2, das lohnt sich aber kaum. Es kostet zwar ein paar Euronen weniger als das aktuelle Modell, aber man benötigt zusätzlich einen USB-WLAN-Adapter.

Als Betriebssystem nutze ich Raspian lite (momentan (2021) Version „Buster“). Die „lite“ Version ist vollkommen ausreichend. Ein vollgrafischer Desktop wird nicht gebraucht. Das Image muss man herunterladen und mit einem Imagewriter auf der Mikro-SD-Karte installieren (steht alles in den einschlägigen Beschreibungen, also spare ich mir das hier).

Für den ersten Start eine Tastatur, eine Maus und einen Monitor an den Raspi anschließen und starten. Das System führt ein paar Grundkonfigurationen durch und irgendwann steht da Login.

Hinweis: Wer einen der kleinsten Raspberrys verwendet, den Raspberry Lite, hat nur zwei Mini-USB-Anschlüsse und einmal Mini-HDMI. Entweder man hat entsprechende Adapter oder man führt die Basiseinrichtung mit einem „großen“ Raspberry durch und steckt die SD-Karte danach in den Kleinen.

Dann als Standard-User pi mit Passwort raspberry anmelden (Achtung, Tastatur noch auf Englisch, das y ist das z).

Für die Systemeinstellungen benötigt man Superuser-Rechte. Der Adminzugang per „root“ ist deaktiviert. Bei Raspian läuft das wie bei Ubuntu über die Funktion sudo (Superuser-Do).

Also für die ersten Systemeinstellungen startet man das Konfigurationsprogramm:

sudo raspi-config

(Hinweis, bei der Englischen Tastatur ist der „-“ unter dem „ß“)

Es empfiehlt sich, für den User pi ein neues Passwort zu erstellen. Das kann man unter den Menupunkt „Change User Password“ erledigen.

Unter „Interface Options“ aktivieren wir den SSH-Server. Damit können künftige Änderungen über Netzwerkzugriff und ohne lokale Tastatur und Bildschirm erledigt werden (wäre im Garten auch unpraktisch).

Weiter gehts unter „Network Options“ –> „WiFi“. Hier erstmal die Settings für Deutschland „DE“ auswählen und dann die WLAN-Daten (Netzwerkname und Passphrase) eingeben.

Unter „Localisation Options“ –> „Change Locale“ schalten wir das System auf Deutsch (vorzugsweise DE-DE-UTF8) und stellen die „Timezone“ auf Europe – Berlin.

Unter „Advanced Options“ wählen wir den Punkt „Expand Filesystem“. Dadurch verwendet der Raspberry nach einem Neustart die gesamte Flash-Disk und nicht nur 2 GB.

Nach dem Neustart wieder mit pi und dem neuen Passwort anmelden. Wer möchte, kann das jetzt schon von einem anderen Rechner per SSH machen. Unter Windows dazu den putty-SSH-Client nutzen. Unter Linux einfach ssh -l pi IP-Adresse eingeben. Momentan bekommt der Raspberry noch eine dynamische Adresse Eures Netzwerkes, aber das gewöhnen wir ihm noch ab, falls gewünscht.

Als erstes führen wir ein Update des Systems durch, d.h. wir installieren die neusten Patches. Das geht mit folgenden Befehlen:

sudo apt-get update
sudo apt-get upgrade -y

Das dauert jetzt je nach Netzwerkverbindung ein wenig. Danach kann man noch ein paar zusätzliche Softwaremodule installieren. Ich verwende für die Dateiverwaltung den Midnight-Commander (sieht aus wie der alte selige Norton-Commander), als Editor nehme ich „joe“ (Bedienung wie das alte Word-Star für DOS oder für gelernte DDR-Bürger Text30). Für den Dateizugriff von Fern brauchen wir noch einen FTP-Server, z.B. „proftp“. Wir können gleich alles in einem Rutsch installieren.

sudo apt-get install mc joe proftpd

Der FTP-Server sollte gleich aktiv sein, das kann man von einem anderen Rechner oder per Webbrowser überprüfen. Einfach als Adresse „ftp://IP-Adresse“ eigeben. Nutzename ist pi und dazu das neu vergebene Passwort. Man landet dann per FTP im Homeverzeichnis auf dem Raspberry.

Will man mit dem Midnight-Commander oder mit joe Veränderungen am System vornehmen, muss man sie als Superuser starten, also sudo mc oder sudo joe.

Hinweis: Will man eine Datei mit dem Midnight-Commander editieren, kann man sie mit F4 entsprechend öffnen. Damit der Midnight-Commander den internen Editor verwendet, muss man unter „Optionen“ –> „Konfiguration“ den Punkt „Internen Editor benutzen“ wählen (ins Menu kommt man mit F9, weiter mit Cursortasten oder Enter, das Kreuzchen setzen mit der Leertaste). Greift man mit SSH drauf zu, funktioniert meist sogar die Maus.

Diese Basiseinrichtung dauert ca. 30-60 Minuten. Am längsten dauert das Systemupdate (hängt von der eigenen Internetgeschwindigkeit sowie der Anzahl der neuen Pakete ab).


Feste IP-Adresse

Will man eine feste IP-Adresse haben, ist folgende Datei zu editieren:

/etc/dhcpcd.conf

Entweder mit dem Midnight-Commander öffen oder joe verwenden (sudo joe /etc/dhcpcd.conf).

Hier gibt es einen Punkt für die Feste-IP-Adresse (Zeilen mit # davor sind als Kommentarzeile gekennzeichnet, wir können das Beispiel gleich verwenden und unsere Werte eintragen und die # entfernen.

#Example static IP configuration
interface wlan0
static ip_address=192.168.0.12/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
static routers=192.168.0.99
static domain_name_servers=192.168.0.99 8.8.8.8

interface gibt die verwendete Schnittstelle an. eth0 ist die Ethernet-Schnittstelle per Draht, wlan0 das WLAN-Modul. Notfalls kann man mit ifconfig nochmal nachschauen.
static ip_address ist die neue Schnittstelle (Achtung, darf im Netz nur einmal auftauchen). Die /24 dahinter definiert die sogenannte Subnetz-Maske, für die meisten Heimnetze so stehen lassen.
Bei static routers und static domain_name_servers die Adresse des eigenen Routers eintragen.

Das wars. Wir haben ein lauffähiges System. Jetzt kann man die ersten Bastelprojekte starten.


Ausführbare Dateien

Ausführbare Dateien werden in Unix-Systemen anders dargestellt, als bei Windows. Windows entstammt der alten DOS-Welt, d.h. eine Datei ist ausführbar, wenn sie auf .exe, .com oder .bat endet.

Bei Unix-Systemen dient die Dateiendung meist nur der besseren Unterscheidbarkeit. Eine Datei ist ausführbar, wenn das „Ausführen-Bit“ gesetzt ist. Es gibt dann noch das „Schreibbar“ und „Lesbar“-Bit. Diese drei können getrennt für den Dateieigentümer, die Gruppe oder für alle gesetzt werden. Geändert werden sie mit dem Befehl chmod.

chmod 755 datei.sh bewirkt, dass die Datei „datei.sh“ für den Eigentümer beschreibbar ist, für alle anderen (Gruppe und Alle) ist sie nur lesbar. Weiterhin ist sie aber für Eigentümer, Gruppe und alle ausführbar.

chmod 666 datei.sh würde bewirken, das sie für alle (Eigentümer, Gruppe und Alle) les- und schreibbar ist.

Das Ganze ist eine Bittleiste. Die erste Zahl ist für den Eigentümer, die zweite für die Gruppe und die Dritte für alle. Für jeden dieser drei werden dann die drei Bits gesetzt (0 oder 1). Das Ganze in Binärcode übersetzt heiß z.B:

Ausführbar = ja, schreibbar = ja, lesbar=ja: 1 x 20 + 1 x 21 + 1 x 2² = 1 + 2 + 4 = 7

Ausführbar = ja, schreibbar = nein, lesbar=ja: 1 x 20 + 0 x 21 + 1 x 2² = 1 + 0 + 4 = 5

Ausführbar = nein, schreibbar = ja, lesbar=ja: 0 x 20 + 1 x 21 + 1 x 2² = 0 + 2 + 4 = 6

Legen wir mal im Homeverzeichnis des users pi eine Datei an. Ich erstelle vorher meist noch das Unterverzeichnis bin.

joe bin/update-pi.sh

in die Datei schreiben wir folgendes Script:

#!/bin/sh
sudo apt-get update
sudo apt-get upgrade -y

Mit STRG K X beendet man den Editor und speichert die Datei ab.

Dieses kleine Script führt nach seinem Aufruf automatisch ein Systemupdate durch. Allerdings ist es noch nicht ausführbar. Mit

chmod 755 bin/update-pi.sh

ändern wir das.

Wir können es auch gleich testen. Sind wir im Homeverzeichnis reicht die Eingabe

update-pi.sh

um das Script zu starten (das System sucht in den bin-Verzeichnissen.). Ansonsten muss man den Pfad bis zur Datei mit angeben. Ist man im gleichen Verzeichnis muss die Datei mit einen vorangestellten Punkt aufgerufen werden: .update-pi.sh

Erläuterung: Die erste Zeile in der Scriptdatei gibt dem System einen Hinweis, mit welchem Programm das Script ausgeführt werden soll (in unserm Fall die Shell). Für Phyton-Programme verwendet man #! /usr/bin/phyton.


Autostart

Eine Autostartfunktion gibt es unter Linux natürlich auch. Dieses wird vom System-Daemon systemd verwaltet. Als erstes brauchen wir dazu eine entsprechende Initialisierungsdatei.

joe update-pi.service

[Unit]
Description=Update Rasberry Service
After=network.target auditd.service

[Service]
ExecStart=/home/pi/bin/update-pi.sh &

[Install]
WantedBy=multi-user.target

Description ist nur eine Beschreibung, welcher Dienst hiermit gestartet wird.
After gibt an, welche Dienste vorher definitiv laufen müssen (da die Update-Funktion eine Netzwerk braucht, muss dieses natürlich vorher gestartet werden.)
ExecStart gibt den Pfad zu unserer Scriptdatei an. Das & dahinter bewirkt, dass das Scipt sofort weiterläuft und nicht darauf wartet, dass das ganze Update beendet ist.
WantedBy sagt, welcher Zieldienst diese Datei benötigt.

Mit diesen Angaben kann der System-Daemon unseren Dienst genau zur richtigen Zeit starten (im Gegensatz zu früher werden die Dienste nicht streng nacheinander gestartet sonder parallel (sofern die Startbedingungen erfüllt sind), damit verkürzt sich der Hochlauf).

Wir kopieren dann diese Datei noch ins Verzeichnis /etc/systemd/system (mc mit sudo verwenden).

Dann sagen wir dem systemd noch Bescheid:

sudo systemctl enable update-pi.service

Damit wird unser Script automatisch für den nächsten Neustart eingetaktet.

mit sudo systemctl start update-pi.service können wir unser Script auch schon mal testweise starten.

ps xa zeigt uns dann alle ausgeführte Programme, da müsste eine der update-Dienste laufen.