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