Bagaimana cara mematikan Raspberry Pi dengan aman?


30

Biasanya dengan komputer desktop, jika saya jalankan sudo shutdown -P now, komputer mati sepenuhnya dan saya dapat menyalakannya kembali dengan sebuah tombol. (Demikian juga, jika komputer macet, saya bisa memaksa restart dengan menahan tombol power selama 5 detik atau lebih.)

Raspberry Pi tidak memiliki tombol power. Bahkan, jika saya jalankan sudo shutdown -P now, power led sepertinya masih menyala, dan untuk memulainya lagi, saya sepertinya perlu mencabutnya dan memasangnya kembali. Ini agaknya analog dengan "Sekarang aman untuk mematikan komputer Anda" di Windows versi lama.

Pada titik mana aman untuk menarik steker pada Raspberry Pi? Apakah saya melakukan sesuatu yang salah?


2
Led merah hanya mengindikasikan bahwa oi menerima daya. Yang ingin Anda perhatikan adalah yang hijau. Jika sedang berkedip itu berarti oi sedang mengakses kartu microSD. Ketika Anda menutup menontonnya. Seharusnya berkedip 4-10 kali. Setelah ini terjadi, aman untuk mencabut kabel.
TheXed

1
Asalkan kartu SD Anda diformat dalam ext4 (atau FS penjurnalan lainnya), terus terang lebih aman untuk mematikannya setiap kali pi hanya duduk diam. Setidaknya lebih aman daripada mematikan komputer Windows95. (Bukannya saya merekomendasikannya untuk aplikasi keamanan kritis ... tapi pi tidak persis ideal kalau begitu.)
leftaroundabout

4
@leftaroundabout, penjurnalan tidak melakukan banyak hal ketika media yang mendasarinya tidak dapat menangani kegagalan daya dengan bersih. Saya sering perlu memformat ulang kartu SD saya setelah listrik mati.
Tandai

@ Mark: mungkin. Saya memiliki pi bahwa saya sering tidak berdaya tanpa komplikasi, tetapi pada kenyataannya yang ini hanya menggunakan kartu hanya untuk boot loader dan memiliki semua yang lain pada hard drive USB.
leftaroundabout

@ Markus Ini juga tidak berarti banyak ketika di tengah data menulis. Anda masih akan kehilangan data Anda. Itu hanya menjamin konsistensi sistem file,.
Bob

Jawaban:


18

Anda tidak melakukan kesalahan apa pun.

LED aktivitas harus berkedip 3 atau 4 kali sebelum dimatikan. Maka aman untuk melepaskan daya.

Saya biasanya mati, pergi selama beberapa menit, dan kemudian mencabut kabel listrik.


15

Anda tidak perlu menghapus daya untuk memulai ulang Pi. Ada sepasang bantalan di dekat Kartu SD (saya pikir berlabel reset mungkin berjalan - saya tidak bisa melihat pada Pi saya karena mereka semua telah beralih disolder di papan tulis.) Sesaat singkat untuk memulai kembali.

Rasbpian terbaru memiliki proses built-in untuk shutdown (ditangani oleh systemd-logind)

Tambahkan yang berikut ke /boot/config.txt

dtoverlay=gpio-shutdown,gpio_pin=5

Ini memungkinkan sakelar yang terhubung antara pin 29 (GPIO 5) dan pin 30 (Gnd) untuk memulai shutdown tertib Pi.

Hampir semua pin dapat digunakan - standarnya adalah pin 5 (GPIO 3), meskipun ini sering digunakan untuk I²C ,gpio_pin=21akan menggunakan pin yang sama dengan yang digunakan pada skrip pin 40 (GPIO 21) dan pin 39 (Gnd)

Saya merekomendasikan sudo poweroffuntuk mematikan Pi. Tidak ada yang salah dengan apa yang Anda lakukan, tetapi poweroffmenyebabkan LED hijau berkedip 10 kali dalam interval 1 detik saat aman dimatikan.

Saya memiliki skrip Python yang mematikan Pi dengan tombol.

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

Bisakah Anda menambahkan kode python untuk referensi, dan bagaimana jika saya memberikan sumber daya akan secara otomatis mulai pi atau yang lain?
Gaurav Dave

4

Sepertinya tidak ada yang menjawab pertanyaan ini: "Pada titik apa aman untuk mencabut sumbat pada Raspberry Pi?"

Untuk mematikan dengan benar, Anda menjalankan

sudo shutdown

Ketika Anda melakukan ini, Anda akan melihat lampu "ACT" (yang hijau) berkedip 10 kali (interval 0,5 detik). Setelah berhenti berkedip, lampu hijau akan mati. Pada titik ini, aman untuk melepas daya atau menarik steker.

Lampu merah akan tetap menyala selama ada daya yang diberikan pada Pi.

Setelah dimatikan, Anda harus melepaskan daya dan kemudian menerapkan daya lagi untuk menyalakan Pi.


2

Seperti jawaban sebelumnya telah menyatakan, led merah berarti pi menerima daya sedangkan led hijau adalah aktivitas (saya percaya aktivitas disk)

Anda dapat menarik steker ketika led hijau berhenti berkedip setelah perintah shutdown atau Anda dapat mempersingkat run / reset bantalan yang ada di papan

Situs web ini memiliki petunjuk hebat tentang cara menambahkan sakelar reset yang sulit jika Anda bersedia menyolder beberapa pin.

Jika Anda menggunakan hard reset, pastikan untuk hanya menggunakannya setelah penghentian atau pematian sistem atau sebagai upaya terakhir karena segera me-restart prosesor, jika Anda menulis ke kartu SD Anda, maka Anda dapat berpotensi merusaknya seperti menarik daya saat sedang berjalan


2

Berikut ini adalah skrip python shutdown yang sangat sederhana.

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")
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.