Installationsanleitung Diglit Pis

Achtung: Dies ist eine alte Version von Diglit. Für die neue Version, siehe die Installationsanleitung Diglit 3.

Hinweise

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.

Betriebssystem

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).

SSH-Zugriff

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.

Setup

raspi-config

Zunächst grundlegende Einstellungen setzen:

sudo raspi-config

Folgende Einstellungen müssen vorgenommen werden:

Allgemeine Config

Raspi-config beenden, ohne neuzustarten. Anschließend mit sudo nano folgende Config-Dateien bearbeiten:

HDMI-Einstellungen (optional; falls das Bild nicht richtig funktioniert)

Folgende Zeilen in /boot/config.txt an den Anfang einfügen:

disable_overscan=1
hdmi_force_hotplug=1

Debug beim Hochfahren deaktivieren (optional)

Inhalt von /etc/update-motd.d/10-uname:

#!/bin/sh

Die zweite Zeile wird also gelöscht.

Leerer Startbildschirm (optional)

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.

RTC-Module

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.

Diglit

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

Tokens

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

FERTIG

Den Pi runterfahren:

sudo halt -p

yay