SD-Kartenfehler in Android selbst überprüfen und beheben?


42

Manchmal ist meine SD-Karte "beschädigt" und dies führt zu vielen Lese- / Schreibfehlern. Wenn Sie die SD-Karte an Windows 7 anschließen und die Option "Fehlerprüfung" (Klicken Sie mit der rechten Maustaste auf das Laufwerk> Extras> Fehlerprüfung) auswählen, wird die Beschädigung festgestellt und behoben.

Gibt es ein Tool oder eine App, um SD-Karten auf Laufwerksfehler zu überprüfen und diese vom Android aus zu beheben ?

Ich möchte auch erwähnen, dass ich auf einem gerooteten froyo mit installierter busybox bin.


Haben Sie es mit einer Terminal-App versucht, eine zu machen suund die auszuführen /system/bin/fsck.exfat?
Izzy

@ Izzy gibt mirNo such file or directory
Irfan

Überprüfen Sie verschiedene Standorte, vielleicht ist es /system/xbinstattdessen in? Versuchen cdSie, in das Verzeichnis zu gelangen und ls fsc*zu überprüfen, was verfügbar ist. Muss irgendwo sein :)
Izzy

1
Genau. Busybox versucht so schlank wie möglich zu sein. Probiere Tante Google mit "man mount" aus, funktioniert einwandfrei :) Und siehe meine Antwort unten. Wenn etwas unklar ist, kommentieren Sie es (oder sehen Sie mich im Chat - obwohl ich in den nächsten Stunden nicht verfügbar sein werde, gibt es noch andere Mitglieder, die Ihnen helfen können :)
Izzy

2
Wenn Sie wiederholt Fehler auf Ihrer SD-Karte haben, sollten Sie mit H2testw (Link nur in Deutsch, Software in Deutsch und Englisch. Ich glaube, dies ist die offizielle Heimat trotz gegenteiliger Erscheinungen) sicherstellen, dass sie wirklich die angegebene Kapazität hat . Fehlerhafte SD-Karten werden automatisch beschädigt.
Code Bling

Antworten:


17

Sie können dies mit Hilfe von root und einem Terminalemulator (z. B. Android Terminal Emulator oder alternativ mithilfe von adb shell) beheben . Die zu erledigende Binärdatei wird aufgerufen fsckund befindet sich normalerweise entweder in /system/xbinoder /system/bin. Manchmal benötigen Sie eine spezielle Variante davon , die genannt werden könnten , zum Beispiel fsck.exfatoder dergleichen Also zuerst lasst uns sicherstellen , dass wir die richtige binäre finden.:

cd /system/xbin
ls fsc*

Wenn nicht gefunden, wiederholen Sie mit /system/bin. Ich gehe hier davon aus, dass es an erster Stelle gefunden wurde und einfach aufgerufen wird fsck(passen Sie das Folgende entsprechend an, wenn das nicht der Fall ist).

Da es sich fsckum den "Linux-Kern" handelt, können wir dessen Manpage für die Syntax zu Rate ziehen . Obwohl es einige Optionen gibt, die unter Android nicht funktionieren, sollten die grundlegendsten Optionen verwendet werden. Weitere Informationen finden Sie auf der verlinkten Manpage (oder führen Sie eine Linux-VM aus und verwenden Sie diese, man fsckfalls diese Seite nicht mehr angezeigt wird). Ich werde mich an die folgenden Grundlagen halten:

Zuerst müssen wir das Gerät finden, an das Ihre SD-Karte gebunden ist. Wenn es eingehängt ist, mounthilft uns der Befehl:

mount

Das war's im Grunde: Überprüfen Sie die Ausgabe und sehen Sie, wo sich Ihre SD-Karte befindet. Normalerweise wird dies verwendet vold, es ist jedoch je nach Gerät unterschiedlich. Die Ausgabe kann beispielsweise Folgendes enthalten: /dev/block/vold/179:17 on /mnt/storage/sdcardIn diesem Fall ist der erste Teil meines Zitats unser Gerät. Um das "Laufwerk" zu reparieren, müssen Sie es zuerst aushängen. Dies kann über das Einstellungsmenü oder, wie wir gerade im Terminal sind, durch Ausgabe erfolgen

umount /dev/block/vold/179:17

Jetzt können wir uns an die Reparatur machen. Die grundlegende Syntax lautet:

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

Also versuchen wir zuerst den einfachsten Ansatz und hoffen fsck, alles selbst herauszufinden:

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

Was im Grunde bedeutet: Zeige Fortschritt (-C) und fordere den Benutzer immer auf, etwaige Fehler zu reparieren (-r) /dev/block/vold/179:17. Wenn dies nicht funktioniert, informieren Sie sich in der verlinkten Manpage über weitere Optionen.


4
Sie können die cdSchritte auch selbst speichern, indem Sie ls /system/bin/fsc*und ls /system/xbin/fsc*aus Ihrem aktuellen Arbeitsverzeichnis verwenden. Sie können die beiden sogar zu einem Befehl kombinieren ls /system/xbin/fsc* /system/bin/fsc*.
Eldarerathis

1
Nein, ich verwechsle die Dinge nicht. Mir war nicht bewusst, dass es sich bei dieser Frage tatsächlich um eine SD-Karte handelt. Also ja, ich habe tatsächlich einige Dinge verwirrt. Genau genommen können Sie Ihre SD-Karte auch als ext formatieren, sodass dies möglicherweise für Personen gilt, die dies tun.
Lie Ryan

1
Punkt genommen. Obwohl der "durchschnittliche Benutzer" (oder der "im Zweifel") sich besser an FAT halten könnte, zumindest aus Gründen der Interoperabilität. Zumindest solange, bis ExtFS auf den meisten Betriebssystemen problemlos und standardmäßig ohne zusätzliche Treiber unterstützt wird ( vermutlich ist und bleibt Windows hier wie gewohnt eine Falle).
Izzy

1
Vielen Dank für diese Antwort, ich denke, es ist das, was ich brauche. Ich habe einen Fehler auf dem umount, musst du root sein?
Bio-Marmor

1
@OrganicMarble ja, natürlich - für alle oben genannten Befehle, oder Sie erhalten auf diese Weise keinen Zugriff auf Geräte (alles beginnend mit /dev).
Izzy

3

danke dafür, das spart mir den tag :)

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

Vielen Dank für das Posten dieser Antwort, es hat mir enorm geholfen. Aufgrund der akzeptierten Antwort wusste ich nicht, wie ich ein vfat-Dateisystem reparieren sollte. Upvoted.
Bio-Marmor

2

Wenn Sie wiederholt Fehler auf Ihrer SD-Karte haben, sollten Sie mit H2testw (Link nur in Deutsch, Software in Deutsch und Englisch. Ich glaube, dies ist die offizielle Heimat trotz gegenteiliger Erscheinungen) sicherstellen, dass sie wirklich die angegebene Kapazität hat . Fehlerhafte SD-Karten werden automatisch beschädigt.


Vielen Dank für die Zustimmung zu dieser längst vergessenen Antwort. Sollte wahrscheinlich ein Kommentar sein, aber ich hatte damals wahrscheinlich nicht den Ruf dafür. Ich lasse dies hier, bis der Kommentar positiv bewertet und sichtbar wird.
Code Bling

Ich habe Ihren Kommentar positiv bewertet.
Unvergesslich

@unforgettableid Danke, ich möchte nur sicherstellen, dass jeder über dieses Risiko Bescheid weiß. Es ist wirklich scheiße, Daten zu verlieren.
Code Bling

OK, jetzt, da der Kommentar hochgestuft wurde, können Sie diese Antwort löschen. :)
unvergesslich

@unforgettableid wird beide vorerst für die Sichtbarkeit verlassen
Code Bling


0

Wenn ich mich nicht irre, können Sie android zwingen, sowohl den internen als auch den externen Speicher beim Neustart zu überprüfen, indem Sie je nach ROM die folgenden Schritte ausführen.

Führen Sie die Terminal-App aus und geben Sie ein

su
touch /forcefsck

Starten Sie dann neu.

Wenn Ihr Telefon nicht gerootet ist, schlägt dies definitiv fehl.

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


Was meinst du mit "abhängig von deinem ROM"?
Unvergesslich

Dieser Trick funktioniert möglicherweise nicht auf allen Handys. Verschiedene Telefone können möglicherweise nichts tun. Außerdem muss Ihr Telefon gerootet sein.
Trekeyus

Wie kann ich nach dem Neustart feststellen, ob das Programm fscktatsächlich ausgeführt wurde oder nicht?
Unvergesslich

1
-1. Ich habe Ihren Beitrag abgelehnt. Hier ist der Grund: Ich habe mehr Zeit damit verbracht, mich mit der Sache zu befassen. Ihre vorgeschlagene Technik ist wahrscheinlich zu 100% falsch. Es mag den Leser täuschen zu glauben, dass es hilft, aber die Technik macht eigentlich nichts.
unvergesslich am

2
touch /forcefsckfunktioniert nur auf einem Gerät mit einem Init-Skript, das das Vorhandensein einer /forcefsckDatei überprüft . Ich kenne kein einziges Android-Gerät mit einem solchen Init-Skript. Obwohl Ihre Technik wahrscheinlich auf Debian-, Ubuntu- und Mint-Geräten funktioniert, bezweifle ich stark, dass sie auf jedem Android-Gerät funktioniert. Wenn jemand auch nur ein einziges Android-Gerät mit einem Init-Skript findet, nach dem gesucht wird /forcefsck, lass es mich wissen! Antworte einfach auf diesen Kommentar.
unvergesslich am
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.