Betriebssystem

RASPBERRY Pi Betriebssystem

In dem VHS-Kursen verwende ich das LINUX OS. Die gemeinsame Installation hat bisher einen großen Anteil der Zeit für Download und Basiskonfiguration vom Workshop in Anspruch genommen. Dabei war der Download und das Initiale erstellen der SD-Karte das größte zeitliche Hindernis. In den Kursen selbst ist keine Zeit, um Dienste zu installieren oder Fehler zu beseitigen. Um diese Zeit zu entzerren, stelle ich ein eigenes angepasstes OS-Image für den Kurs bereit. Dieses Image hat bereits die gesamte Software installiert und ist mit allen Komponenten für diesen Kurs lauffähig.

Bisher hatte ich immer ein Image auf dem PI4 erstellt und dieses wurde dann auf Pi3, Pi4 und Pi5 verwendet. Diese Methode ist auf Pi3 und Pi5 durch die unterschiedliche Hardware nur arbeitsintensiv lauffähig. Die neue Art der Bereitstellung basiert auf einem Standard OS von Raspberry und installiert automatisiert die entsprechenden Komponenten nach und konfiguriert diese. Das Ergebnis ist eine für das Zielsystem, unabhängig von der Art des Pis (Pi3, Pi4, Pi5) und Architektur (32/64Bit), optimierte POSTINSTALLATION.

„Postinstall“ bedeutet auf Deutsch „nach der Installation“ oder „nach der Installation durchzuführend“. Es bezieht sich typischerweise auf Aktionen oder Prozesse, die nach der Installation einer Software oder eines Pakets durchgeführt werden müssen. Dies kann das Konfigurieren von Einstellungen, das Ausführen von Skripten oder das Installieren von zusätzlichen Abhängigkeiten umfassen, die nach der Hauptinstallation erforderlich sind

Quelle: Chat GPT

Die Bereitstellung der Disk-Images von meinem Entwicklungssystem wird also zukünftig entfallen. Anstelle des Images stelle ich ein Installationsskript bereit, dieses installiert die Komponenten automatisiert.

TIP: Die Speicherkarte kann und sollte bereits zu Hause erstellt und konfiguriert werden

Die Anleitungen auf dieser Webseite sind in aufklappbaren Sektionen (Textabschnitte) aufgeteilt. Dieses dient der Lesbarkeit der Webseite und dient der Übersicht.

OS-Image Download und schreiben der SD-Karte

SD-CARD beschreiben – Hinweise und weitere Informationen für die unterschiedlichen Versionen

Für Version 1.x gilt, ich verwende für meine Kurse einen Raspberry PI 400, also ein Modell 4, mit einer 16GB SD-Card. Das installierte OS basiert auf der Lite Version. Die Lite Version beinhaltet keine Desktop Version und ist die „schlankeste“ verfügbare Version. In diesem Image installiere ich die für den Kurs benötigten Pakete nach. Die Node-Red Konfiguration und die enthaltenen Flows sind auf mein RASPI-DEV Board angepasst.

Für Version 2.x gilt, ich verwende für meine Kurse einen Raspberry PI 400, einen PI mit 2GB und einen PI5 mit 4GB also Modelle 4 und 5, mit einer 32GB SD-Card. Das installierte OS basiert auf der Desktop Version (recommended Software). In diesem Image installiere ich die für den Kurs benötigten Pakete nach. Die Node-Red Konfiguration und die enthaltenen Flows sind auf mein RASPI-DEV Board angepasst.

In dem OS-Image ist die WLAN-Konfiguration auf den Kurs eingestellt (SSID = RASPI, Kennwort vhskurs22) und der Hostname lautet „instructor„. Der Benutzer lautet pi. Für alle Services und den Benutzer root und pi wird das Kennwort „vhskurs22“ verwendet. Bitte ausschließlich Benutzer pi an legen, kleingeschrieben!

Erstellung der OS-Images

Postinstallation nach fresh Install

Nachfolgendes Bild zeigt die Übersicht nach der Installation mit Version ab 2.1.8 und höher.

Übersicht & Architektur, installierte Umgebung mit Basisimage ab V.2.1.8
Postinstall, unbeaufsichtigter Installationsvorgang auf dem BasisImage für Version 2.1.x (2.1.9)

Mit dem Raspi Imager zuerst das entsprechende Image für die Plattform wählen und die Speicherkarte erstellen. 32/64 Bit ist generell möglich. Mit diesem Image den Raspi starten und anschließend in einem Terminalfenster den Befehl ausführen. Ich empfehle den Benutzer pi und das Kennwort vhskurs22 zu verwenden. Die Laufzeit beträgt je nach Plattform und Internetanbindung ca. 15-45 Minuten. Am Ende der Installation erfolgt ein Neustart. Ab Pi4 bitte die 64Bit Variante verwenden.

bash <(curl -sL https://www.georg-keller.de/VHS/postinstall.sh) | tee postinstall_2.1.9.log

Archiv (alles, was vor Version 2.1.8 erstellt wurde)

Archive – < Version 2.1.8

Hinweise zur Erstellung des Images. Diese Version kann auch für FULL-BACKUPS verwendet werden

Die Images werden automatisiert per script erstellt, um bei jeder Erstellung die identische Methode anzuwenden. Das Verfahren ist mehrfach erprobt und vertestet mit unterschiedlichen HW-Versionen. Hier das verwendete Script.

#!/bin/bash
#
# Variablen definieren
#
export version=$1
export datum=`date +%Y%m%d_%H-%M`
export pfad="/media/pi/e010bb68-a3b6-4e3c-928f-092be4a4f16a/"
export rootpartition="/dev/mmcblk0"
export partition=`echo $rootpartition | cut -f2 -d"/"`
export dateiname="_RASPI-DEV-BOARD-V$version.img"
export blocksize="4M"
export pishrink="/home/pi/bin/pishrink.sh"
#
# HDD Image erstellen
#
sudo dd if=$rootpartition of=$pfad$datum$dateiname bs=$blocksize
#
# PISHRINK ausfuehren
#
sudo $pishrink -avZ $pfad$datum$dateiname

Download VHS RASPI OS-IMAGE für SD-CARD

Das Release Datum der OS-Version ist 10.10.2023 und basiert auf Kernel 6.1. (BOOKWORM). Neueste Version oben.

Raspberry Pi Zero: Image Version 1.x

Diese Version ist primär für den Pi-Zero aufgrund des geringen Speichers und der geringen CPU-Leistung

Image Version 2.x ab 20231112
Images Version 1.x (Verwendung bis RASPI Workshop am 11.11.2023)

ACHTUNG: Die ZIP-Datei muss nach dem Download erst entpackt werden, bevor diese mit dem RASPI-IMAGER auf die SD-Card geschrieben wird.
Images mit der Dateiendung .xz können direkt mit dem Raspi-Imager geschrieben werden.

Schreiben der SD-CARD – Kurzanleitung für erfahrene Nutzer

Step by Step Anleitung
  1. OS-Image download und checksumme der Datei prüfen (siehe Release Notes)
  2. Raspi Imager starten
  3. OS-Image -> eigenes Image Wählen
  4. Speicherkarte auswählen -> empfohlen 16GB oder größer
  5. Anpassungen „Zahnrad“ -> Hostname, WLAN, Benutzer, Kennwort, … ändern
  6. schreiben

Schreiben der SD-CARD – Videoanleitungen

20231105: Videoanleitung
20231104: Videoanleitung

Schreiben der SD-CARD

schreiben der SD-CARD „Ausführliche Anleitung“

Zum Erstellen der SD-CARD sollte der RASPI-IMAGER in der aktuellen Version verwendet werden. Die SD-CARD muss min. 16GB groß sein. Die aktuelle Version des Imagers befindet sich auf der Raspberry PI Webseite. Als Betriebssystem ist hier „Eigenes Image“ zu wählen. Über das weitere Menü wird die heruntergeladene Image Datei ausgewählt. Bitte vorher die korrekten Größen der Datei prüfen. (Siehe Release notes weiter unten)

Die weiteren Einstellungen werden unter dem Zahnrad gemacht und sind optional. Ich empfehle den Hostname und die WLAN-Konfiguration anzupassen. Bei der WLAN-Konfiguration kann die WLAN SSID und Passwort bei euch zu Hause eingetragen werden, danach ist der Raspberry Pi mit eurem WLAN verbunden und Ihr könnt das Gerät und die zugewiesene IP-ADRESSE in der Übersicht des Routers finden.

Ändert Ihr den Hostnamen, hier kann ein beliebiger Name gewählt werden, so taucht der Raspi später in der Geräteliste des Routers auf. Der Name dient der Identifikation des Raspberry Pi und der durch den Router vergebenen IP-Adresse im Netzwerk. Wird der Raspberry Pi in einem VHS-KURS bei mir verwendet sollte der Hostname auf jeden Fall geändert werden, um Verwechselungen zu vermeiden und Eindeutigkeit sicherzustellen. Für eure eigene Umgebung ist es nicht notwendig.

Achtung: Während des ersten Startens das Raspberry Pi wird dieser mehrfach neu starten. Das ist notwendig, um die Konfiguration abzuschließen. Dabei werden die Änderungen am Betriebssystem eingestellt.

Finden des Raspberry Pi im Netzwerk – IP-Adresse bestimmen

Identifikation (finden) des Raspberry Pi im Netzwerk
  • Wenn der Raspi sich mit dem WLAN verbindet, kann die IP-Adresse im Router (DHCP-Server) gefunden werden
  • Wenn der Raspi sich nicht mit dem WLAN verbindet, kann auch eine Kabelverbindung mit dem Router helfen. Die zugewiesene Adresse ist ebenfalls im Router (DHCP-Server) zu finden
  • Im Image seit 20231105 wird die IP-Addresse und der Hostname auf dem Display des Raspi-DEV Boards angezeigt

Installierte Dienste, URLs und Ports

Dienste Übersicht
ServicePortBenutzerKennwortBemerkung
Node-Red1880
Node-Red Dashboard1880URL=.http://….:1880/ui
MQTT1883
mySQL3306rootvhskurs22
ssh22pivhskurs22
VNC5900vhskurs22VNC nur für Kontrollzwecke und Spiegelung der grafischen Oberfläche, @ und | gehen hier nicht
PiVPN1194UDP, openVPN-Basis
Services und Ports

Issues

Fehlerliste
  • Image Release Line 2.x gestartet – siehe Anpassungen 12.11.2023
  • @ und | Zeichen gehen nicht in grafischer Oberfläche im deutschen Tastatur Layout;
    – Die Zeichen gehen nur auf der VC nicht
    – Abhängig vom VNC Client kommen unterschiedliche Ergebnisse
    – In /etc/vconsole kann das Setting für die Console erfolgen
  • (solved, 20231104) Schriftart in grafischer Oberfläche im Terminal (xterm) klein. CTRL-Right MOUSE wechselt die Schriftart
  • (solved, 20231104) Angepasste Konfiguration im RASPI-IMAGER führt zum shutdown, kein start möglich
  • (solved, 20231104) alias ll auf ls -lisah nicht verfügbar

In Planung

Release Planung Version 2.x

Anpassungen (Release Notes)

20240205: Release Beschreibung Version 2.1

Am 24.1.24 startet die neue Kursserie bei der VHS mit der Infoveranstaltung. Damit startet auch die neue Version 2.1 des VHS-Images. Die neue Version basiert jetzt auf dem 64Bit-OS „BOOKWORM“ Kernel 6.1.

Die Releases folgen folgendem Muster:
– 2: Major Release für 2024
– 2.1 … 2.4 steht für das Quartal im Jahr
– 2.1.1 bis 2.1.x steht für das Subrelease im 1. Quartal
– ab 4. Quartal 2024 gibt es die Version 3.0 als Preview und Entwicklungsversion auf die Version 3.1

Das VHS-Image ist vorbereitet für den Grundkurs und beinhaltet:

  • OS mit grafischer Oberfläche inkl. VNC
  • NodeRed 3.1 inkl. der im Kurs genutzten Flows
  • MQTT
  • mariaDB SQL-Server inkl. der Konfiguration für die NodeRed Flows
  • Installierte Zusatzpakete sind: mc, pishrink, pigz,
  • Das Naming des Images hat sich geändert. Neben der Version kommt jetzt noch die Architektur und der Hinweis auf 32/ 64Bit dazu
  • Aufgrund von technischen Problemen mit Speicherkarten von GIGASTONE verwende ich für die Zusammenstellung/ Entwicklung jetzt 32GB SANDISK micro SD cards.

Ab Version 2.1.2 ist DOCKER inkl. Portainer vorinstalliert. Der Zugang zu Portainer erfolgt mit User=admin Kennwort=vhskurs22vhskurs22 URL=https://IP-des-Servers:9443

In Version 2.1.3 sind aktuelle Paketupdates enthalten. In der grafischen Oberfläche kann nach Windows Servern gesucht werden, nützlich für Zugriff auf NAS. In dem OLED Display Flow sind einige JavaScript Anpassungen vorgenommen bei den function nodes. Die Fehlermeldungen sind jetzt weg. Das Display zeigt nun auch die aktuelle VHS-IMAGE Version an. Die Information steht in der Datei /etc/os-vhs-release.

In Version 2.1.4 sind weitere Updates im OS installiert, in Node Red ist das LCD2004x eingebunden und in einigen Flows leichte Korrekturen vollzogen. Im Flow „Spielwiese“ ist die Aufbereitung des Datums für die Speicherung in der Datenbank dargestellt.

In Version 2.1.5 sind weitere Updates im OS installiert. Samba Fileservice ist als DOCKER-Container Service installiert. Die Zugangsdaten sind: user=pi, Kennwort=vhskurs22. Das Sharename ist public. Unter Windows kann das Share mit \\<IP-ADDR>\public angesprochen werden. Physikalisch liegt das Share unter /docker/fileservice/share/public. Auf dem Share liegen diverse Tools, welche im VHS-Kurs verwendet werden.

In Version 2.1.6 ist die Erstellung des Images automatisiert worden. Ab 2.1.6 wird ein Basisimage, hier 64Bit Version, auf eine SD-Card geschrieben. Per Skripting läuft auf diesem Image das Update, Installation und Konfiguration ab. Dieses Image wird dann auf der jeweiligen Plattform (PI3 bis PI5) gemacht. Das finale Image beinhaltet im Namen somit nicht nur die Architektur (arm-32, arm-64), sondern auch die Plattform (PI3 bis PI5). In diesem Release ist auch die Docker Installation enthalten mit Portainer (Mgnt-Weboberfläche) und Samba Fileserver, vgl. 2.1.5.

Version 2.1.7 enthält jetzt eine Lösung, um den DHT22 auf der PI5 HW anzusprechen. Dabei wird der Sensor über ein PYTHON Skript abgefragt und die Daten werden von der Console in NodeRed eingelesen. Das Skript liegt im Ordner /home/pi/dht22.py und das Shellskript für die Abfrage ist /home/pi/dht22.sh Die Lösung ist mit Pi3..Pi5 verprobt und im NodeRed Flow eingebaut. Die automatische Installation setzt nun auch die Hostnames auf VHSPIxxx (xxx=3-stellige Zufallszahl 100-999). Die aktuelle build-version wird in motd geschrieben, ist also bei der Anmeldung per ssh zu sehen.
Die automatisierte Installation auf Basis des Standard-Images läuft ziemlich gut und stabil durchgängig auf allen 3 Plattformen, Pi3B bis Pi5. Aus dem Grund wird es noch max. ein 2.1.8 Image geben und zukünftig nur noch die Anpassung am Post-Installation-Skript.

20231120: Release Beschreibung Version 1.0.1 Pi-Zero

Dieses Release ist primär für den Pi-Zero und basiert auf minimal Installation 32-Bit und enthält Node-Red, MQTT, mariaDB und Basisinstallation PiVPN

20231112: Release Beschreibung Version 2.0

Neues Release auf Basis der Bookworm Desktop Variante 32Bit gestartet. Die neue Version enthält das OS mit grafischer Oberfläche, deutsche Tastatur innerhalb der grafischen Oberfläche. Installierte Services sind Node-RED, Mosquitto und mariaDB (mySQL).

Zur besseren Übersicht sin nun auch die Versionsnummern im Dateinamen enthalten.

20231110: Release Beschreibung

Hier sind die Node-RED Anpassungen zur Anzeige der IP-Adresse und des Hostnamens enthalten

  • sha256 checksum 23506a989970e6fdba031fdc03759f3d0897c6aefc86aa1aeb763659d6a44486

Achtung: Noch kein Test mit dem IMAGE gemacht

20231105: Release Beschreibung

XTERM Einstellungen angepasst, Rechte Maustaste auf das Symbol -> Einstellungen -> Befehl „xterm -fa default -fs 12

Im Verzeichnis /etc/profile.d/ eine Datei 00-alias.sh mit execute Flag gesetzt erstellt. Hier können beliebige weitere hinzugefügt werden. Der Inhalt ist: €

# /etc/profile.d/10-alias.sh
#
alias ll='ls -lisah'
alias xterm='xterm -fa default -fs 12'
  • SHA Checksum e559d2fa86aca792f0f2f205b5a75921792be7e2fc43f4f6c10e4cc380080d93
IDStatusTest-Case & TestbedingungenSD-CARDSD-CARD-HerstellerTestsystemKonfigurationImager VersionMeldung, Hinweis
1ErfolgreichImage mit Anpassung16GBGIGASTONEPi400-DE, Pi3BHostname, WLANLin 1.75mehrfache Neustarts
Test-Ergebnisse
20231104: Release Beschreibung

Wird im Raspberry Imager eine angepasste Konfiguration erstellt, so schreibt der Imager in das Verzeichnis /boot eine Datei mit dem Namen firstrun.sh. Aufgerufen wird diese Datei aus der /boot/cmdline.txt. In der Datei firstrun.sh sind Befehle enthalten, welche dem Imager ermöglichen die Konfiguration anzupassen. Diese Befehle werden mit dem Paket raspberrypi-sys-mods installiert. Sind diese Programme (dieses Paket) nicht installiert, bricht der Bootprozess ab. Die Installation des Pakets zieht einige Abhängigkeiten nach. Das Paket ist quasi das Gegenstück zum Raspberry-Imager.

sudo apt install raspberrypi-sys-mods
  • sha256 Checksum f9dee0cb4695b91b4d45931a84b64e94e3f903e9b7c1bec6825e8b8f9a0a4a4
  • Unter Windows kann in der Powershell mit dem Befehl „Get-FileHash RASPI-OS-IMAGENAME -Algorithm SHA256“ die Checksumme geprüft werden
IDStatusTest-Case & TestbedingungenSD-CARDSD-CARD-HerstellerTestsystemKonfigurationImager VersionMeldung, Hinweis
1ErfolgreichImage mit Anpassung32GBSANDISKPi400-DEHostname, WLANLin 1.75mehrfache Neustarts
2ErfolgreichImage mit Anpassung16GBGIGASTONEPi400-DEHostname, WLAN, USER, LANDWin 1.8.1mehrfache Neustarts; startet nicht in die grafische Oberfläche. Nach „sudo init 5“ Grafikmode auch vorhanden, raspi-config -> 1 -> B4 startet danach korrekt im Runlevel 5
3ErfolgreichImage mit Anpassung16 GBGigastoneRaspi 3B V1.2Hostname, WLANLin 1.7.5Mehrfache Neustarts
Test-Ergebnisse
20231103: Release Beschreibung

Der Datenbankserver (MariaDB, mySQL) läuft nun auch auf jedem Netzwerk-Interface. Dazu ist die Datei /etc/mysql/mariadb.conf.d/50-server.cnf angepasst.

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#
# angepasst auf 0.0.0.0, 3.11.2023
#bind-address            = 127.0.0.1
bind-address            = 0.0.0.0
  • Die Images haben jetzt einen Zeitstempel im Dateinamen
  • Das Image kann nicht mehr auf 8GB SD-Cards geschrieben werden, bitte 16GByte verwenden oder größer, minimale Größe 9.1GByte
  • sha256 Checksum 2ab7e47e405e662937dd3b37bac3861bb83dfcfaff1a5a98fb5870fa4bd7b4ff
  • Unter Windows kann in der Powershell mit dem Befehl „Get-FileHash 20231103_14-52_RASPI-DEV-BOARD-V1.img.xz -Algorithm SHA256“ die Checksumme geprüft werden
IDStatusTest-Case & TestbedingungenSD-CARDSD-CARD-HerstellerTestsystemKonfigurationImager VersionMeldung, Hinweis
1FehlerImage ohne Anpassung16GBGIGASTONEPi400-DELin 1.75System geht nach hochfahren immer wieder aus
2ErfolgreichImage ohne Anpassung32GBSANDISKPi400-DELin 1.75
3ErfolgreichImage ohne Anpassung16GBVERBATIMPi400-DELin 1.75
4FehlerImage mit Anpassung32GBSANDISKPi400-DEHostnameLin 1.75Fehler beim schreiben während fsync
5FehlerImage mit Anpassung16GBVerbatimPI400-DEHostnameLin 1.75System geht nach hochfahren immer wieder aus
6FehlerImage mit Anpassung32GBSANDISKPI400-DEHostnameWin 1.8.1System geht nach hochfahren immer wieder aus
7ErfolgreichImage ohne Anpassung32GBSANDISKPI400-DEWin 1.8.1
8FehlerImage mit Anpassung32GBSANDISKPI400-DEWIFIWin 1.8.1System geht nach hochfahren immer wieder aus
Test-Ergebnisse
20231030: Release Beschreibung

Diese Version beinhaltet bereits die Anpassungen für PIVPN und diverse Anpassungen in der grafischen Oberfläche. Das OS-IMAGE ist von einer 8GByte SD-CARD erzeugt. Größere Karten sind nutzbar, kleiner jedoch nicht.

  • In der grafischen Oberfläche konnte ich bisher das @ Zeichen nicht eingeben.
  • sha256 Checksum badffab1b3e31f56e30926869616396091965a6765aa465fdbea5975caa51158
20231029: Release Beschreibung

Die Version ist ein aktueller Abzug nach dem Raspberry Pi Workshop am 27.10.23 in Schloss-Hote.

Das OS-IMAGE ist für den download gezipped. Die entpackte Datei (20231029_RASPI-DEV-BOARD-V1.img). Die Dateigrößen sind im folgenden Screenshot zu sehen.

Der Mosquitto Server läuft jetzt auf allen Interfaces und ein Zugriff ist ohne Sicherheit möglich. Diese Umgebung ist für den VHS-Kurs und sollte so nicht produktiv genutzt werden. Hier die Anpassung in der /etc/mosquitto/mosquitto.conf

bind_address 0.0.0.0
allow_anonymous true
20231024: Release Beschreibung

x11vnc greift auf die Konfiguration von X11 zu. Aus diesem Grund muss die Konfiguration der Auflösung in der X11 Konfiguration erfolgen. Zunächst muss ein Dummy Monitor installiert werden.

sudo apt-get install xserver-xorg-video-dummy

Als nächstes muss die Datei /etc/X11/xorg.conf angepasst oder erstellt werden (falls sie nicht vorhanden ist). Folgender Inhalt:

Section "Device" Identifier "Configured Video Device"
Driver "dummy"
VideoRam 256000
EndSection
Section "Monitor"
Identifier "Configured Monitor"
HorizSync 5.0 - 1000.0
VertRefresh 5.0 - 200.0
Modeline "1280x800" 24.15 1280 1312 1400 1432 800 819 822 841
EndSection
Section "Screen"
Identifier "Default Screen"
Monitor "Configured Monitor"
Device "Configured Video Device"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1920x1080" "1280x800"
EndSubSection
EndSection

Jetzt das System neu starten und danach sollte die Auflösung höher sein.