Achtung: Dies ist eine alte Version von Diglit. Für die neue Version, siehe die Installationsanleitung Diglit 3.
Wir haben schlechte Erfahrungen damit gemacht, die Daten per WLAN runterzuladen. Für maximale Zuverlässigkeit und Stabilität empfehlen wir unbedingt Ethernet.
Den omxplayer, den wir für dieses Projekt verwendet haben, gibt es nur für 32-bit Systeme. Daher sollte (auch auf einem Pi 4) ein 32-bit Betriebssystem installiert werden.
Anmerkung (September 2022): Das Paket omxplayer wird seit Raspbian Bullseye (Debian 11) nicht mehr über apt vertrieben.
Daher ist es am einfachsten, eine alte, auf Debian 10 basierende Version zu installieren.
Diese findet man hier, Releasedatum im Mai 2021: https://downloads.raspberrypi.org/raspios_lite_armhf/images/
[Erprobt wurde dieses System mit Raspbian (oder Raspberry Pi OS oder was auch immer). Das gibt es hier: https://www.raspberrypi.org/software/operating-systems/. Zum aktuellen Zeitpunkt (2021-09-28) heißt das korrekte System Raspberry Pi OS Lite.]
Das runtergeladene Image auf eine SD-Karte flashen, entweder per Terminal mit dd oder mit Balena Etcher (empfohlen).
Nachdem der Prozess durchgelaufen ist, muss ein Netzwerkzugriff sichergestellt werden, und ssh aktiviert werden.
Bei Tastaturzugriff kann ssh auch später über raspi-config aktiviert werden.
Die Option befindet sich unter 3 Interface Options → P2 SSH.
WLAN kann ebenfalls auf diesem Weg konfiguriert werden, über 1 System Options → S1 Wireless LAN.
Das ist der komfortablere Weg, wenn die SD-Karte mit Windows geflasht wurde, oder man keine Zugriffsrechte für die Bootpartition hat.
Wenn SSH nicht benötigt wird (s.o.), können die folgenden Schritte bis Setup übersprungen werden.
Um ssh zu aktivieren und ggf. WLAN-Zugangsdaten zu konfigurieren, ein Terminal öffnen und folgende Befehle ausführen:
Hier ist es sinnvoll, die SD-Karte raus- und wieder einzustecken (ja, das ist kein Witz). Fenster, die dabei aufgehen, können ignoriert werden.
cd "/media/$(whoami)/boot"
Unter manchen Systemen wird die boot-Partition benutzerunabhängig gemountet.
Sollte das Verzeichnis nicht existieren, könnte der Mountpoint stattdessen unter /media/boot liegen.
Unter macOS befindet sich der Mountpoint unter /Volumes/boot.
touch ssh
Falls der Pi über WLAN betrieben werden soll, folgende Config-Datei bearbeiten:
nano wpa_supplicant.conf
Inhalt von wpa_supplicant.conf:
country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="WLANNAME"
scan_ssid=1
psk="WLANPASSWORT"
key_mgmt=WPA-PSK
}
Anschließend die SD-Karte in einen Pi stecken und diesen anschließen.
Wenn der Pi über Tastatur und Bildschirm verfügt: Bildschirm einschalten, Tastatur anschließen. Lite-Systeme booten in ein Terminal mit auto-login.
Wenn nur Netzwerk verfügbar ist: Ein Terminal öffnen, und eine ssh-Verbindung aufbauen:
ssh pi@raspberrypi
In manchen Netzwerken muss man an den Hostname noch eine TLD anhängen, zum Beispiel pi@raspberrypi.local. Notfalls muss man sich über die lokale IP-Adresse (pi@192.168.x.x) verbinden, diese findet man über WLAN-Router, Tools wie nmap oder Herrn Baldauf. Außerdem wird sie beim Booten kurz über der Anmeldeaufforderung ausgegeben, wenn ein Bildschirm angeschlossen ist.
Das Standardpasswort ist raspberry.
Wenn mehrere Pis hintereinander eingerichtet werden, kann es zu Problemen mit den ssh-Keys kommen.
Das äußert sich durch ein host key verification failed oder so.
In diesem Fall muss der Eintrag für den betreffenden Hostname in ~/.ssh/known_hosts entfernt werden.
Das geht mit nano, oder am einfachsten mit
ssh-keygen -R "raspberrypi.local"
Sollte das, warum auch immer, nicht funktionieren, kann man notfalls alle Keys löschen:
rm -f ~/.ssh/known_hosts
Das ist eigentlich eine sehr schlechte Idee, aber in manchen Kontexten (Schulrechner) funktioniert das.
Zunächst grundlegende Einstellungen setzen:
sudo raspi-config
Folgende Einstellungen müssen vorgenommen werden:
1 System Options → S3 Password: Anmeldepasswort setzen. Wir verwenden auf allen Pis das gleiche Passwort, bitte separat erfragen. Dieses Passwort wird unverändert auf allen Pis verwendet. Die Zahlen werden nicht verändert.
1 System Options → S4 Hostname: Hostname setzen. Im Rahmen des StudWoErPro v2 vergeben wir die Hostnames folgendermaßen:
| Hostname | Ort |
|---|---|
diglit20 |
FG2, Foyer |
diglit21 |
FG2, 1. Etage |
diglit22 |
FG2, 2. Etage |
diglit23 |
FG2, 3. Etage |
diglit30 |
FG3, Foyer |
diglit31 |
FG3, 1. Etage |
diglit32 |
FG3, 2. Etage |
diglit33 |
FG3, 3. Etage |
| Hostname (reserviert) | vorgesehene Verwendung |
|---|---|
diglit00 |
zum Entwickeln |
diglit01-09 |
legacy (Litfaßsäule) |
diglit10-19 |
FG1 |
diglit80-89 |
HG |
diglit24-29 |
zusätzliche Etagen FG2 |
diglit34-39 |
zusätzliche Etagen FG3 |
diglit20a-23z |
zusätzliche Bildschirme FG2 |
diglit30a-33z |
zusätzliche Bildschirme FG3 |
diglit99 |
undefinierbare Gebäudenummer |
2 Display Options → D2 Underscan → Yes: nervigen schwarzen Rand entfernen
2 Display Options → D4 Screen Blanking → No: der Bildschirm soll an bleiben.
5 Localisation Options → L2 Timezone: Zeitzone auf Berlin einstellen
Raspi-config beenden, ohne neuzustarten. Anschließend mit sudo nano folgende Config-Dateien bearbeiten:
Folgende Zeilen in /boot/config.txt an den Anfang einfügen:
disable_overscan=1
hdmi_force_hotplug=1
Inhalt von /etc/update-motd.d/10-uname:
#!/bin/sh
Die zweite Zeile wird also gelöscht.
in /boot/cmdline.txt
console=tty1
ersetzen durch
console=tty3 quiet logo.nologo vt.global_cursor_default=0
Die ganze Datei steht auf einer Zeile.
Um unabhängig vom Internetz zu einer bestimmten Zeit den Pi runterfahren zu können, kann ein optionales Real-Time-Clock-Modul angebracht werden. Dieses wird wie folgt konfiguriert:
Folgende Zeile am Ende von /boot/config.txt einfügen:
dtoverlay=i2c-rtc,ds3231
In /lib/udev/hwclock-set folgende drei Zeilen auskommentieren:
if [ -e /run/systemd/system ] ; then
exit 0
fi
Den Pi neustarten (spätestens hier sollte das Modul verbunden werden):
sudo reboot
In raspi-config die Zeitzone einstellen (siehe Setup › raspi-config).
Anschließend folgenden Befehl ausführen:
sudo hwclock -w
Ob die Uhr funktioniert, kann mit folgendem Befehl getestet werden:
sudo hwclock -r
hwclock muss mit entsprechenden Berechtigungen (sudo) ausgeführt werden, damit es funktioniert.
Leider gibt es keine vernünftige Fehlermeldung, wenn man das vergisst,
und ich habe heute zwei Stunden mit Fehlersuche verbracht, bis ich bemerkt habe, was das Problem war.
Für den Vetertunsgsplan müssen einige Skripte installiert werden, dazu gibt es ein nützliches Installscript:
Das Installscript ist seit 2024-09-14 deprecated.
curl "https://diglit.gcm.schule/install2.sh" | bash
Zusätzlich muss ein Cronjob konfiguriert werden:
sudo crontab -e
Wenn an dieser Stelle nach einem Editor gefragt wird, einfach die 1 mit Enter bestätigen (Eingabeaufforderung frei lassen).
Folgendes setzen:
* * * * * /bin/bash /home/pi/diglit.sh
30 14 * * * /sbin/shutdown -h now
Um API-Zugriff durch Unbefugte (Emil M.) zu vermeiden, muss für jeden Pi ein Token generiert werden. Dafür gibt es ein Skript, was unter folgender URL aufgerufen werden kann (Stand 2021-09-30):
https://diglit.gcm.schule/generate_token.php?secret=GEHEIM&hostname=HOST
In der URL muss GEHEIM mit dem geheimen Schlüssel (separat erfragen) und HOST mit dem Hostname des Pi (siehe Tabelle unter Setup) ersetzt werden.
Das Skript generiert einen 42-stelligen (danke Mika) Token. Dieser muss in ~/.config/diglit/diglit.conf eingetragen werden (hier beispielhaft für den Token foo123):
api_url=https://diglit.gcm.schule/vp.api?token=foo123
Den Pi runterfahren:
sudo halt -p
yay