Ein mit arm-linux-gnueabihf-g++ für Raspberry Pi kompiliertes Programm verursacht bei der Ausführung auf dem Raspbian Buster System den Fehler: “Segmentation fault”. Dies geschieht nur bei ausführbaren Dateien ohne Dateinamenserweiterung. Hängt man der Compiler-Ausgabe-Datei irgendeine Erweiterung an, zum Beispiel .run oder .xyz, tritt dieser Fehler nicht auf. Auch das Umbenennen und Entfernen der Erweiterung aus dem Dateinamen auf dem Host-PC vor der Übertragung ergab keine Abhilfe. Woran liegt aber das Problem?
Die Long Term Support (LTS) oder die letzte Version auswählen.
Ubuntu MATE – Versionauswahl
Die Download-Methode wählen. Hier kann die Direct Download-Option genutzt werden. Bei BitTorrent wird nur eine .torrent-Datei heruntergeladen, die dann in einem Torrent-Client wie KTorrent geöffnet werden muss.
Ubuntu MATE – Download-Quelle wählen
Zum Schluss die heruntergeladene Archiv-Datei (.xz) entpacken.
Installation
Die microSD-Karte über einen Adapter in den Rechner einstecken.
Raspberry Pi Imager öffnen. Über OS WÄHLEN ⇒ Eigenes Image die entpackte .img-Datei laden.
Die Umgebungsvariable PATH speichert Verzeichnispfade in den die Kommandozeile (Shell) nach den eingegebenen, ausführbaren Dateien sucht. Befindet sich diese Datei in einem anderen Verzeichnis als in PATH aufgelistet, muss in der Kommandozeile (oder Shell-Skript) der komplette Pfad mitangegeben werden. Um dieses bei jeder Eingabe umzugehen, kann die PATH-Variable mit dem Pfad erweitert werden.
PATH temporär erweitern
Der Umgebungsvariable PATH wird ein zusätzlicher Pfad angefügt, der nur während der aktuellen Login-Session gilt.
$ PATH=$PATH:/neuer/Pfad
Nach einem Neustart oder erneutem Anmelden ist der Eintrag nicht mehr vorhanden.
Möchte man einen Pfad dauerhaft in der Umgebungsvariable PATH speichern, so muss dieser in der Datei /etc/profile hinzugefügt werden.
Öffne die /etc/profile Datei zum editieren:
$ sudo nano /etc/profile
Füge der Variablen PATH einen Doppelpunkt als Trenner und den zusätzlichen Pfad an.
Die Datei speichern und RPi neustarten. Oder um den Pfad bis zum nächsten Neustart in der aktuellen Login-Session nutzen zu können, PATH temporär erweitern.
War diese Seite für dich informativ? Hat sie dir gefallen und geholfen?
Dann unterstütze die Weiterentwicklung mit einer kleinen Spende!
Die Spenden werden für die Lizenzen sowie neue Hard- und Software verwendet, die für weitere Projekte auf dieser Webseite eingesetzt werden. Die Werbung alleine deckt gerade mal die Server Kosten.
In diesem Tutorial erkläre ich wie man den Buffalo LinkStation NAS-Server mithilfe von Raspberry Pi über das lokale Heimnetzwerk und aus dem Internet ein- und ausschalten kann.
Die Buffalo LinkStation wartet 5 Minuten lang auf eine WOL-Nachricht. Bekommt sie keine, wird das Betriebssystem heruntergefahren. Der Raspberry Pi sorgt dafür, dass diese Nachricht innerhalb dieser Zeit gesendet wird damit der Buffalo wach bleibt, oder es wird eben keine WOL-Nachricht geschickt wenn ein gewolltes Ausschalten der LinkStation eingeleitet werden soll.
Für die Realisierung dieses Projektes sind folgende Voraussetzungen zu erfüllen:
Ein Wake-On-LAN-fähiges Gerät, das kontinuierlich WOL-Pakete empfangen muss um wach zu bleiben. Im Projekt wurde der NAS-Server Buffalo LinkStation LS-WXLD24 verwendet.
Ein Raspberry Pi mit installiertem Linux-Betriebsystem (hier Raspbian Jessie) und SSH– oder direktem Terminal-Zugriff auf das System.
Raspberry Pi USB- oder FTP-Zugriff für die Dateienübertragung.
Beide Geräte müssen im Heimnetzwerk verbunden sein. Vorzugsweise per LAN.
Der LinkStation Power Schalter muss auf AUTO stehen. In dieser Position fährt der NAS Server nach ca. 5 Minuten herunter wenn keine Wake-On-LAN-Nachricht empfangen wird.
Der Raspberry Pi soll wie die LinkStation in gleichem Heimnetzwerk verbunden sein.
Die Raspberry Pi Software stayalive schickt standardmässig alle 3 Minuten eine Wake-On-LAN-Nachricht zu der LinkStation. Die Datei stay.alive enthält ein Flag 0 oder 1. Steht er auf 1 wird der NAS Server wach gehalten bzw. hochgefahren. Bei 0 wird keine WOL-Nachricht geschickt und der NAS Server fährt nach ca. 5 Minuten herunter.
Die stayalive Software kann hier heruntergeladen werden. Die ZIP-Datei auf den RPi in das Verzeichnis /home/pi/Downloads übertragen und entpacken.
$ cd /home/pi/Downloads
$ unzip stayalive_1.1.2.zip
$ cd stayalive_1.1.2
Die Konfigurationsdatei stayalive.conf anpassen (vor der Installation!).
$ sudo nano stayalive/stayalive.conf
Vor allem die Parameter BCAST_ADDR, BCAST_PORT und TARGET_MAC sind wichtig.
Danach das Install-Skript ausführen.
$ sudo bash install
Nach der Installation den Flag in der Datei /etc/stayalive/stay.alive auf 1 setzen. Die LinkStation sollte nun hochfahren.
Die install.log-Datei befindet sich im /etc/stayalive Verzeichnis. Ausführung-Log-Dateien sind im /var/log/stayalive Verzeichnis zu finden.
Als Back-End zu Ein- und Ausschalten der LinkStation eignet sich am besten eine Webanwendung. Mit der ist es dann möglich über den Internet Browser lokal oder aus dem Internet den NAS Server zu schalten. Die Anwendung setzt den Flag in der stay.alive Datei. Damit Unbefügte kein Zugriff auf die Anwendung haben, wird Login Authentifizierung eingesetzt. Berechtigte Benutzer und Passwörter werden in der MySQL-Datenbank gespeichert.
5.1 MySQL Account Datenbank anlegen
Anmerkung: Falls der MySQL-Server und phpMyAdmin noch nicht installiert, siehe diese Anleitung!
Um den Zugriff auf die Webanwendung zum Schalten des NAS-Servers zu schützen wird eine Datenbank mit Accounts für berechtigte Benutzer eingerichtet.
Dafür den phpMyAdmin auf dem Raspberry Pi öffnen (http://{RPi-IP-Adresse}/phpmyadmin). Gegebenfalls das bei der phpMyAdmin-Installation vergebene Passwort eingeben.
Auf dem Reiter Datenbanken den Datenbanknamen “hnc” eingeben und Koalition utf8mb4_general_ci wählen.
hnc Datenbank anlegen
Mit “Anlegen” bestätigen und weiter.
Links im Datenbankbrowser die hnc-Datenbank wählen, und die Tabelle account mit 4 Spalten erzeugen.
account-Tabelle erzeugen
Die Tabellenspalten wie unten definieren.
account-Tabellenspalten definieren
Zu dem Reiter Einfügen wechseln und neuen Benutzer anlegen. Der Benutzername und Passwort sollen mit MD5 verschlüsselt werden.
Wake-On-LAN Webanwendung-Benutzer hinzufügen
Bestätigung eines erfolgreich hinzugefügten Datensatzes:
Datensatz erfolgreich eingefügt in die Tabelle account
Auf dem Reiter Anzeigen ist jetzt der Datensatz mit dem verschlüsseltem Benutzernamen und Passwort sichtbar.
Der eingefügte account-Tabellendatensatz
Eine Beispiel Datenbank kann hier heruntergeladen werden.
Nach dem entpacken der ZIP-Datei den Raspberry Pi phpMyAdmin öffnen (http://{RPi-IP-Adresse}/phpmyadmin), auf den Home Button klicken (1) und den Reiter Import wählen (2). Die entpackte sql-Datei laden (3) und mit OK (4) die Datenbank importieren.
Datenbankimport
Die Beispiel-Datenbank enthält eine Tabelle account mit einem Datensatz für den Benutzer testuser mit dem Passwort testpasswort.
Die Webanwendung soll über eine grafische Oberfläche den Flag in der Datei /etc/stayalive/stay.alive setzen können. Sinnvoll ist auch eine Benutzer-Authentifizierung wenn man auf diese Anwendung über das Internet zugreifft.
Eine Beispiel-Webanwendung kann hier heruntergeladen werden. Die ZIP-Datei in das RPi /home/pi/Downloads Ordner übertragen und dann in das /var/www bzw. bei Raspbian Jessie /var/www/html Verzeichnis entpacken.
$ cd /home/pi/Downloads
$ sudo unzip hnc.zip -d /var/www
seit Raspbian Jessie (Ende 2015):
$ cd /home/pi/Downloads
$ sudo unzip hnc.zip -d /var/www/html
In der Datei /var/www/{html}/hnc/login.php in der Funktion get_db_pw muss bei dem mysqli_connect()-Aufruf der MySQL Benutzer und das Passwort angegeben werden. Standardmäßig ist Benutzer root ohne Passwort voreingestellt.
function get_db_pw($uname){
$con = mysqli_connect("","USER", "PASSWORD");
mysqli_select_db($con,"hnc");
$sql = "select password from account where username = '$uname'";
$res = mysqli_query($con,$sql);
$data=mysqli_fetch_assoc($res);
mysqli_close($con);
return $data["password"];
}
Nun kann die WebApp mit http://{RPi-IP-Adresse}/hnc/hnc.php geöffnet werden. In der Beispiel-Webanwendung testuser und testpassword für die Anmeldung benutzen.
hnc-Anmeldung
Die Domäne im Kopf der Seite kann in der Datei login.php im <body>-Bereich, Zeile 53 geändert werden.
Nach dem Einloggen kann man über die dynamische Webseite das Zielgerät ein- und ausschalten.
stayalive Benutzeroberfläche
Das Einschalten dauert bis zu 3 Minuten, bis das nächste WOL-Paket vom stayalive gesendet wird plus die Zeit, die das Gerät zum Hochfahren braucht. Das Ausschalten kann eine Verzögerung von 5 Minuten haben (gerätabhängig, hier bei Buffalo LinkStation).
Nach der Installation wird der Apache-Daemon automatisch gestartet.
Installation testen
Die Raspberry Pi IP-Adresse im Internet Browser eingeben. Es sollte eine Apache2 Debian Default Page geöffnet werden mit dem Text “It Works!” und der Konfigurationsübersicht als Bestätigung dass der Webserver fehlerfrei arbeitet.
Vor der Installation die Paketdatenbank aktualisieren und ein Upgrade ausführen:
$ sudo apt-get update && sudo apt-get upgrade
Installation
$ sudo apt-get install lighttpd
Nach der Installation wird der lighttpd-Daemon automatisch gestartet. Man kan es mit dem folgenden Befehl überprüfen.
$ sudo systemctl status lighttpd
Berechtigungen setzen
Die Benutzergruppe www-data anlegen und den Benutzer pi dieser Gruppe hinzufügen. Den Benutzer www-data als Eigentümer des /var/www bzw. /var/www/html Verzeichnisses definieren und Schreib-/Leserechte vergeben.
$ sudo groupadd www-data
$ sudo usermod -G www-data -a pi
In den neuern Raspbian-Versionen ist der SSH-Server bereits installiert. Ledieglich muss er nur aktiviert werden. In den älteren Versionen kann er nachträglich manuell installiert werden.
In den neueren Raspbian-Versionen wird der SSH-Server nur aktiviert.
$ sudo raspi-config
Konfigurationsmenüpunkt – Interface Optionen
Den Konfigurationsmenüpunkt Interfacing Options auswählen.
SSH-Server aktivieren/deaktivieren
Mit ENTER weiter.
SSH-Server Aktivierung bestätigen
“Ja” wählen und mit ENTER bestätigen.
SSH-Server Status
Mit ENTER beenden.
Da es bis zu diesem Zeitpunkt kein SSH-Zugriff gab, muss die ganze Prozedur mit angeschlossenem Monitor und einer Tastatur direkt am Raspberry Pi durchgeführt werden werden. Nach der Installation bzw. Aktivierung kann der SSH-Client putty genutzt werden.