จะปิด Raspberry Pi ได้อย่างปลอดภัยได้อย่างไร


30

ปกติแล้วจะมีคอมพิวเตอร์ตั้งโต๊ะหากฉันใช้sudo shutdown -P nowงานคอมพิวเตอร์จะปิดอย่างสมบูรณ์และฉันสามารถเปิดเครื่องได้อีกครั้งด้วยปุ่มเดียว (เช่นเดียวกันหากคอมพิวเตอร์ขัดข้องฉันสามารถบังคับให้รีสตาร์ทโดยกดปุ่มเปิด / ปิดค้างไว้ 5 วินาทีหรือมากกว่านั้น)

Raspberry Pi ไม่มีปุ่มเปิดปิด ในความเป็นจริงถ้าฉันวิ่งsudo shutdown -P nowพลังงานก็ยังคงปรากฏอยู่และเพื่อเริ่มต้นมันอีกครั้งฉันดูเหมือนจะต้องถอดปลั๊กแล้วเสียบกลับเข้าไปใหม่อีกครั้ง ดูเหมือนว่าค่อนข้างคล้ายกับ "ตอนนี้ปลอดภัยที่จะปิดคอมพิวเตอร์ของคุณ" ใน Windows รุ่นเก่า

จุดไหนที่ปลอดภัยที่จะดึงปลั๊กที่ Raspberry Pi? ฉันกำลังทำอะไรผิดหรือเปล่า?


2
ไฟ LED สีแดงแสดงว่า oi ได้รับพลังงาน สิ่งที่คุณต้องการใส่ใจคือสีเขียว หากกระพริบหมายความว่า oi กำลังเข้าถึงการ์ด microSD เมื่อคุณปิดดูมัน ควรกะพริบ 4-10 ครั้ง เมื่อสิ่งนี้เกิดขึ้นจะปลอดภัยที่จะถอดปลั๊ก
TheXed

1
หากการ์ด SD ของคุณได้รับการจัดรูปแบบเป็น ext4 (หรือ FS แบบ journalling อื่น ๆ ) มันปลอดภัยกว่าหรือน้อยกว่าที่จะปิดเมื่อใดก็ตามที่ pi นั่งรอบ ๆ ว่าง อย่างน้อยก็ปลอดภัยกว่าเดิมคือเพียงแค่ปิดคอมพิวเตอร์ Windows95 (ไม่ใช่ว่าฉันขอแนะนำสำหรับแอปพลิเคชันที่สำคัญด้านความปลอดภัย ... แต่ไพไม่เหมาะอย่างแน่นอนแล้ว)
leftaroundabout

4
@leftaroundabout การทำเจอร์นัลไม่ได้ทำอะไรมากเมื่อสื่อที่ใช้อ้างอิงไม่สามารถจัดการกับปัญหาไฟดับได้อย่างหมดจด ฉันต้องฟอร์แมตการ์ด SD ใหม่บ่อยครั้งหลังจากไฟฟ้าดับ
ทำเครื่องหมาย

@ Mark: เป็นไปได้ ฉันมีปี่ที่ฉันมักจะไม่ได้ทำงานอย่างไร้ความสามารถโดยไม่มีภาวะแทรกซ้อน แต่อันที่จริงอันนี้ใช้การ์ดสำหรับบูตโหลดเดอร์เท่านั้นและมีทุกอย่างอื่นในฮาร์ดไดรฟ์ USB
leftaroundabout

@ Mark มันไม่ได้มีความหมายอะไรมากเมื่ออยู่ในช่วงกลางของการเขียนข้อมูล คุณจะยังคงสูญเสียข้อมูลของคุณ มันรับประกันความสอดคล้องของระบบไฟล์เท่านั้น
บ๊อบ

คำตอบ:


18

คุณไม่ได้ทำอะไรผิด

LED กิจกรรมควรกระพริบ 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ทำให้ LED สีเขียวกระพริบ 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()

คุณสามารถเพิ่มรหัสไพ ธ อนนั้นเพื่อการอ้างอิงได้หรือไม่และถ้าฉันให้แหล่งพลังงานมันจะเริ่มต้นไพโดยอัตโนมัติหรือไม่?
Gaurav Dave

4

ดูเหมือนจะไม่มีใครตอบคำถามนี้: "ในจุดใดที่ปลอดภัยที่จะดึงปลั๊กที่ Raspberry Pi?"

เพื่อปิดอย่างถูกต้องคุณทำงาน

sudo shutdown

เมื่อคุณทำเช่นนี้คุณจะเห็นแสง "ACT" (สีเขียว) กะพริบ 10 ครั้ง (0.5 วินาทีช่วงเวลา) เมื่อหยุดกระพริบไฟสีเขียวจะดับลง ณ จุดนี้มันมีความปลอดภัยที่จะถอดปลั๊กไฟหรือดึงปลั๊ก

แสงสีแดงจะยังคงอยู่ตราบใดที่มีการใช้พลังงานกับ Pi

หลังจากปิดเครื่องคุณจะต้องถอดพลังงานออกแล้วใช้พลังงานอีกครั้งเพื่อเปิดเครื่อง Pi


2

ดังที่ได้กล่าวไว้ก่อนหน้านี้ไฟ LED สีแดงหมายถึง pi ได้รับพลังงานเมื่อไฟ LED สีเขียวเป็นกิจกรรม (ฉันเชื่อว่ากิจกรรมของดิสก์)

คุณสามารถดึงปลั๊กเมื่อไฟ LED สีเขียวหยุดกะพริบหลังจากคำสั่งปิดเครื่องหรือคุณสามารถย่อแผ่นเรียกใช้ / รีเซ็ตที่อยู่บนบอร์ด

เว็บไซต์นี้มีคำแนะนำที่ดีเกี่ยวกับวิธีเพิ่มสวิตช์ฮาร์ดรีเซ็ตหากคุณยินดีที่จะบัดกรีพินไม่กี่ครั้ง

หากคุณใช้ฮาร์ดรีเซ็ตตรวจสอบให้แน่ใจว่าใช้เฉพาะหลังจากหยุดหรือปิดระบบหรือเป็นวิธีสุดท้ายเมื่อรีสตาร์ทโปรเซสเซอร์ทันทีหากคุณเขียนไปยังการ์ด 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")
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.