Как безопасно выключить 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. (Не то, чтобы я рекомендовал это для любых критически важных приложений безопасности ... но пи в любом случае не совсем идеален.)
leftaroundabout
4
@leftaroundabout, ведение журнала мало что дает, если базовый носитель не может корректно обработать сбой питания. Мне часто приходится переформатировать SD-карты после сбоя питания.
Отметить
@Mark: возможно. У меня есть пи, которую я часто небезопасно отключал от сети без осложнений, но на самом деле эта использует только карту только для загрузчика и имеет все остальное на жестком диске USB.
оставил около
@Mark Это также не имеет большого значения, когда происходит запись данных. Вы все равно потеряете свои данные. Это просто гарантирует согласованность файловой системы.
Боб

Ответы:

18

Вы не делаете ничего плохого.

Индикатор активности должен мигать 3 или 4 раза непосредственно перед выключением. Тогда безопасно удалить власть.

Я обычно выключаюсь, ухожу на несколько минут, а затем вытаскиваю шнур питания.

Джоан
источник
15

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

Последние 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()
Milliways
источник
Можете ли вы добавить этот код Python для справки, и что, если я предоставлю источник питания, он автоматически запустит пи или еще?
Гаурав Дейв
4

Похоже, никто не ответил на этот вопрос: «В какой момент безопасно отключить Raspberry Pi?»

Чтобы правильно выключить, вы запускаете

sudo shutdown

Когда вы сделаете это, вы увидите, что индикатор «ACT» (зеленый) мигнет ровно 10 раз (с интервалом 0,5 секунды). Как только он перестанет мигать, зеленый свет погаснет. На этом этапе безопасно отключить питание или выдернуть вилку.

Красный свет будет гореть до тех пор, пока к Pi подается питание.

После выключения вы должны отключить питание, а затем снова включить его, чтобы включить Pi.

Electronics_John
источник
2

Как указывалось в предыдущих ответах, красный светодиод означает, что пи получает питание, тогда как зеленый светодиод - это активность (я полагаю, активность на диске)

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

На этом сайте есть отличные инструкции о том, как добавить переключатель жесткого сброса, если вы готовы припаять несколько контактов.

Если вы используете аппаратный сброс, обязательно используйте его только после остановки или выключения системы или в крайнем случае, так как он сразу же перезагружает процессор, если вы записываете на свою SD-карту, то вы можете потенциально повредить его, просто отключив питание. пока он работает

S.Rose
источник
2

Вот действительно простой скрипт выключения Python.

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")
Энди Андерсон
источник