ตรวจสอบและแก้ไขข้อผิดพลาดการ์ด SD ภายใน Android เองหรือไม่


42

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

มีเครื่องมือหรือแอพสำหรับตรวจสอบการ์ด SD สำหรับข้อผิดพลาดของไดรฟ์และแก้ไขเหมือนกันจากภายใน androidหรือไม่?

ฉันต้องการพูดถึงว่าฉันรูทเครื่องรูทที่ติดตั้ง busybox ไว้


คุณได้ลองกับแอป terminal, การทำsuและการเรียกใช้/system/bin/fsck.exfat?
Izzy

@Izzy ให้ฉันNo such file or directory
Irfan

ตรวจสอบสถานที่ต่าง ๆ บางทีมันอาจจะอยู่ในนั้น/system/xbinหรือ ลองcdเข้าสู่ไดเรกทอรีและls fsc*ตรวจสอบสิ่งที่มีอยู่ ต้องอยู่ที่ไหนสักแห่ง :)
อิซซี

1
เผง Busybox พยายามที่จะผอมที่สุด ลองป้า Google ด้วย "man mount" ใช้งานได้ดี :) และดูคำตอบของฉันด้านล่าง หากสิ่งที่ไม่ชัดเจนของความคิดเห็นมี (หรือเห็นฉันในการแชท - แม้ว่าฉันจะไม่สามารถใช้ได้มีไม่กี่ชั่วโมงถัดไปยังมีคนอื่น ๆ รู้ว่าสมาชิกที่จะช่วยให้คุณออก :)
อิซซี่

2
หากคุณมีข้อผิดพลาดซ้ำ ๆ ในการ์ด SD ของคุณคุณควรตรวจสอบให้แน่ใจว่าเป็นความจุที่ระบุโดยใช้H2testw (ลิงก์ในภาษาเยอรมันเท่านั้นซอฟต์แวร์ในภาษาเยอรมันและภาษาอังกฤษฉันเชื่อว่านี่เป็นบ้านอย่างเป็นทางการ การ์ด SD ที่ไม่ดีจะเกิดความเสียหายโดยอัตโนมัติ
รหัส Bling

คำตอบ:


17

คุณสามารถแก้ไขปัญหานี้ด้วยความช่วยเหลือของรากและจำลอง terminal (เช่นAndroid Emulator สถานี (หรือหรือใช้adb shell). ไบนารีที่จะทำผลงานที่เรียกว่าfsckและมักจะตั้งอยู่ทั้งใน/system/xbinหรือ/system/bin. บางครั้งคุณจำเป็นต้องมีพิเศษแตกต่างจากมัน ซึ่งอาจจะเรียกว่าfsck.exfatหรือไม่ชอบดังนั้นก่อนอื่นเรามาตรวจสอบให้แน่ใจว่าเราหาไบนารี่ที่ถูกต้อง:

cd /system/xbin
ls fsc*

/system/binถ้าไม่ได้พบกับการทำซ้ำ ฉันจะถือว่าที่นี่มันถูกพบในสถานที่แรกและถูกเรียกเพียงfsck(ปรับดังต่อไปนี้ตามลำดับหากไม่ได้เป็นกรณี)

ดังที่fsckมาจาก "Linux core" เราสามารถศึกษาman pageของมันสำหรับไวยากรณ์ แม้ว่าอาจมีบางตัวเลือกที่ไม่ทำงานบน Android แต่ตัวเลือกพื้นฐานที่สุดควรจะเป็น ดูหน้า man ที่เชื่อมโยงเพื่อดูรายละเอียด (หรือเรียกใช้ Linux VM และใช้man fsckในกรณีที่หน้าหายไป) - ฉันจะยึดติดกับพื้นฐานที่นี่:

ก่อนอื่นเราต้องหาอุปกรณ์ที่ SD card ของคุณผูกไว้ หากติดตั้งแล้วmountคำสั่งจะช่วยเรา:

mount

เพียงแค่นั้น: ตรวจสอบผลลัพธ์และดูว่าการ์ด SD ของคุณอยู่ที่ใด ปกติแล้วนี่จะเป็นสิ่งที่ใช้voldแต่ก็แตกต่างกันระหว่างอุปกรณ์ การส่งออกอาจรวมถึงสิ่งที่ต้องการ/dev/block/vold/179:17 on /mnt/storage/sdcard- ในกรณีที่ส่วนแรกของคำพูดของฉันเป็นอุปกรณ์ของเรา ในการซ่อมแซม "ไดรฟ์" คุณต้องยกเลิกการต่อเชื่อมก่อน สิ่งนี้สามารถทำได้ผ่านเมนูการตั้งค่าหรือในขณะที่เราอยู่ในเทอร์มินัลโดยการออก

umount /dev/block/vold/179:17

ตอนนี้เราสามารถไปงานซ่อมได้ ไวยากรณ์พื้นฐานคือ:

fsck [options] [-t fstype] <filesystem> [fsoptions]

ดังนั้นก่อนอื่นเราลองใช้วิธีที่ง่ายที่สุดและหวังว่าจะสรุปfsckทุกสิ่ง:

fsck -C -r /dev/block/vold/179:17

ซึ่งโดยทั่วไปหมายถึง: แสดงความคืบหน้า (-C) และมักจะขอให้ผู้ใช้ซ่อมแซม (-r) /dev/block/vold/179:17ข้อผิดพลาดใด หากวิธีนี้ใช้ไม่ได้ผลให้ตรวจสอบกับหน้า man ที่เชื่อมโยงเพื่อดูตัวเลือกเพิ่มเติม


4
นอกจากนี้คุณยังสามารถบันทึกcdขั้นตอนด้วยตัวคุณเองหากคุณต้องการโดยใช้ls /system/bin/fsc*และls /system/xbin/fsc*จากไดเรกทอรีการทำงานปัจจุบันของคุณ คุณสามารถรวมสองคำสั่งเข้าด้วยls /system/xbin/fsc* /system/bin/fsc*กันด้วย
eldarerathis

1
ไม่ฉันไม่สับสนสิ่งที่ฉันไม่รู้ก็คือคำถามนี้เกี่ยวกับการ์ด SD ใช่ฉันจริงสับสนบางอย่าง พูดอย่างเคร่งครัดคุณสามารถฟอร์แมตการ์ด SD ของคุณได้เช่นกันดังนั้นอาจนำไปใช้กับคนที่ทำเช่นนั้น
Lie Ryan

1
จุดที่ถ่าย แม้ว่า "ผู้ใช้เฉลี่ย" (หรือหนึ่งคน "ด้วยความสงสัย") อาจติดกับ FAT ได้ดีกว่า แต่อย่างน้อยก็สำหรับการทำงานร่วมกัน อย่างน้อยก็จนกว่า ExtFS จะได้รับการสนับสนุนบน OS ส่วนใหญ่อย่างง่ายดายและโดยค่าเริ่มต้นโดยไม่ต้องใช้ไดรเวอร์เพิ่มเติม (เดาว่า Windows เป็นและจะยังคงเป็นอันตรายอยู่ที่นี่ตามปกติ)
อิซซี

1
ขอบคุณสำหรับคำตอบนี้ฉันคิดว่ามันเป็นสิ่งที่ฉันต้องการ ฉันพบข้อผิดพลาดumountคุณต้องเป็นคนรูทหรือไม่?
หินอ่อนออร์แกนิก

1
@OrganicMarble ใช่แน่นอน - สำหรับคำสั่งทั้งหมดข้างต้นหรือคุณไม่สามารถเข้าถึงอุปกรณ์ (ทุกอย่างที่เริ่มต้นด้วย/dev)
Izzy

3

ขอบคุณสำหรับสิ่งนี้ช่วยประหยัดวันของฉัน :)

root@android:/ # mount | grep -i sdcard
/dev/block/nandk /mnt/sdcard vfat rw,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=cp437,iocharset=ascii,shortname=mixed,errors=remount-ro 0 0

root@android:/ # /system/bin/fsck_msdos -y /dev/block/nandk

ขอบคุณสำหรับการโพสต์คำตอบนี้มันช่วยฉันอย่างมาก จากคำตอบที่ยอมรับฉันไม่ทราบวิธีการแก้ไขระบบไฟล์ vfat upvoted
หินอ่อนหินอ่อนอินทรีย์

2

หากคุณมีข้อผิดพลาดซ้ำ ๆ ในการ์ด SD ของคุณคุณควรตรวจสอบให้แน่ใจว่าเป็นความจุที่ระบุโดยใช้H2testw (ลิงก์ในภาษาเยอรมันเท่านั้นซอฟต์แวร์ในภาษาเยอรมันและภาษาอังกฤษฉันเชื่อว่านี่เป็นบ้านอย่างเป็นทางการ การ์ด SD ที่ไม่ดีจะเกิดความเสียหายโดยอัตโนมัติ


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

ฉันยกระดับความคิดเห็นของคุณแล้ว
ลืม

@unforgettableid ขอบคุณเพียงแค่ต้องการให้แน่ใจว่าทุกคนรู้เกี่ยวกับความเสี่ยงนี้ มันแย่มากที่จะสูญเสียข้อมูล
รหัส Bling

ตกลงดังนั้นเมื่อความคิดเห็นได้รับการอัปเดตแล้วคุณสามารถลบคำตอบนี้ได้ :)
ลืม

@unforgettableid จะออกทั้งสองตอนนี้เพื่อการมองเห็น
Code Bling


0

หากฉันไม่เข้าใจผิดคุณสามารถบังคับให้ Android ทำการ fsck ทั้งที่เก็บข้อมูลภายในและภายนอกในการรีบูตโดยทำสิ่งต่อไปนี้ขึ้นอยู่กับ rom ของคุณ

เรียกใช้แอปเทอร์มินัลและประเภท

su
touch /forcefsck

จากนั้นรีบูท

หากโทรศัพท์ของคุณไม่รูทเครื่องจะล้มเหลวอย่างแน่นอน

แหล่งที่มา: http://forum.xda-developers.com/showpost.php?p=57027579&postcount=20


คุณหมายถึงอะไร "ขึ้นอยู่กับ ROM ของคุณ"
ลืม

เคล็ดลับนั้นอาจใช้ไม่ได้กับโทรศัพท์ทุกรุ่น โทรศัพท์ที่แตกต่างกันอาจล้มเหลวในการทำอะไร นอกจากนี้โทรศัพท์ของคุณจะต้องมีการรูท
Trekeyus

เมื่อฉันรีบูทฉันจะรู้ได้อย่างไรว่าfsckวิ่งจริงหรือไม่?
ลืมไม่ลง

1
-1 ฉันลงคะแนนโพสต์ของคุณแล้ว นี่คือเหตุผล: ฉันใช้เวลาดูเรื่องนี้มากขึ้น เทคนิคที่คุณแนะนำอาจผิดพลาด 100% มันอาจหลอกลวงผู้อ่านให้คิดว่ามันช่วยได้ แต่เทคนิคไม่ได้ทำอะไรเลย
ลืม

2
touch /forcefsckจะทำงานบนอุปกรณ์ที่มีสคริปต์เริ่มต้นซึ่งจะตรวจสอบว่ามี/forcefsckไฟล์อยู่หรือไม่ ฉันไม่รู้อุปกรณ์ Android เครื่องเดียวซึ่งมีสคริปต์เริ่มต้น ดังนั้นถึงแม้ว่าเทคนิคของคุณจะทำงานบนอุปกรณ์ Debian, Ubuntu และ Mint แต่ฉันสงสัยอย่างมากว่ามันจะทำงานบนอุปกรณ์ Android ใด ๆ หากใครเคยพบแม้แต่อุปกรณ์ Android เดียวที่มีสคริปต์เริ่มต้นซึ่งจะตรวจสอบ/forcefsckโปรดแจ้งให้เราทราบ! เพียงตอบความคิดเห็นนี้
ลืม
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.