Manchmal wird meine SD-Karte "beschädigt", was zu vielen Lese-/Schreibfehlern führt. Normalerweise wird die Beschädigung gefunden und behoben, wenn Sie die SD-Karte an Windows 7 anschließen und die Option „Fehlerprüfung“ (Rechtsklick auf das Laufwerk > Extras > Fehlerprüfung) auswählen.
Wie überprüfe ich SD-Karten auf Laufwerksfehler und behebe diese vom Android selbst aus ?
Ich möchte auch erwähnen, dass ich auf gerootetem froyo bin und busybox installiert habe.
Sie können dies mit Hilfe von root und einem Terminal-Emulator (z. B. Android Terminal Emulator (oder alternativ mit adb shell
)) beheben. Die Binärdatei, die den Job erledigt, heißt fsck
und befindet sich normalerweise entweder in /system/xbin
oder /system/bin
. Manchmal benötigen Sie eine spezielle Variante davon , die zB heißen könnte fsck.exfat
o.ä. Stellen wir also zunächst sicher, dass wir die richtige Binärdatei finden:
cd /system/xbin
ls fsc*
Wenn nicht gefunden, wiederholen Sie mit /system/bin
. Ich gehe davon aus, dass es hier überhaupt erst gefunden wurde und einfach aufgerufen wird fsck
(falls das nicht der Fall ist, folgendes entsprechend anpassen).
Wie fsck
aus dem "Linux-Kern" hervorgeht, können wir die Manpage für die Syntax konsultieren. Obwohl es einige Optionen geben könnte, die auf Android nicht funktionieren, sollten die einfachsten sein. Einzelheiten finden Sie auf der verlinkten Manpage (oder führen Sie eine Linux-VM aus und verwenden Sie man fsck
sie, falls diese Seite verschwindet) – ich werde mich hier an die Grundlagen halten:
Zuerst müssen wir das Gerät finden, an das Ihre SD-Karte gebunden ist. Wenn es gemountet ist, mount
hilft uns der Befehl:
mount
Das ist es im Grunde: Überprüfen Sie die Ausgabe und sehen Sie, wo Ihre SD-Karte sitzt. Normalerweise ist dies etwas, das verwendet wird vold
, aber es ist zwischen den Geräten unterschiedlich. Die Ausgabe kann so etwas beinhalten wie /dev/block/vold/179:17 on /mnt/storage/sdcard
: In 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, da wir gerade im Terminal sind, durch Ausgabe erfolgen
umount /dev/block/vold/179:17
Jetzt können wir uns an die Reparatur machen. Grundsyntax ist:
fsck [options] [-t fstype] <filesystem> [fsoptions]
Also probieren wir erstmal den einfachsten Ansatz und hoffen fsck
, dass sich alles selbst herausfindet:
fsck -C -r /dev/block/vold/179:17
Was im Grunde bedeutet: Fortschritt anzeigen (-C) und den Benutzer immer bitten, Fehler zu beheben (-r) auf /dev/block/vold/179:17
. Wenn dies nicht funktioniert, finden Sie weitere Optionen auf der verlinkten Manpage.
cd
, wenn Sie möchten, indem Sie ls /system/bin/fsc*
und ls /system/xbin/fsc*
aus Ihrem aktuellen Arbeitsverzeichnis verwenden. Sie könnten die beiden sogar mit in einem Befehl kombinieren ls /system/xbin/fsc* /system/bin/fsc*
.e2fsck
ist der Dateisystemprüfer für extFS. Wenn es also einen anderen Namen hat, ist es eher fsck.fat
oder fsck_msdos
(letzteres ein reales Beispiel aus einem alten 2.2-ROM von meinem Moto).unknown option -- C
versucht, es mit nur auszuführen fsck.exfat /dev/block/vold/179:9
. Lief wie am Schnürchen!umount
, müssen Sie root sein?/dev
).adb shell su
). Diese Antwort und die über fsck_msdos haben mir geholfen, mein Tablet zu reparieren.Während andere Antworten (zumindest teilweise) richtig sind, nur um einige zusätzliche Anmerkungen hinzuzufügen. Bei neueren Android-Versionen müssen Sie die Dateisystemprüfung nicht manuell ausführen, da vold
dies automatisch erfolgt. Siehe Wann sollte ich eine Konsistenzprüfung auf meiner austauschbaren MicroSD-Karte durchführen?
Wenn Sie dies manuell tun möchten, benötigen Sie ein gerootetes Gerät, da es nicht möglich ist, auf Blockgeräte auf nicht gerooteten Geräten zuzugreifen. Außerdem müssen Sie das Dateisystem aushängen, bevor Sie nach Fehlern suchen. Seit Android 6 wird eine externe SD-Karte auf gemountet /mnt/media_rw/[UUID]
und dann auf emuliert /mnt/runtime/[VIEW]/[UUID]
. Eine VIEW wird dann per Bind-Mount an /storage/[UUID]
. Einzelheiten finden Sie unter Wie speichert man Dateien auf einer externen SD-Karte? .
Führen Sie nach dem vollständigen Deinstallieren der SD-Karte die entsprechende fsck.*
Binärdatei auf dem Blockgerät aus. Führt normalerweise das init
SD-Kartenblockgerät als auf /dev/block/mmcblk1p*
( p*
bezeichnet die Partitionsnummer, normalerweise ist es nur 1
), während vold
ein weiterer Geräteknoten in erstellt wird /dev/block/vold/[MAJOR:MINOR]
. Sie müssen das richtige Blockgerät finden (können Sie auch überprüfen, mount | grep /mnt/media_rw
bevor Sie das Dateisystem aushängen).
Für Dateisysteme der FAT[N]-Familie können Sie fsck_msdos
(oder fsck.fat
) und fsck.exfat
für exFAT verwenden. Wenn diese nicht mit Ihrem ROM erstellt wurden (exFAT war bis vor kurzem Closed Source, daher könnten Lizenzprobleme auftreten), können Sie externe Binärdateien verwenden. Oder bauen Sie aus ( dosfstools oder exfat ) Quellcode.
Dateisystemprüfung ausführen:
~# fsck.exfat /dev/block/mmcblk1p1
Danke dafür, es rettet meinen 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
Ich habe eine App namens AParted auf dem Markt gefunden, die "einige beschädigte SD-Karten reparieren und nach fehlerhaften Blöcken suchen" usw. kann.
Wenn ich mich nicht irre, können Sie Android zwingen, beim Neustart sowohl den internen als auch den externen Speicher zu durchsuchen, indem Sie je nach ROM Folgendes tun.
Führen Sie die Terminal-App aus und geben Sie ein
su
touch /forcefsck
Dann neu starten.
Wenn Ihr Telefon nicht gerootet ist, wird dies definitiv fehlschlagen.
fsck
tatsächlich gelaufen ist oder nicht?touch /forcefsck
funktioniert nur auf einem Gerät mit einem Init-Skript, das das Vorhandensein einer /forcefsck
Datei prüft. Ich kenne kein einziges Android-Gerät, das ein solches Init-Skript hat. Obwohl Ihre Technik wahrscheinlich auf Debian-, Ubuntu- und Mint-Geräten funktionieren wird, 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, das auf prüft /forcefsck
, lassen Sie es mich bitte wissen! Antworten Sie einfach auf diesen Kommentar.
Codierung