ฉันจะป้องกันการ์ด SD ของ Pi ของฉันให้เสียหายบ่อยครั้งได้อย่างไร


47

ฉันพบข้อผิดพลาด I / O เมื่อบู๊ตจากนั้นรับ 'ข้อผิดพลาด' นี้ (ฉันใช้ Raspbian เวอร์ชันล่าสุด)

Entering kdb (current=0xca82ac80, pid 1) due to keyboard entry
kdb> _

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

PS ไฟล์ zip ของฉันไม่เสียหายและบริการแยกไฟล์ของฉันคือ Win32DiskImager


2
การ์ดของคุณอยู่ในรายการนี้หรือไม่
Butters

คุณเคยคิดเกี่ยวกับ UPS บ้างไหม
lenik

@lenik คุณกำลังบอกว่าฉันควรจะมีสิ่งที่เหมือนเครื่องป้องกันไฟกระชาก?
user151324

เพราะคุณปิดสิ่งโดยไม่มีการปิดที่เหมาะสมหรือไม่
jippie

1
@Coding_corgi มีแนวโน้มมากขึ้นที่มีแบตเตอรี่อยู่ภายในซึ่งให้พลังงานเป็นเวลา 5-10 นาทีหลังจากไฟฟ้าดับซึ่งช่วยให้คุณไม่สนใจการตวัดพลังงานไฟฟ้าสั้น ๆ และให้เวลาคุณในการปิดเครื่อง (โดยอัตโนมัติ) คอมพิวเตอร์ของคุณเมื่อไฟดับนาน เวลา. มันเรียกว่า "Uninterruptable Power Supply" หรือ UPS สั้น ๆ
lenik

คำตอบ:


48

ฉันจะไม่เขียนเกี่ยวกับการตรวจสอบ HW และรายการการ์ด SD ที่ใช้งานร่วมกันได้เพราะคุณอาจตรวจสอบสิ่งเหล่านี้ทั้งหมดแล้ว สิ่งที่ฉันกำลังจะเขียนคือทางออกถาวรที่ช่วยให้หยิกปัญหาในตาและแก้ไขปัญหาอย่างถาวร

หากคุณไม่ต้องการให้การ์ด SD ของคุณเสียหายเมื่อคุณเปิดสวิตช์ไฟคุณจะต้องใช้มันในโหมดอ่านอย่างเดียว หากไม่มีการเขียนลงในการ์ด SD ของคุณจะไม่ได้รับความเสียหายไม่ว่าคุณจะทำอะไร

วิธีแก้ปัญหาที่ชัดเจน (แต่ไม่ใช่การทำงาน) จะพยายามพลิกสวิตช์ "อ่านอย่างเดียว" ที่ด้านข้างของการ์ด SD โชคไม่ดีที่นี่ไม่ทำงานเพราะแผนผังแสดงว่าสวิตช์นี้ถูกกำหนดเส้นทางแล้วและตำแหน่งนั้นถูกเพิกเฉย

วิธีอื่นที่ละเอียดกว่า (แต่ใช้งานได้) จะเป็นการดัดแปลง/etc/fstabเพื่อเมาต์พาร์ติชันทั้งหมดของคุณเป็นแบบอ่านอย่างเดียว ข้อเสียของวิธีนี้คือบันทึกของคุณจะต้องถูกเขียนไว้ที่อื่น (USB stick, RAM drive) และในกรณีของ RAM ไดรฟ์บันทึกจะไม่คงอยู่ในระหว่างการรีบูต เพื่อทำสิ่งนี้:

  1. คัดลอกภาพ RPi ไปยังการ์ด SD ของคุณโดยใช้วิธีใดก็ได้ที่คุณต้องการ
  2. บูตจาก SD และraspi-configจะเริ่มต้นโดยอัตโนมัติ อย่า "ขยายระบบไฟล์" เพียงแค่ตั้งค่าเขตเวลาและการตั้งค่าสากลของคุณ
  3. เรียกใช้sudo fdisk /dev/mmcblk0กด 'p' เพื่อพิมพ์ตารางพาร์ทิชันปัจจุบัน จากนั้นป้อนคำสั่งต่อไปนี้:

    n        Create a new partition
    [enter]  Make a primary partition
    [enter]  Use the default number
    [#]      1 greater than the end of mmcblk0p2
    [enter]  Expand to the end of the SD card
    w        Write the partition table and exit
    
  4. /etc/fstabแก้ไข ควรมีลักษณะดังนี้:

    proc            /proc     proc    defaults 0 0
    /dev/mmcblk0p1  /boot     vfat    ro       0 0
    /dev/mmcblk0p2  /         ext4    ro       0 0
    /dev/mmcblk0p3  /home     ext4    defaults,errors=remount-ro  0  1
    none            /var/run  ramfs   size=1M  0 0
    none            /var/log  ramfs   size=1M  0 0
    
  5. รันsudo partprobeเพื่อรู้จักพาร์ติชันใหม่

  6. sudo mkfs --type ext4 /dev/mmcblk0p3รูปแบบพาร์ทิชันใหม่ของคุณด้วย
  7. Reboot

หากด้วยเหตุผลบางอย่างที่คุณต้องทำการเปลี่ยนแปลงกับระบบของคุณคุณสามารถติดตั้งพาร์ติชันแบบอ่านอย่างเดียวใหม่ด้วยการเข้าถึงการเขียน:

sudo mount -o remount,rw /dev/mmcblk0p2

เดี๋ยวก่อนฉันไม่สามารถเขียนไปที่ SD card ของฉันถ้าฉันทำเช่นนี้? หรือตอนบูทเท่านั้น
user151324

1
@coding_corgi สิ่งนี้ควรหยุดเขียนไปยังการ์ด SD ทั้งหมด
apnorton

ทำไมคุณต้องเขียนไปยังการ์ด SD ของคุณ? กำลังเขียนลง SD + power down = ความเสียหายของ FS คุณอาจใช้ USB stick หรือสร้างพาร์ติชันแยกต่างหากในการ์ด SD ถ้าคุณต้องการบันทึกข้อมูลบางอย่าง ในกรณีนี้อย่างน้อยระบบของคุณจะเริ่มต้นใช้งานและจากนั้นคุณอาจตรวจสอบข้อมูลของคุณเพื่อดูว่าเกิดความเสียหาย
lenik

@anorton นี่เป็นการหยุดการเขียนการเข้าถึงสองพาร์ติชันแรกบนการ์ด SD แต่ไม่มีใครบอกว่าคุณไม่สามารถสร้างพาร์ติชันอื่นหรือใช้สื่ออื่นเพื่อบันทึกข้อมูล ตัวอย่างเช่น RasPi แบบอ่านอย่างเดียวเขียนข้อมูลผ่านเครือข่าย - อาจเป็นโซลูชันที่เชื่อถือได้มาก
lenik

1
ฉันเขียนข้อมูลวิดีโอการ์ด SD ของฉันจาก raspi cam และมันก็ตายไปหลายต่อหลายครั้ง! ฉันไม่เคยมีปัญหาใด ๆ กับการบูทขึ้นดึงลวดออกหรือระบบขัดข้อง อ่านอย่างเดียวเป็นสิ่งที่ดีสำหรับการผลิตเมื่อคุณเสียบแล้วเล่น ปัญหานี้ไม่ควรเกิดขึ้นในระหว่างการพัฒนา แต่อย่างใด - ฉันสงสัยว่าการอ่านเพียงอย่างเดียวจะทำให้ข้อมูลของเขายุ่งเพราะมีบางสิ่งที่เกิดขึ้นในระดับที่สูงกว่าเคอร์เนลที่สามารถจัดการได้
Piotr Kula

4

ทั้งนี้ขึ้นอยู่กับสิ่งที่คุณใช้ RPi ของคุณคุณอาจถูกใส่เข้าไปใน IPE ซึ่งเป็น "รสชาติที่พิสูจน์ได้ของ Raspbian"

ฉันวางแผนที่จะใช้มันเพื่อบูต RPi ของฉัน หากฉันต้องการข้อมูลที่จะเขียนฉันจะใช้ไดรฟ์ USB ที่ฉันจะเมานต์แบบอ่านอย่างเดียว (ฉันต้องการ SD ของฉันที่จะปลอดภัยและเสียหายไดรฟ์ USB กว่าต้องซ่อมแซม SD ของฉัน)

ดูโฮมเพจ IPE

ตามที่ระบุไว้ที่นั่น "นอกจากนี้ให้ใช้“ ipe-rw” และ“ ipe-ro” เพื่อเปลี่ยนระบบไฟล์รูทเป็นโหมดที่เขียนได้หรืออ่านได้อย่างเดียว"


2

ฉันได้เอาชนะปัญหานี้โดยใช้แฟลชไดรฟ์ USB สำหรับพาร์ติชันหลักของฉัน

  1. คืนค่าภาพ raspbian ไปยังไดรฟ์ USB

  2. ฟอร์แมตการ์ด SD ให้อ้วน

  3. คัดลอกเนื้อหาของพาร์ติชันไขมันจากไดรฟ์ USB ไปยังการ์ด SD

  4. แก้ไข config.txt บนการ์ด sd เพื่อบูตจาก / dev / sda

เป็นหลัก rpi จะยังคงบูตจากการ์ด SD แต่จะใช้ไดรฟ์ USB สำหรับระบบปฏิบัติการและอ่าน / เขียน



1

โปรดตรวจสอบให้แน่ใจว่า RPi ของคุณทำงานด้วยความเร็วเริ่มต้น (เช่น CPU ที่ 700mhz) ส่วนตัวฉันพบความเสียหายของการจัดเก็บด้วยการ์ด SD ต่าง ๆ - แต่เมื่อทำงานตลอดเวลา น่าเสียดายที่บางส่วนกระจาย (ภาพ) มาพร้อมกับการตั้งค่าที่น่าสงสัยในconfig.txt


ฉันยังไม่ได้โอเวอร์คล็อกซีพียูของฉันขอบคุณแม้ว่า
user151324

ลองใช้ RPi อื่นเพื่อยกเว้นโอกาสที่คุณจะมีข้อบกพร่องหรือแตกหักอย่างใดอย่างหนึ่ง
Jitter

ฉันมีเพียงหนึ่ง
user151324

คุณอาจจะหมดตัวเลือกและขอ RMA ..
กระวนกระวาย

RMA? นั่นอะไร?
user151324

1

หากราสเบอร์รี่ Pi ของคุณถูกแช่แข็งคุณจะไม่สามารถปิดเครื่องได้อย่างถูกต้องนี่จะช่วยได้ ฉันทำการ์ด SD ของฉันแตกก่อนหน้านี้:

กดทั้ง Alt + PrintScreen ค้างไว้และในขณะที่กดปุ่มเหล่านั้นค้างไว้ให้กดปุ่มต่อไปนี้ตามลำดับทีละครั้งด้วยการหยุดชั่วครู่ระหว่างสองสามวินาที

Alt+ PrintScreen+R E I S U O

หรือ

Alt+ PrintScreen+ R E I S U B(รีบูต)

ตัวช่วยจำที่ใช้งานง่ายในการจำนั่นคือ Reboot แม้ว่าระบบจะใช้งานไม่ได้เต็มที่

แทน "O" สำหรับ "B" เพื่อปิดระบบแทนการรีบูต (O = off, B = boot)

ที่มา: https://www.raspberrypi.org/forums/viewtopic.php?t=176612#p1126262


0

เท่าที่พบในเว็บไซต์ elinux ฉันเลือกเฉพาะสิ่งที่ตรงกับสถานการณ์ของคุณ แต่โปรดไปที่พวกเขาเพื่อรับข้อมูลเพิ่มเติม ...

  • หากคุณมีปัญหาให้ตรวจสอบว่าคุณมีเฟิร์มแวร์เวอร์ชั่นล่าสุดพร้อม rpi-update
  • บาง SD การ์ดไม่ทำงานบน R-Pi เพื่อตรวจสอบรายชื่อของ SD การ์ดที่รู้จักกัน
  • หากคุณมีปัญหาในการตั้งค่าการ์ด SD คุณอาจต้องการเริ่มต้นโดยการลบมันอย่างสมบูรณ์โดยเฉพาะถ้ามันถูกใช้ในที่อื่นและยังมีข้อมูล / พาร์ทิชัน มันเป็นการดีที่จะทำการจัดรูปแบบ FULL (ระดับต่ำ) ด้วยวิธีใด ๆ เนื่องจากสามารถค้นหาเซกเตอร์ที่ไม่ดีได้ในบางครั้งและเพิ่มลงในรายการที่ไม่ใช้
    • ผู้ใช้ Windows และ Mac สามารถดาวน์โหลดเครื่องมือการจัดรูปแบบจาก SD Association: https://www.sdcard.org/downloads/formatter_3/
    • การฟอร์แมตการ์ดนั้นทำได้ง่ายในกล้องดิจิตอล
    • หากคุณกำลังเตรียมการ์ด SD ของคุณบน Linux หรือ Mac OS ด้วยตนเองโดยใช้คำสั่ง dd การดำเนินการนี้จะลบข้อมูลและพาร์ทิชันที่มีอยู่ทั้งหมด ตรวจสอบให้แน่ใจว่าคุณเขียนการ์ดทั้งหมด (เช่น / dev / sdd) และไม่ไปยังพาร์ติชันที่มีอยู่ (เช่น / dev / sdd1)
  • หากคุณมี sdcard ที่ไม่ได้ทำงานร่วมกับเฟิร์มแวล่าสุดหัวมากกว่าที่นี่
  • ตรวจสอบให้แน่ใจว่าคุณมีแหล่งจ่ายไฟที่ดี ลองและถอดปลั๊กทุกอย่างและดูว่ามันจะอยู่ได้นานแค่ไหน เสียบรายการกลับมาทีละหนึ่งโดยการทดสอบความมั่นคง

หากคุณได้ทำตามทุกขั้นตอนเหล่านั้นสิ่งเดียวที่เป็นไปได้ที่จะลองคือใช้การ์ด SD อื่นที่เลือกอย่างระมัดระวังจากรายการที่เข้ากันได้ ตรวจสอบให้แน่ใจว่าได้ซื้อการ์ดดั้งเดิมจากที่เชื่อถือ ไม่เหมือนอีเบย์ประเทศจีนหรืออะไรบางอย่าง


ฉันใช้การ์ด SD 3 ตัวในกระบวนการ (รองรับทั้งหมด) SanDisk, Kingston และ Lexar ฉันไม่ได้ตั้งค่าการ์ด SD ด้วยตนเองฉันใช้ Win32DiskImager หลังจากลองใช้ Ubuntu และ Mac OS X แล้ว
user151324

มันแปลกที่ทำให้ fs ของคุณอ่านคงที่เท่านั้น คุณจากผู้คนหลายล้านคนมีปัญหานี้ บางทีคุณอาจมีขยะ / ไวรัสทำให้ระบบไฟล์ของคุณยุ่งเหยิง รากแบบอ่านอย่างเดียวคือความเจ็บปวดในลา ... รอดู
Piotr Kula

ขอบคุณ, มีบางอย่างแปลก ๆ เกิดขึ้น, ไม่ใช่ไวรัสแน่นอน ...
user151324

0

เพื่อครอบคลุมทุกพื้นดินตรวจสอบว่าแหล่งจ่ายไฟของคุณดีพอ ลองใช้อุปกรณ์ชาร์จอื่นหรือเสียบ RPI กับพอร์ต USB ของพีซีเพื่อทดสอบ โปรดจำไว้ว่าอุปทาน RPI ที่แนะนำคือประมาณ 700mA แต่ผู้ให้บริการที่อ่อนแอบางรายอาจไม่สามารถรักษาระดับการใช้งานให้คงที่ได้

ฉันมีเราเตอร์ที่เริ่มทำตัวบ้า ๆ บอ ๆ สักวันจากนั้นก็โอเคแล้วก็บ้าไปแล้วก็ปรับอีกที ... ฉันพบว่าแหล่งจ่ายไฟกำลังส่งแรงดันไฟฟ้าที่เปลี่ยนแปลง (3V ถึง 5.5V) ในเวลาที่เราเตอร์อยู่ บ้า. แทนที่อุปทานนั้นด้วยอุปกรณ์ใหม่ทั้งหมดนั้นใช้ได้ ดังนั้นลองเปลี่ยนแหล่งจ่ายไฟและวัดแรงดันเอาต์พุต

สุดท้ายปิด RPI โดยปิดระบบปฏิบัติการและถอดปลั๊ก RPI เฉพาะเมื่อคุณมีไฟ led สีแดงเพียงอันเดียว RPI นั้นไม่ได้ปิดตัวลงจริงๆถ้าคุณมีไฟ led สีแดงมากกว่าหนึ่งอัน นอกจากนี้พยายามหลีกเลี่ยงการตัดการเชื่อมต่อ rpi โดยการถอดแหล่งจ่ายไฟออกจากปลั๊กมันจะเป็นการดีกว่าที่จะเอาพลังงานออกจาก RPI และหลังจากที่ห่างไกลจากแหล่งจ่ายไฟจากปลั๊ก


ไม่ฉันมี 5.1V ที่คงที่ @ 2100 A และฉันปิดเครื่องอย่างถูกต้องเสมอ
user151324

0

ฉันมีปัญหาที่คล้ายกันใน pi จาก RS Components นี่คือหนึ่งใน pis ที่ทำกับจีน อีกหนึ่งผลิตในสหราชอาณาจักรจาก Element 14 ไม่เคยมีการทุจริตด้วย sdcard และ powersupply เดียวกัน อาจเป็น Hardwareflaw บางตัวที่มีหน่วยคอมโพเนนต์ ra ไม่แน่ใจแน่นอน แต่ทุกอย่างดูเหมือนจะชี้ไปในทิศทางนั้น


0

ฉันเคยประสบปัญหาความล้มเหลวของ SD กับ PI ของฉันบางครั้ง 5 วันติดต่อกันบางครั้งมันทำงานได้หนึ่งเดือน

วิธีเดียวที่ฉันจะทำให้มันทำงานได้อย่างเชื่อถือได้นานกว่าหนึ่งปีในตอนนี้ก็คือ Boot จากแท่ง USB วิธีนี้คุณจะไม่ใช้การ์ด SD ของคุณ (ตอนบูตเท่านั้น) และต้องการเพียงการ์ด SD ขนาด 500 เมกะไบต์ (ราคาถูก) และ USB Stick


0

ฉันทำตามคำใบ้ที่คุณสามารถทำได้syncก่อนปิดเครื่องและจนถึงตอนนี้ฉันก็ประสบความสำเร็จกับคำสั่งนี้:

sync; sudo shutdown -t 9 -r now

คุณยังคงประสบปัญหากับ Raspberry ที่ใช้วิธีแก้ปัญหาข้างต้นหรือไม่?
CuriousMind

ฉันไม่ได้มีปัญหาใด ๆ อีกต่อไป - แต่ฉันยอมรับว่าฉันมักจะปล่อยให้ Pi ติดอยู่แทนที่จะปิดเครื่อง แต่ฉันเดาว่าฉันอึมันลงได้ดีกว่าห้าสิบครั้งด้วยบรรทัดข้างบนและมันก็ไม่ได้ล้มเหลวตั้งแต่นั้นมา ดังนั้นจากสถิตินั้น - มันใช้งานได้
dirkk0

ฉันไม่คิดว่าจะแก้ไขปัญหาได้ เมื่อคุณเรียกใช้การปิดระบบควบคุมไม่ควรเกิดความเสียหายกับการ์ด sd ของคุณโดยการออกแบบ ความเสียหายดูเหมือนจะเกิดขึ้นส่วนใหญ่ในกรณีที่อุปกรณ์ถูกถอดปลั๊ก (หรือเกิดไฟดับ) ซึ่งไม่เกี่ยวข้องกับsyncหรือshutdownคำสั่งของคุณเว้นแต่คุณจะทำงานsyncทันทีก่อนที่จะถอดปลั๊ก (คาดไม่ถึง!) ซึ่งดูเหมือนว่าไม่สามารถทำได้
nhee
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.