Skip to content

Instantly share code, notes, and snippets.

@rzbrk
Last active September 1, 2021 10:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rzbrk/58d1a4f16b631da597800ee4679a0423 to your computer and use it in GitHub Desktop.
Save rzbrk/58d1a4f16b631da597800ee4679a0423 to your computer and use it in GitHub Desktop.
Anleitung zur Konfigurations-Änderung für das Astro Pi IR OS

Anleitung zur Einrichtung von Astro Pi IR OS für die Benutzung am Boden

Beschreibung

Astro Pi IR OS ist eine modifizierte Version des Betriebssystems Raspberry Pi OS, welche von der Raspberry Pi Foundation für den Astro Pi IR auf der Raumstation entwickelt wurde. Er ist für die dortigen Netzwerke vorkonfiguriert und security-hardened. Für eine komfortable Nutzung am Boden sind einige Änderungen empfehlenswert, die in dieser Anleitung beschrieben sind. Diese Änderungen wirken sich allerdings nicht auf die Repräsentativität aus, so dass dieses modifizierte Astro Pi IR OS für die Tests mit dem CalliopEO verwendet werden können.

Wichtig

Damit das System repräsentativ ist, sollte kein Update durchgeführt werden oder Software bzw. System-Dienste nachinstalliert werden. Diese Anleitung ist "minimal-invasiv" und beschreibt nur die erforderlichen Änderungen für einen sinnvollen Betrieb des Astro Pi OS am Boden.

ToDo

  • Statische Netzwerkkonfiguration für den Fall, dass DHCP nicht funktioniert oder nicht zur Verfügung steht
  • Zeit per ntp synchronisieren ohne zusätzliche Pakete zu installieren
  • Beschreibung der Verbindung via WLAN

Vorbedingung

Benötigt wird:

  • Raspberry Pi 3B+ oder 4, RAM ist nicht kritisch
  • Eine SD-Karte mit mindestens 8 GB Kapazität
  • Ein USB Netzteil
  • Ein Netzwerkkabel
  • Ein Netzwerk-Router mit aktiviertem DHCP Server
  • Ein Monitor
  • Eine USB-Tastatur
  • Optional: Bild des englischen Tastatur-Layouts (GB)
  • Einen separaten PC im gleichen Netz wie der Raspberry Pi mit einem SSH-Client

Zunächst das Archiv mit dem OS Image entpacken. Dieses sollte folgende Dateien enthalten (mit md5 Prüfsumme):

# md5sum *
11812893b67d7b810a9adbc4185c3a77  AstroPI_30062021
175af8ae46657cc09664e918f932c35e  credentials.txt

Die Datei credentials.txt enthält die Kennwörter für die User root und pi, und die Datei AstroPI_30062021 ist das OS Image.

Das Image kann nun auf dem separaten Rechner auf die SD-Karte geschrieben werden. Unter Windows wird das Tool "Raspberry Pi Imager" empfohlen, siehe https://www.raspberrypi.org/software/.

Die SD-Karte wird anschließend in den Raspberry Pi gesteckt. Nun den Monitor und die USB-Tastatur an den Raspberry Pi anschließen. Verbindet man nun das USB-Netzteil, wird der Raspberry Pi mit dem Astro Pi OS gebootet.

Konfigurations-Änderungen

Ist der Boot-Vorgang abgeschlossen, erscheint ein Login-Prompt. Bitte mit dem User root und dem zugehörigen Kennwort anmelden. WICHTIG: Das Astro Pi OS hat englisches Tastatur-Layout (GB)!

Änderung des Tastatur-Layouts

Nach erfolgreichem Login wird zunächst das Tastatur-Layout auf deutsch geändert. Hierzu die Datei /etc/default/keyboard mit dem Editor nano öffnen:

# nano /etc/default/keyboard

WICHTIG: Bei Befehlen dieser Anleitung ist das vorangestellte #-Zeichen NICHT Bestandteil des Kommandos und braucht nicht eingegeben zu werden!

Die Datei sollte nun wie folgt geändert werden:

# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL="pc105"
#XKBLAYOUT="gb"
XKBLAYOUT="de"
XKBVARIANT=""
XKBOPTIONS=""

BACKSPACE="guess"

Die geänderte Datei kann nun mit STRG+o gespeichert und anschließend der Editor mit STRG+x verlassen werden. Anschließend den Raspberry Pi mit folgendem Befehl neu starten:

# reboot

Nun wieder als root einloggen.

Änderung der Netzwerk-Konfiguration (dynamische Adressvergabe mittels DHCP)

Jetzt wird die Netzwerk-Konfiguration geändert, damit der Raspberry Pi über ein Netzwerk-Kabel mit einem Router verbunden werden kann, auf das Internet zugreifen und per SSH remote bedienbar ist.

Zunächst erstellen wir einige Sicherheits-Kopien von Config-Dateien und deaktivieren die Firewall-Regeln (iptables):

# cp /etc/network/interfaces /etc/network/interfaces.bak
# cp /etc/rc.local /etc/rc.local.bak
# cp /etc/iptables/rules.v4 /etc/iptables/rules.v4.bak
# cp /etc/iptables/rules.v6 /etc/iptables/rules.v6.bak
# echo "" > /etc/iptables/rules.v4
# echo "" > /etc/iptables/rules.v6

Nun editieren wir die Datei /etc/network/interfaces:

# nano /etc/network/interfaces

Die Datei sollte wie folgt aussehen:

# interfaces(5) file used by ifup(8) and ifdown(8)

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface etho inet dhcp

allow-hotplug wlan0
iface wlan0 inet dhcp
        wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

iface default inet dhcp

Die Datei mit STRG+o speichern und nano mit STRG+x verlassen.

Damit der Raspberry Pi bei folgenden Reboots automatisch eine IP Konfiguration voim Router holt, muss noch die Datei /etc/rc.local im Editor nano wie folgt ergänzt werden:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Get DHCP lease
dhclient

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

# Set hung_task_panic tunable
echo 1 > /proc/sys/kernel/hung_task_panic

exit 0

Die Datei speichern und schließen.

Nun kann der Raspberry Pi mit dem Netzwerkkabel mit dem Router verbunden werden. Anschließend den Raspberry Pi mit dem Befehl reboot neu starten.

Der Raspberry Pi hat nach dem Reboot den Namen "astropiir". Normalerweise sollte jetzt ein Zugriff per SSH möglich sein. Hierzu auf dem separaten Rechner eine Verbindung zu

root@astropiir

herstellen. Es muss das Kennwort eingegeben werden.

Ändern der Systemzeit

Der Raspberry Pi hat keine Echtzeituhr. Das Astro Pi OS synchronisiert auch nicht die Systemzeit automatisch bspw. via NTP. Am einfachsten ist es, die Systemzeit händisch auf UTC zu setzen. Das ist erforderlich, weil sonst bspw. einige Netzwerkzugriffe nicht funktionieren. Eine Genauigkeit von wenigen Minuten ist ausreichend.

Die aktuelle UTC zeit findet man bspw. im WWW heraus oder berechnet sie aus der Zeit in der lokalen Zeitzone. Dann die Uhrzeit als User root auf dem Raspberry Pi mit folgendem Befehl setzen:

# date -s 'YYYY-MM-DD HH:MM:SS'

WICHTIG: Nach einem Neustart oder Reboot ist die Zeit mit dem Befehl

# date

zu kontrollieren und ggf. wie oben beschrieben zu ändern!

SSH-Zugang für User calliope

Astro Pi OS ist so konfiguriert, dass sich standardmäßig nur die Benutzer root und pi mittels SSH auf den Astro Pi einloggen können. Um sich remote als User calliope auf den Astro Pi einzuloggen, muss also der "Umweg" über die oben genannten Nutzer genommen werden.

Allerdings kann der User calliope ebenfalls für den SSH-Zugang berechtigt werden, was es auch ermöglicht, einfacher Dateien zwischen dem Home-Verzeichnis des Users calliope und einem anderen Rechner mittels des Protokolls SCP auszutauschen.

Um die SSH-Einstellungen zu ändern, muss die Datei /etc/ssh/sshd.config als User root geöffnet werden:

# nano /etc/ssh/sshd_config

Nun die Zeile suchen, die mit AllowUsers beginnt. In dieser Zeile sollten bereits die User pi und root stehen. Diese Zeile nun um den User calliope erweitern. Anschließend die Datei speichern und den Editor beenden. Damit diese Änderungen der Einstellungen wirksam werden, kann man den Astro Pi neu starten (reboot) oder den Dienst ssh neu starten. Letzteres funktioniert mit folgendem Befehl (als User root):

# systemctl restart ssh

Nun kann man sich von einem entfernten Rechner verbinden zu:

calliope@astropiir

Dateien können mit dem Befehl scp ausgetauscht werden. Um bspw. von einem anderen Linux Rechner die Datei myProg.zip auf den Astro Pi zu kopieren, kann folgender Befehl ausgeführt werden:

$ scp myProg.zip calliope@astropiir:calliopEO/.

Dabei wird das Programm direkt in das Verzeichnis /home/calliope/calliopEO/ auf dem Astro Pi kopiert.

Herunterladen der CalliopEO Software

Zunächst sicherstellen, dass man als User root eingeloggt uns sich im home Verzeichnis /root befindet.

Zunächst das CalliopEO git repository klonen (herunterladen):

# git clone https://github.com/calliope-edu/CalliopEO_AstroPi/

Jetzt in das Verzeichnis des Repositories wechseln:

# cd CalliopEO_AstroPi/

Das Repository enthält mehrere Versions-Stände der Software, zwischen denen gewechselt werden kann. Alle Versionen können mit folgendem Befehl ausgegeben werden:

# git tag

Beispiel-Ausgabe:

# git tag
v1.0.0
v1.0.1
v1.1.0
v1.1.0-essential
v1.1.1
v1.1.1-essential
v1.2.0
v1.2.0-essential

In die gewünschte Version kann nun mit folgendem Befehl gewechselt werden (Beispiel):

# git checkout v1.1.1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment