Як безпечно вимкнути Raspberry Pi?


30

Зазвичай із настільним комп'ютером, якщо я запускаю sudo shutdown -P now, комп'ютер повністю вимикається, і я можу знову ввімкнути його за допомогою кнопки. (Так само, якщо комп'ютер виходить з ладу, я можу примусити перезапустити, утримуючи кнопку живлення протягом 5 секунд або близько того.)

У Raspberry Pi немає кнопки живлення. Насправді, якщо я запускаю sudo shutdown -P now, джерело живлення все ще здається включеним, і для того, щоб запустити його знову, мені здається, потрібно відключити його від мережі та знову підключити. Це здається дещо аналогічним "Тепер безпечно вимкнути комп'ютер" у старих версіях Windows.

У який момент безпечно тягнути пробку на Raspberry Pi? Я щось роблю не так?


2
Червоний світлодіод просто вказує, що oi отримує живлення. Той, на який ви хочете звернути увагу, - це зелений. Якщо воно блимає, це означає, що oi отримує доступ до картки microSD. Коли ви закриєте, дивіться це. Він повинен спалахнути 4-10 разів. Як тільки це відбудеться, можна безпечно вимкнути вилку.
TheXed

1
За умови, що ваша SD-карта відформатована у ext4 (або інший мандрівник FS), відверто кажучи, більш-менш безпечно вимикати її, коли пі просто сидить біля простою. Принаймні безпечніше, ніж просто вимкнути комп'ютер Windows95. (Не те, що я рекомендую для будь-яких критично важливих для безпеки застосувань ... але пі, не все-таки ідеально, як би то не було.)
Продовжившись

4
@leftaroundabout, журнал не робить багато, коли базовий носій не може чітко впоратися з відключенням живлення. Мені часто потрібно переформатувати свої SD-карти після відключення живлення.
Марк

@ Марк: можливо. У мене є пі, який я часто не піддаю небезпеці без ускладнень, але насправді ця карта використовує лише карту для завантажувача та має все інше на жорсткому диску USB.
Лише приблизно

@Mark Це також не дуже означає, коли посеред запису даних. Ви все одно втратите свої дані. Це просто гарантована послідовність файлової системи.
Боб

Відповіді:


18

Ви нічого не робите.

Перед відключенням живлення світлодіод активності повинен блимати 3 або 4 рази. Тоді безпечно виймати живлення.

Зазвичай я вимикаюсь, виходжу на кілька хвилин, а потім виймаю шнур живлення.


15

Вам не потрібно знімати живлення, щоб перезапустити Pi. Біля SD-карти є пара колодок (я думаю, що мітка скидання можливо запущена - я не можу побачити на моєму Pi, тому що всі вони перемикаються на платі.) На короткий час, щоб перезапустити.

Останні Rasbpian мають вбудований процес для відключення (обробляється systemd-logind)

Додайте до /boot/config.txt

dtoverlay=gpio-shutdown,gpio_pin=5

Це дозволяє комутатору, підключеному між штифтом 29 (GPIO 5) і штирком 30 (Gnd), щоб ініціювати впорядковане відключення Pi.

Можна використовувати майже будь-який штифт - за замовчуванням - контактний 5 (GPIO 3), хоча це часто використовується для I²C ,gpio_pin=21, використовуючи ті самі штифти, що використовуються у штифті 40 скрипту (GPIO 21) та контактному 39 (Gnd)

Рекомендую sudo poweroffвимкнути Pi. Немає нічого поганого в тому, що ви робите, але poweroffзмушує зелений світлодіод блимати 10 разів з інтервалом за 1 секунду, коли безпечно живити.

У мене є сценарій Python, який закриває Pi за допомогою кнопки.

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

Чи можете ви додати цей пітон-код для довідок, і що, якщо я дам джерело живлення, він автоматично запустить pi чи ще?
Гаурав Дейв

4

Здається, ніхто не відповів на це запитання: "У який момент безпечно тягнути пробку на Raspberry Pi?"

Для правильного відключення ви запускаєте

sudo shutdown

Коли ви це зробите, ви побачите, що світло "ACT" (зелений) блимає 10 разів (інтервали 0,5 секунди). Як тільки він перестане блимати, зелене світло вимкне. У цей момент безпечно вийняти живлення або витягнути вилку.

Червоне світло залишатиметься увімкненим до тих пір, поки потужність буде застосована до Pi.

Після вимкнення потрібно відключити живлення, а потім знову застосувати живлення для включення Pi.


2

Як було сказано в попередніх відповідях, червоний світлодіод означає, що пі отримує живлення там, де зелений світлодіод - це активність (я вважаю, що активність диска)

ви можете витягнути штепсельну вилку, коли зелений світлодіод перестав блимати після команди відключення, або ви можете скоротити панелі запуску / скидання, що знаходяться на платі

На цьому веб-сайті є чудові інструкції, як додати жорсткий перемикач скидання, якщо ви готові спаяти кілька штифтів.

Якщо ви все-таки використовуєте жорсткий перезавантаження, не забудьте використовувати його лише після зупинки або відключення системи або в крайньому випадку, оскільки він негайно перезапустить процесор, якщо ви пишете на вашу SD-карту, то ви можете потенційно її пошкодити так само, як витягуючи живлення поки він працює


2

Ось справді простий скрипт відключення пітона.

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")
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.