Kiểm tra và sửa lỗi thẻ SD trong chính Android?


42

Đôi khi thẻ SD của tôi bị "hỏng" và điều này dẫn đến nhiều lỗi đọc / ghi. Thông thường, kết nối thẻ SD với windows 7 và chọn tùy chọn "Kiểm tra lỗi" (Nhấp chuột phải vào ổ đĩa> Công cụ> Kiểm tra lỗi) sẽ tìm thấy lỗi và khắc phục nó.

Có công cụ hoặc ứng dụng nào để kiểm tra thẻ SD để tìm lỗi ổ đĩa và sửa lỗi tương tự từ bên trong Android không?

Tôi cũng muốn đề cập rằng tôi đang root froyo với busybox được cài đặt.


Bạn đã thử với một ứng dụng đầu cuối, thực hiện suvà chạy /system/bin/fsck.exfat?
Izzy

@Izzy Cho tôiNo such file or directory
Irfan

Kiểm tra các địa điểm khác nhau, có thể đó là /system/xbinthay thế? Hãy thử cdvào thư mục và ls fsc*kiểm tra những gì có sẵn. Phải ở đâu đó :)
Izzy

1
Chính xác. Busybox cố gắng càng mỏng càng tốt. Hãy dùng thử Google với "man mount", hoạt động tốt :) Và xem câu trả lời của tôi dưới đây. Nếu có điều gì đó không rõ ràng, hãy bình luận ở đó (hoặc gặp tôi trong cuộc trò chuyện - mặc dù tôi sẽ không có mặt ở đó trong vài giờ tới, nhưng vẫn có những thành viên biết giúp bạn khác :)
Izzy

2
Nếu bạn liên tục gặp lỗi trên thẻ SD, bạn nên đảm bảo rằng đó thực sự là dung lượng đã nêu khi sử dụng H2testw (chỉ liên kết bằng tiếng Đức, phần mềm bằng tiếng Đức và tiếng Anh. Tôi tin rằng đây là ngôi nhà chính thức mặc dù có vẻ trái ngược). Thẻ SD xấu sẽ tự động bị hỏng.
Mã Bling

Câu trả lời:


17

Bạn có thể khắc phục sự cố này với sự trợ giúp của root và trình giả lập thiết bị đầu cuối (ví dụ: Trình mô phỏng đầu cuối Android (hoặc, thay vào đó, sử dụng adb shell). Nhị phân để thực hiện công việc được gọi fsckvà thường nằm trong một /system/xbinhoặc /system/bin. Đôi khi bạn cần một biến thể đặc biệt của nó , có thể ví dụ như được gọi fsck.exfathoặc tương tự. Vì vậy, trước tiên hãy đảm bảo chúng tôi tìm đúng nhị phân:

cd /system/xbin
ls fsc*

Nếu không tìm thấy, lặp lại với /system/bin. Tôi sẽ giả sử ở đây nó được tìm thấy ở nơi đầu tiên, và được gọi đơn giản fsck(điều chỉnh tương ứng sau đây nếu không phải như vậy).

Như fsckđến từ "Linux cốt lõi", chúng ta có thể tham khảo ý kiến của người đàn ông trang cho cú pháp. Mặc dù có thể có một số tùy chọn không hoạt động trên Android, nhưng những tùy chọn cơ bản nhất nên có. Xem trang man được liên kết để biết chi tiết (hoặc chạy Linux VM và sử dụng man fscktrong trường hợp trang đó biến mất) - Tôi sẽ tuân theo những điều cơ bản ở đây:

Trước tiên, chúng tôi cần tìm thiết bị mà thẻ SD của bạn bị ràng buộc. Nếu nó được gắn kết, mountlệnh sẽ hỗ trợ chúng ta:

mount

Về cơ bản, đó là: Kiểm tra đầu ra và xem thẻ SD của bạn nằm ở đâu. Thông thường đây là một cái gì đó sử dụng vold, nhưng nó khác nhau giữa các thiết bị. Đầu ra có thể bao gồm một cái gì đó như /dev/block/vold/179:17 on /mnt/storage/sdcard- trong trường hợp đó, phần đầu tiên trong trích dẫn của tôi là thiết bị của chúng tôi. Để sửa chữa "ổ đĩa", bạn cần ngắt kết nối nó trước. Điều này có thể được thực hiện thông qua menu cài đặt, hoặc, vì chúng ta chỉ ở trong thiết bị đầu cuối, bằng cách phát hành

umount /dev/block/vold/179:17

Bây giờ chúng ta có thể đi cho công việc sửa chữa. Cú pháp cơ bản là:

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

Vì vậy, trước tiên chúng tôi thử cách tiếp cận đơn giản nhất và hy vọng fscktìm ra mọi thứ:

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

Về cơ bản có nghĩa là: Hiển thị tiến trình (-C) và luôn yêu cầu người dùng sửa chữa (-r) bất kỳ lỗi nào /dev/block/vold/179:17. Nếu điều này không hiệu quả, hãy kiểm tra với trang man được liên kết để có thêm tùy chọn.


4
Bạn cũng có thể tự lưu các cdbước nếu bạn muốn bằng cách sử dụng ls /system/bin/fsc*ls /system/xbin/fsc*từ bất cứ thư mục làm việc hiện tại của bạn. Bạn thậm chí có thể kết hợp cả hai thành một lệnh với ls /system/xbin/fsc* /system/bin/fsc*.
eldarerathis

1
Không, tôi không nhầm lẫn mọi thứ, điều tôi không biết là câu hỏi này thực sự là về thẻ SD. Vì vậy, yeah, tôi thực sự đã nhầm lẫn một số điều. Nói đúng ra, bạn cũng có thể định dạng thẻ SD của mình dưới dạng ext, do đó có thể áp dụng cho những người làm điều đó.
Nói dối Ryan

1
Điểm lấy. Mặc dù "người dùng trung bình" (hoặc người "nghi ngờ") có thể gắn bó tốt hơn với FAT, ít nhất là cho khả năng tương tác. Ít nhất là cho đến khi ExtFS được hỗ trợ trên phần lớn các hệ điều hành một cách dễ dàngtheo mặc định mà không cần thêm trình điều khiển (đoán Windows đang và sẽ vẫn là một cạm bẫy ở đây, như thường lệ).
Izzy

1
Cảm ơn câu trả lời này, tôi nghĩ đó là những gì tôi cần. Tôi có một lỗi trên umount, bạn có phải là root?
Đá cẩm thạch hữu cơ

1
@OrganicMarble có, tất nhiên - đối với tất cả các lệnh trên hoặc bạn không có quyền truy cập vào các thiết bị (mọi thứ bắt đầu bằng /devcách đó).
Izzy

3

cảm ơn vì điều này, nó tiết kiệm trong ngày của tôi :)

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

Cảm ơn bạn đã đăng câu trả lời này, nó đã giúp tôi rất nhiều. Từ câu trả lời được chấp nhận, tôi không biết cách sửa hệ thống tập tin vfat. Nâng cao.
Đá cẩm thạch hữu cơ

2

Nếu bạn liên tục gặp lỗi trên thẻ SD, bạn nên đảm bảo rằng đó thực sự là dung lượng đã nêu khi sử dụng H2testw (chỉ liên kết bằng tiếng Đức, phần mềm bằng tiếng Đức và tiếng Anh. Tôi tin rằng đây là ngôi nhà chính thức mặc dù có vẻ trái ngược). Thẻ SD xấu sẽ tự động bị hỏng.


Cảm ơn các upvote về câu trả lời đã quên từ lâu này. Có lẽ nên là một bình luận, nhưng tôi có lẽ đã không có tiếng tăm về điều đó vào thời điểm đó. Tôi sẽ để nó ở đây bây giờ cho đến khi bình luận được nâng cấp và hiển thị.
Mã Bling

Tôi đã đánh giá cao nhận xét của bạn.
không thể nào quên

@unfitableid Cảm ơn, chỉ muốn chắc chắn rằng mọi người đều biết về rủi ro này. Nó thực sự hút để mất dữ liệu.
Mã Bling

OK, vì vậy bây giờ bình luận đã được nâng cấp, bạn có thể xóa câu trả lời này. :)
không thể nào quên

@unfitableid sẽ rời khỏi cả hai ngay bây giờ, để hiển thị
Mã Bling


0

Nếu tôi không nhầm, bạn có thể buộc android fsck cả bộ nhớ trong và bộ nhớ ngoài khi khởi động lại bằng cách thực hiện các thao tác sau tùy thuộc vào rom của bạn.

chạy ứng dụng đầu cuối và loại

su
touch /forcefsck

Sau đó khởi động lại.

Nếu điện thoại của bạn không được root, điều này chắc chắn sẽ thất bại.

nguồn: http://forum.xda-developers.com/showpost.php?p=57027579&postcount=20


Bạn có ý nghĩa gì bởi "tùy thuộc vào ROM của bạn"?
không thể nào quên

Thủ thuật đó có thể không hoạt động trên tất cả các điện thoại. điện thoại khác nhau có thể không làm bất cứ điều gì. Ngoài ra điện thoại của bạn cần phải được root.
Trekeyus

Khi tôi đã khởi động lại, làm sao tôi biết có fsckthực sự chạy hay không?
không thể nào quên

1
-1. Tôi đã đánh giá thấp bài viết của bạn. Đây là lý do: Tôi đã dành nhiều thời gian hơn để xem xét vấn đề. Kỹ thuật đề xuất của bạn có thể bị nhầm lẫn 100%. Nó có thể đánh lừa độc giả nghĩ rằng nó giúp, nhưng kỹ thuật thực sự không làm gì cả.
không thể nào quên

2
touch /forcefscksẽ chỉ hoạt động trên một thiết bị có tập lệnh init để kiểm tra sự hiện diện của /forcefscktập tin. Tôi không biết một thiết bị Android nào có tập lệnh init như vậy. Vì vậy, mặc dù kỹ thuật của bạn có thể sẽ hoạt động trên các thiết bị Debian, Ubuntu và Mint, tôi rất nghi ngờ rằng nó sẽ hoạt động trên mọi thiết bị Android. Nếu bất cứ ai từng tìm thấy ngay cả một thiết bị Android có tập lệnh init để kiểm tra /forcefsck, vui lòng cho tôi biết! Đơn giản chỉ cần trả lời bình luận này.
không thể nào quên
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.