Sprawdź i napraw błędy karty SD w samym systemie Android?

42

Czasami moja karta SD ulega „uszkodzeniu”, co prowadzi do wielu błędów odczytu / zapisu. Zwykle podłączenie karty SD do systemu Windows 7 i wybranie opcji „Sprawdzanie błędów” (kliknij prawym przyciskiem myszy dysk> Narzędzia> Sprawdzanie błędów) znajduje uszkodzenie i naprawia je.

Czy jest jakieś narzędzie lub aplikacja do sprawdzania kart SD pod kątem błędów napędu i ich naprawy z poziomu samego Androida ?

Chciałbym również wspomnieć, że jestem na zrootowanym froyo z zainstalowanym busyboksem.

Irfan
źródło
Próbowałeś z aplikacją terminalową, wykonując sui uruchamiając /system/bin/fsck.exfat?
Izzy
@Izzy Daje miNo such file or directory
Irfan
Sprawdź różne lokalizacje, a może /system/xbinzamiast tego? Spróbuj cdwejść do katalogu i ls fsc*sprawdzić, co jest dostępne. Musi być gdzieś :)
Izzy
1
Dokładnie. Busybox stara się być jak najmniejszy. Wypróbuj ciotkę Google z „man mount”, działa dobrze :) I zobacz moją odpowiedź poniżej. Jeśli coś jest niejasne, skomentuj je (lub zobacz mnie na czacie - chociaż nie będę tam dostępny przez kilka następnych godzin, są jeszcze inni znający się członkowie, którzy ci pomogą :)
Izzy
2
Jeśli wielokrotnie masz błędy na karcie SD, powinieneś upewnić się, że jest naprawdę o deklarowanej pojemności za pomocą H2testw (link tylko w języku niemieckim, oprogramowanie w języku niemieckim i angielskim. Uważam, że jest to oficjalny dom, pomimo pozornych przeciwności). Złe karty SD zostaną automatycznie uszkodzone.
Code Bling,

Odpowiedzi:

17

Możesz to naprawić za pomocą roota i emulatora terminala (np. Emulatora terminala Android (lub alternatywnie za pomocą adb shell). Plik binarny do wykonania zadania jest nazywany fscki zwykle znajduje się w jednym /system/xbinlub drugim /system/bin. Czasami potrzebujesz specjalnego wariantu , które mogą być np. wywoływane fsck.exfatitp. Najpierw upewnijmy się, że znajdziemy odpowiedni plik binarny:

cd /system/xbin
ls fsc*

Jeśli nie znaleziono, powtórz za pomocą /system/bin. Zakładam, że tutaj został znaleziony w pierwszej kolejności i jest po prostu wywoływany fsck(odpowiednio dostosuj następujące, jeśli tak nie jest).

Ponieważ fsckpochodzi z „rdzenia Linuxa”, możemy sprawdzić jego składnię na stronie podręcznika użytkownika. Chociaż mogą istnieć pewne opcje, które nie działają na Androidzie, najbardziej podstawowe powinny. Zobacz połączoną stronę podręcznika, aby uzyskać szczegółowe informacje (lub uruchom maszynę wirtualną z systemem Linux i użyj, man fsckjeśli ta strona zniknie) - pozostanę tutaj:

Najpierw musimy znaleźć urządzenie, z którym związana jest karta SD. Jeśli jest zamontowany, mountpolecenie pomoże nam:

mount

To w zasadzie: sprawdź dane wyjściowe i zobacz, gdzie znajduje się karta SD. Zwykle jest to coś używającego vold, ale różni się w zależności od urządzenia. Dane wyjściowe mogą zawierać coś w rodzaju /dev/block/vold/179:17 on /mnt/storage/sdcard- w takim przypadku pierwszą częścią mojego cytatu jest nasze urządzenie. Aby naprawić „dysk”, najpierw należy odmontować. Można to zrobić za pomocą menu ustawień lub, jak już jesteśmy w terminalu, wydając

umount /dev/block/vold/179:17

Teraz możemy przejść do naprawy. Podstawowa składnia to:

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

Najpierw wypróbowujemy najprostsze podejście i mam nadzieję, że fsckwszystko się rozwiąże:

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

Co w zasadzie oznacza: Pokaż postęp (-C) i zawsze poproś użytkownika o naprawienie (-r) wszelkich błędów /dev/block/vold/179:17. Jeśli to nie zadziała, sprawdź link do strony man, aby uzyskać dodatkowe opcje.

Izzy
źródło
4
Możesz również zapisać sobie cdkroki, jeśli chcesz, używając ls /system/bin/fsc*i ls /system/xbin/fsc*z dowolnego bieżącego katalogu roboczego. Możesz nawet połączyć je w jedno polecenie ls /system/xbin/fsc* /system/bin/fsc*.
eldarerathis
1
Nie, nie mylę rzeczy, nie wiedziałem, że to pytanie dotyczy karty SD. Tak, tak naprawdę pomyliłem niektóre rzeczy. Ściśle mówiąc, możesz sformatować swoją kartę SD również jako ext, więc może to dotyczyć osób, które to robią.
Lie Ryan,
1
Punkt wzięty. Chociaż „przeciętny użytkownik” (lub ten „wątpliwy”) może lepiej trzymać się FAT, przynajmniej pod względem interoperacyjności. Przynajmniej dopóki ExtFS nie będzie obsługiwany w większości systemów operacyjnych łatwo i domyślnie bez dodatkowych sterowników (domyślam się, że Windows jest i pozostanie tutaj pułapką, jak zwykle).
Izzy
1
Dzięki za tę odpowiedź, myślę, że tego właśnie potrzebuję. Mam błąd umount, czy musisz być rootem?
Marmur Organiczny
1
@OrganicMarble tak, oczywiście - dla wszystkich powyższych poleceń, w przeciwnym razie nie uzyskasz dostępu do urządzeń (wszystko od początku /dev) w ten sposób.
Izzy
3

dziękuję za to, ratuje mój dzień :)

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
junior
źródło
Dziękuję za opublikowanie tej odpowiedzi, bardzo mi pomogła. Z zaakceptowanej odpowiedzi nie wiedziałem, jak naprawić system plików vfat. Pozytywne.
Marmur Organiczny
2

Jeśli wielokrotnie masz błędy na karcie SD, powinieneś upewnić się, że jest naprawdę o deklarowanej pojemności za pomocą H2testw (link tylko w języku niemieckim, oprogramowanie w języku niemieckim i angielskim. Uważam, że jest to oficjalny dom, pomimo pozornych przeciwności). Złe karty SD zostaną automatycznie uszkodzone.

Kod Bling
źródło
Dzięki za głos w sprawie tej dawno zapomnianej odpowiedzi. Prawdopodobnie powinien to być komentarz, ale prawdopodobnie nie miałem wtedy takiej reputacji. Zostawię to na razie, dopóki komentarz nie zostanie oceniony i będzie widoczny.
Code Bling,
Głosowałem za twoim komentarzem.
niezapomniany
@unforgettableid Dzięki, po prostu chcę się upewnić, że wszyscy wiedzą o tym ryzyku. Naprawdę trudno jest stracić dane.
Code Bling
OK, więc teraz, gdy komentarz został oceniony, możesz usunąć tę odpowiedź. :)
niezapomniany
@unforgettableid na razie opuści oba, dla widoczności
Code Bling
0

Jeśli się nie mylę, możesz zmusić Androida do zresetowania pamięci wewnętrznej i zewnętrznej podczas restartu, wykonując następujące czynności w zależności od ROM.

uruchom aplikację terminala i wpisz

su
touch /forcefsck

Następnie uruchom ponownie.

Jeśli Twój telefon nie jest zrootowany, to na pewno się nie powiedzie.

źródło: http://forum.xda-developers.com/showpost.php?p=57027579&postcount=20

Trekeyus
źródło
Co rozumiesz przez „w zależności od ROM”?
niezapomniany
Ta sztuczka może nie działać na wszystkich telefonach. różne telefony mogą nic nie robić. Twój telefon również musi być zrootowany.
Trekeyus
Po ponownym uruchomieniu skąd mam wiedzieć, czy fsckfaktycznie uruchomiłem, czy nie?
niezapomniany
1
-1. Głosowałem za twoim postem. Oto dlaczego: spędziłem więcej czasu na analizie sprawy. Twoja sugerowana technika jest prawdopodobnie w 100% błędna. Może zwieść czytelników myśleniem, że to pomaga, ale technika w rzeczywistości nic nie robi.
niezapomniany
2
touch /forcefsckbędzie działać tylko na urządzeniu ze skryptem inicjującym, który sprawdza obecność /forcefsckpliku. Nie znam jednego urządzenia z Androidem, które ma taki skrypt inicjujący. Tak więc, chociaż twoja technika prawdopodobnie będzie działać na urządzeniach Debian, Ubuntu i Mint, bardzo wątpię, że zadziała na dowolnym urządzeniu z Androidem. Jeśli ktokolwiek znajdzie choć jedno urządzenie z Androidem ze skryptem inicjującym, który sprawdza /forcefsck, daj mi znać! Po prostu odpowiedz na ten komentarz.
niezapomniany