Den Raspberry Pi richtig „ausschalten“ oder neustarten

rasp_logoDer Microcomputer Raspberry Pi ist so klein und minimalistisch, dass er keinen Ein-/Ausschalter hat. Wie schaltet man ihn dann aus oder führt einen Reset aus, wenn das mal nötig ist?

rasp_netzteilDas Einschalten des Raspberry Pi erfolgt einfach durch Anschließen an das Netzteil via USB-Kabel. Dann startet der Winzling automatisch und bootet sein Betriebssystem von der SD-Karte. Man kann ihn auch auf umgekehrtem Wege ausschalten: Einfach den Netz- bzw. USB-Stecker ziehen. Das machen viele, auch ich habe das schon des Öfteren gemacht und in den seltensten Fällen führt das zu Problemen. Aber wie das so ist, manchmal erwischt einen eben doch ein solcher seltener Fall, und dann ist es besonders ärgerlich. Hardwareschäden durch diese Vorgehensweise sind zwar ausgeschlossen, aber die auf der SD-Karte gespeicherten Daten können Schaden nehmen. Denn wenn das System gerade in einer Schreiboperation begriffen war, als der Strom gezogen wurde, konnte diese nicht abgeschlossen werden. Je nach dem, was gerade geschrieben wurde, ist vielleicht nur eine Logdatei beschädigt oder aber das gesamte Dateisystem. Es wird jedenfalls immer wieder von Fällen berichtet, in denen die SD-Karte nach einem solchen unsanften „Ausschalten“ nicht mehr gelesen werden konnte und nur mit einer Neuformatierung unter kompletten Datenverlust wieder nutzbar war. Das ist – wie gesagt – nur selten der Fall, aber es kann jederzeit vorkommen.

Sanft Runterfahren anstatt kaltem Stromentzug

Deshalb empfiehlt es sich, den Raspberry Pi etwas „sanfter“ auszuschalten. Das bedeutet, das System vollständig herunterzufahren, bevor man den Stecker zieht. Dies ist nicht von außerhalb möglich, sondern nur per Befehl am Raspberry Pi selbst. Wer den Minicomputer mit angeschlossenem Bildschirm und Tastatur nutzt, hat keine Probleme in der gewählten grafischen Oberfläche einen entsprechenden Menüeintrag zu finden. Oder aber er öffnet eine Kommandozeile und orientiert sich am Folgenden.

Wer den Raspberry Pi „headless“, also ohne Monitor und direkte Eingabe nur via Netzwerk verwendet, der muss sich von einem anderen Rechner aus per Telnet oder SSH verbinden. Wie das geht, sollte klar sein, da man den Raspberry dann ja auch nur auf diesem Wege einrichten und steuern kann. Ansonsten an dieser Stelle hierzu nur der kurze Hinweis auf putty, eine Remoteshell, die sich bei den meisten Raspberry-Images ohne weitere Vorkehrungen direkt „out of the box“ nutzen lässt.

Also meldet man sich einfach auf diesem Wege an und setzt einen einfachen Befehl auf der Kommandozeile ab. Kurz und schmerzlos geht es beispielsweise mit

sudo shutdown -h 0

Das sudo ist nur erforderlich, wenn man nicht als root-Benutzer angemeldet ist, da diese Befehle nur mit Superuser-Rechten ausgeführt werden dürfen.

[raspberrypi]

Was passiert beim Herunterfahren?

Fährt man den Raspberry Pi auf diese Weise herunter, erfolgen mehrere Schritte, die Datenverluste und defekte Dateisysteme vermeiden. Zunächst werden eventuell angemeldete Benutzer über das Herunterfahren informiert. Dann ergeht ein Signal an alle laufenden Prozesse. Sind diese sauber programmiert, reagieren sie darauf, indem sie ggf. noch im Speicher befindliche Daten in Dateien sichern, eventuell noch geöffnete Dateien schließen und sich beenden. Außerdem wird der Runlevel des Systems gesteuert, so dass vorhandene Skripte beispielsweise zum Aufräumen von temporären Dateien ordnungsgemäß ausgeführt werden. Schließlich wird das Dateisystem sauber geschlossen, so dass die gefürchteten Dateisystemdefekte vermieden werden. Damit ist das System komplett heruntergefahren. Benutzer, die zu diesem Zeitpunkt noch in einer Konsole angemeldet sind, erhalten dort die Meldung System haltet – System angehalten. Nun kann man unbesorgt den Stecker ziehen und den Raspberry von der Stromversorgung trennen.

Reset statt Ausschalten

Sie wollen des Raspberry Pi nicht ausschalten, sondern einfach nur neu starten? Kein Problem mit einer kleinen Änderung am Befehl:

sudo shutdown -r 0

Das -r legt fest, dass das Herunterfahren zum Zweck eines Neustarts (Reset) erfolgt. Der Ablauf ist derselbe wie beim Anhalten mit -h, nur dass unmittelbar im Anschluss der Raspberry Pi gleich wieder gestartet wird.

Das Kommando shutdown lässt sich über weitere Parameter modifizieren, beispielsweise dass Herunterfahren oder Neustarten erst mit einer festgelegten Verzögerung oder zu einem ganz bestimmten Zeitpunkt erfolgen sollen. Oder man kann die Warnmeldung für angemeldete Benutzer individuell gestalten. Mehr dazu findet sich in der ausführlichen Beschreibung des shutdown-Befehls.

Hinweis: Es gibt auch verschiedene Hardware-Lösungen für einen „echten“ Ausschalter. Dieser sendet ein Signal an den Raspberry Pi, damit dieser den beschriebenen Vorgang des Herunterfahrens durchführt. Erst anschließend erfolgt das eigentliche Ausschalten. Man kann sich eine entsprechende Schaltung selbst bauen oder fertig kaufen. Allerdings lohnt sich das nur, wenn man den Raspberry Pi regelmäßig ausschalten will und die hier beschriebene Methode per Remotezugriff auf Dauer zu umständlich ist.

7 Antworten

  1. Wolfram sagt:

    Das sollte kein großes Problem sein. Einfach GND und einen GPIO mit einem Draht und einem Taster dazwischen verbinden und dann eine kleine Software, die auf eine Änderungen an diesem GPIO lauscht und dann den Shutdown auslöst. Da reicht schon ein Python-Skript. Wenn die vier PIs vernetzt sind, bräuchte man das nur an einem machen, der fährt die anderen dann SSH-Befehl runter, bevor er selbst schlafen geht. Wenn nicht, bräuchte man vier Taster oder eine Relais-Lösung.
    Hier hat jemand das im Prinzip so gemacht (für einen PI) und beschrieben: https://alexbloggt.com/raspberry-pi-ausschalter/

  2. Jens sagt:

    Mal eine etwas seltsam erscheinende Frage dazu: Ich habe 4 Boards, u.a. ein Raspberry, die ich mi einem Schalter herunterfahren möchte. Gibt es die Möglichkeit, einen I/O so zu konfigurieren, dass ein shutdown erfolgt (ähnlich dem kurzen tasten eines ON/Off Schalters bei den meisten PC’s)?
    Mein Problem ist, die Board sind in einem Messeaustellungsstück verbaut und keener hat zum Schluss der Messe Lust und Zeit die 4 Boards einzeln herunterzufahren. Da muss eine Lösung her.

  3. Wolfram sagt:

    @dieterg:
    Eine interessante Frage. Dafür gibt es tatsächlich eine Lösung. Ich habe dazu einen Blogartikel geschrieben, der die Vorgehensweise beschreibt:
    https://www.gieseke-buch.de/raspberrypi/windows-befehl-per-mausklick-an-raspberry-pi

  4. dieterg sagt:

    Eine Frage, die ich sorum nicht im Netz finden kann.
    Ich würde gerne von menem Windowsrehner aus mittels shutdown den Raspberry runter fahren können.
    Versuche ic das über den windowsbefehl „shutdown /s /m \192.168.1.160 /t30″
    bekomme ich ein „nicht berechtigt“ zurück.
    Da ich aber keinen Usernamen und Password übergeben kann, komme ich da nicht weiter, da ich nicht meinen windowsnamen und password auf dem raspberry verwenden will.
    Jetzt muss ich also jedesmal über putty verbinden um dann runter zu fahren.
    Gibt es also eine möglichkeit von Windows aus direkt einen Shutdown anzustossen, und was muss ich auf dem raspberry eventuell dazu umkonfigurieren ?

  5. Hans sagt:

    Gut zu wissen, danke.

  6. Wolfram sagt:

    @Hans:
    Für den Raspberry Pi ist das richtig. Generell wird „sudo shutdown -h…“ bei Linux/UNIX als bessere Lösung angesehen, weil „halt“ sich bei manchen Systemen anders verhält als „shutdown -h“.
    Aber solange man ausschließlich den Raspberry Pi betrachtet, haben Sie Recht.

  7. Hans sagt:

    Etwas kürzer können auch einfach die Befehle „sudo halt“ (Herunterfahren) und „sudo reboot“ (Neustarten) benutzt werden, die nur eine Vereinfachung des Shutdown Befehls darstellen 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Schließen