Come spegnere in sicurezza Raspberry Pi?


30

Di solito con un computer desktop, se corro sudo shutdown -P now, il computer si spegne completamente e posso riaccenderlo con un pulsante. (Allo stesso modo, se il computer si arresta in modo anomalo, posso forzare un riavvio tenendo premuto il pulsante di accensione per circa 5 secondi.)

Il Raspberry Pi non ha un pulsante di accensione. In effetti, se corro sudo shutdown -P now, il led di alimentazione sembra essere ancora acceso e per riavviarlo, sembra che sia necessario scollegarlo e ricollegarlo. Questo sembra in qualche modo analogo a "Adesso è sicuro spegnere il computer" nelle vecchie versioni di Windows.

A che punto è sicuro staccare la spina del Raspberry Pi? Sto facendo qualcosa di sbagliato?


2
Il led rosso indica semplicemente che il oi sta ricevendo energia. Quello a cui vuoi prestare attenzione è quello verde. Se lampeggia significa che l'OI sta accedendo alla scheda microSD. Quando lo spegni, guardalo. Dovrebbe lampeggiare 4-10 volte. Una volta che ciò si verifica, è possibile scollegare in modo sicuro.
TheXed,

1
A condizione che la tua scheda SD sia formattata in ext4 (o in altri giornali di journaling) è francamente più o meno sicuro spegnerla ogni volta che il pi è semplicemente inattivo. Almeno più sicuro di quanto non fosse semplicemente spegnere un computer Windows95. (Non che lo consiglio per tutte le applicazioni critiche per la sicurezza ... ma un pi non è esattamente l'ideale, comunque.)
leftaroundabout

4
@leftaroundabout, l'inserimento nel journal non fa molto quando il supporto sottostante non è in grado di gestire in modo pulito un'interruzione dell'alimentazione. Ho spesso bisogno di riformattare le mie schede SD dopo un'interruzione di corrente.
Segna il

@Mark: possibile. Ho un pi che spesso non ho alimentato in modo sicuro senza complicazioni, ma in realtà questo utilizza solo la scheda solo per il caricatore di avvio e ha tutto il resto su un disco rigido USB.
circa il

@Mark Inoltre non significa molto quando si è nel mezzo di una scrittura di dati. Perderai comunque i tuoi dati. Garantiva solo la coerenza del filesystem.
Bob,

Risposte:


18

Non stai facendo niente di male.

Il LED di attività dovrebbe lampeggiare 3 o 4 volte appena prima di spegnersi. È quindi sicuro rimuovere l'alimentazione.

Di solito mi spengo, vado via per alcuni minuti e quindi strappo il cavo di alimentazione.


15

Non è necessario rimuovere l'alimentazione per riavviare Pi. Ci sono un paio di pad vicino alla scheda SD (penso che il reset etichettato possa funzionare - non riesco a vedere sul mio Pi perché tutti hanno un interruttore saldato sulla scheda.) Momentaneamente breve per riavviare.

Rasbpian recente ha un processo integrato per l'arresto (gestito da systemd-logind)

Aggiungi quanto segue a /boot/config.txt

dtoverlay=gpio-shutdown,gpio_pin=5

Ciò consente a un interruttore collegato tra il pin 29 (GPIO 5) e il pin 30 (Gnd) di avviare un arresto ordinato del Pi.

È possibile utilizzare quasi tutti i pin: l'impostazione predefinita è il pin 5 (GPIO 3), sebbene questo sia spesso usato per I²C ,gpio_pin=21userebbe gli stessi pin utilizzati nello script pin 40 (GPIO 21) e pin 39 (Gnd)

Consiglio sudo poweroffdi spegnere il Pi. Non c'è niente di sbagliato in quello che stai facendo, ma powerofffa lampeggiare il LED verde 10 volte a intervalli di 1 secondo quando è sicuro spegnere.

Ho uno script Python che spegne il Pi con un pulsante.

#!/usr/bin/env python2.7
#-------------------------------------------------------------------------------
# Name:         Shutdown Daemon
#
# Purpose:      This program gets activated at the end of the boot process by
#               cron. (@ reboot sudo python /home/pi/shutdown_daemon.py)
#               It monitors a button press. If the user presses the button, we
#               Halt the Pi, by executing the poweroff command.
#
#               The power to the Pi will then be cut when the Pi has reached the
#               poweroff state (Halt).
#               To activate a gpio pin with the poweroff state, the
#               /boot/config.txt file needs to have :
#               dtoverlay=gpio-poweroff,gpiopin=27
#
# Author:      Paul Versteeg
#
# Created:     15-06-2015, revised on 18-12-2015
# Copyright:   (c) Paul 2015
# https://www.raspberrypi.org/forums/viewtopic.php?p=864409#p864409
#-------------------------------------------------------------------------------

import RPi.GPIO as GPIO
import subprocess
import time

GPIO.setmode(GPIO.BCM) # use GPIO numbering
GPIO.setwarnings(False)

# I use the following two GPIO pins because they are next to each other,
# and I can use a two pin header to connect the switch logic to the Pi.
# INT = 17    # GPIO-17 button interrupt to shutdown procedure
# KILL = 27   # GPIO-27 /KILL : this pin is programmed in /boot/config.txt and cannot be used by any other program
INT = 21    # GPIO button interrupt to shutdown procedure

# use a weak pull_up to create a high
GPIO.setup(INT, GPIO.IN, pull_up_down=GPIO.PUD_UP)

def main():

    while True:
        # set an interrupt on a falling edge and wait for it to happen
        GPIO.wait_for_edge(INT, GPIO.FALLING)
#       print "button pressed"
        time.sleep(1)   # Wait 1 second to check for spurious input
        if( GPIO.input(INT) == 0 ) :
            subprocess.call(['poweroff'], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

if __name__ == '__main__':
    main()

Puoi aggiungere quel codice Python come riferimento, e cosa succede se fornisco la fonte di alimentazione, avvierà automaticamente pi oppure?
Gaurav Dave,

4

Nessuno sembra aver risposto a questa domanda: "A che punto è sicuro staccare la spina del Raspberry Pi?"

Per arrestare correttamente, si esegue

sudo shutdown

Quando lo fai, vedrai la spia "ACT" (quella verde) lampeggiare in modo fisso 10 volte (intervalli di 0,5 secondi). Quando smette di lampeggiare, la luce verde si spegne. A questo punto, è sicuro rimuovere l'alimentazione o staccare la spina.

La luce rossa rimarrà accesa fintanto che ci sarà energia applicata al Pi.

Dopo l'arresto, è necessario rimuovere l'alimentazione e quindi applicare nuovamente l'alimentazione per accendere il Pi.


2

Come hanno affermato le risposte precedenti, il led rosso indica che il pi sta ricevendo energia laddove il led verde è attività (credo che l'attività del disco)

puoi staccare la spina quando il led verde ha smesso di lampeggiare dopo un comando di spegnimento o puoi cortocircuitare i pad di marcia / reset che si trovano sulla scheda

Questo sito Web offre ottime istruzioni su come aggiungere un interruttore di ripristino hardware se si desidera saldare alcuni pin.

Se si utilizza l'hard reset, assicurarsi di utilizzarlo solo dopo un arresto o un arresto del sistema o come ultima risorsa in quanto riavvia immediatamente il processore, se si sta scrivendo sulla scheda SD, è possibile corromperlo potenzialmente come se fosse il potere mentre corre


2

Ecco uno script Python di spegnimento davvero semplice.

import RPi.GPIO as GPIO 
import os 
channel=11 
GPIO.setmode(GPIO.BOARD) 
#Pin 11 & Gnd 

GPIO.setup(channel, GPIO.IN, pull_up_down=GPIO.PUD_UP) 
GPIO.wait_for_edge(channel, GPIO.FALLING) 
os.system("sudo shutdown -h now")
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.