Comment éteindre le Raspberry Pi en toute sécurité?


30

Habituellement, avec un ordinateur de bureau, si j'exécute sudo shutdown -P now, l'ordinateur s'éteint complètement et je peux le rallumer avec un bouton. (De même, si l'ordinateur tombe en panne, je peux forcer un redémarrage en maintenant le bouton d'alimentation enfoncé pendant environ 5 secondes.)

Le Raspberry Pi n'a pas de bouton d'alimentation. En fait, si je cours sudo shutdown -P now, le voyant d'alimentation semble toujours allumé, et pour le redémarrer, il semble que je doive le débrancher et le rebrancher. Cela semble quelque peu analogue à «Il est désormais sûr d'éteindre votre ordinateur» dans les anciennes versions de Windows.

À quel moment est-il sûr de débrancher la prise du Raspberry Pi? Est-ce que je fais quelque chose de mal?


2
La led rouge indique simplement que l'oi est sous tension. Celui auquel vous voulez prêter attention est le vert. S'il clignote, cela signifie que l'OI accède à la carte microSD. Lorsque vous arrêtez, regardez-le. Il devrait clignoter 4 à 10 fois. Une fois que cela se produit, il est sûr de le débrancher.
TheXed

1
À condition que votre carte SD soit formatée en ext4 (ou autre journalisation FS), il est franchement plus ou moins sûr de l'éteindre chaque fois que le pi est juste inactif. Au moins plus sûr qu'il ne l'était pour éteindre un ordinateur Windows95. (Pas que je le recommande pour toutes les applications critiques pour la sécurité ... mais un pi n'est pas exactement idéal alors, de toute façon.)
leftaroundabout

4
@leftaroundabout, la journalisation ne fait pas grand-chose lorsque le support sous-jacent ne peut pas gérer proprement une panne de courant. J'ai souvent besoin de reformater mes cartes SD après une panne de courant.
Mark

@Mark: possible. J'ai un pi que j'ai souvent mis hors tension sans danger, mais en fait celui-ci n'utilise la carte que pour le chargeur de démarrage et a tout le reste sur un disque dur USB.
leftaroundabout

@Mark Cela ne signifie pas non plus grand chose au milieu d'une écriture de données. Vous perdrez toujours vos données. Il garantissait simplement la cohérence du système de fichiers.
Bob

Réponses:


18

Vous ne faites rien de mal.

Le voyant d'activité doit clignoter 3 ou 4 fois juste avant la mise hors tension. Il est alors sûr de couper l'alimentation.

Je m'arrête généralement, je m'éloigne pendant quelques minutes, puis je tire le cordon d'alimentation.


15

Vous n'avez pas besoin de couper l'alimentation pour redémarrer Pi. Il y a une paire de pads près de la carte SD (je pense que la réinitialisation étiquetée peut éventuellement fonctionner - je ne peux pas voir sur mon Pi car ils ont tous un interrupteur soudé sur la carte.) Momentanément court pour redémarrer.

Rasbpian récent a un processus intégré d'arrêt (géré par systemd-logind)

Ajoutez ce qui suit à /boot/config.txt

dtoverlay=gpio-shutdown,gpio_pin=5

Cela permet à un commutateur connecté entre la broche 29 (GPIO 5) et la broche 30 (Gnd) de déclencher un arrêt ordonné du Pi.

Presque toutes les broches peuvent être utilisées - la valeur par défaut est la broche 5 (GPIO 3), bien que celle-ci soit souvent utilisée pour I²C ,gpio_pin=21utiliserait les mêmes broches utilisées dans la broche de script 40 (GPIO 21) et la broche 39 (Gnd)

Je recommande sudo poweroffd'arrêter le Pi. Il n'y a rien de mal à ce que vous faites, mais powerofffait clignoter la LED verte 10 fois à 1 seconde d'intervalle lorsqu'il est sûr de s'éteindre.

J'ai un script Python qui arrête le Pi avec un bouton poussoir.

#!/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()

Pouvez-vous ajouter ce code python pour référence, et que se passe-t-il si je donne la source d'alimentation démarrera-t-il automatiquement pi ou autre?
Gaurav Dave

4

Personne ne semble avoir répondu à cette question: "À quel moment est-il sûr de débrancher la prise du Raspberry Pi?"

Pour arrêter correctement, vous exécutez

sudo shutdown

Lorsque vous faites cela, vous verrez le voyant "ACT" (le vert) clignoter solidement 10 fois (intervalles de 0,5 seconde). Une fois qu'il cesse de clignoter, le voyant vert s'éteint. À ce stade, il est sûr de couper l'alimentation ou de débrancher la prise.

Le voyant rouge restera allumé tant que le Pi sera alimenté.

Après l'arrêt, vous devez couper l'alimentation, puis la remettre sous tension pour mettre le Pi sous tension.


2

Comme les réponses précédentes l'ont indiqué, la LED rouge signifie que le pi reçoit de l'énergie alors que la LED verte est une activité (je crois que l'activité du disque)

vous pouvez soit retirer la prise lorsque le voyant vert a cessé de clignoter après une commande d'arrêt ou vous pouvez court-circuiter les tampons d'exécution / réinitialisation qui sont sur la carte

Ce site Web contient d'excellentes instructions sur la façon d'ajouter un commutateur de réinitialisation matérielle si vous êtes prêt à souder quelques broches.

Si vous utilisez la réinitialisation matérielle, assurez-vous de ne l'utiliser qu'après un arrêt ou un arrêt du système ou en dernier recours car il redémarre immédiatement le processeur, si vous écrivez sur votre carte SD, vous pouvez potentiellement le corrompre tout comme en coupant l'alimentation en cours d'exécution


2

Voici un script python d'arrêt vraiment simple.

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")
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.