Vérifier et corriger les erreurs de carte SD dans Android lui-même?

42

Parfois, ma carte SD est "corrompue", ce qui entraîne de nombreuses erreurs de lecture / écriture. Généralement, la connexion de la carte SD à Windows 7 et la sélection de l' option "Vérification des erreurs" (clic droit sur le lecteur> Outils> Vérification des erreurs) permettent de détecter la corruption et de la corriger.

Existe-t-il un outil ou une application permettant de vérifier les cartes SD des erreurs de lecteur et de les réparer depuis Android ?

Je voudrais également mentionner que je suis sur froyo enraciné avec busybox installé.

Irfan
la source
Avez-vous essayé avec une application de terminal, faire suet exécuter le /system/bin/fsck.exfat?
Izzy
@Izzy me donneNo such file or directory
Irfan
Vérifiez différents endroits, c'est peut-être à la /system/xbinplace? Essayez d' cdentrer dans le répertoire et ls fsc*de vérifier ce qui est disponible. Doit être quelque part :)
Izzy
1
Exactement. Busybox essaie d'être aussi mince que possible. Essayez tante Google avec "man mount", ça fonctionne bien :) Et voyez ma réponse ci-dessous. Si quelque chose ne vous dit pas quoi que ce soit (dites-le moi ou discutez avec moi - même si je ne serai pas disponible pendant quelques heures, il y a encore d'autres membres connus pour vous aider :)
Izzy
2
Si vous rencontrez régulièrement des erreurs sur votre carte SD, assurez-vous qu’elle a vraiment la capacité indiquée en utilisant H2testw (lien uniquement en allemand, logiciel en allemand et anglais. Je crois que c’est la maison officielle malgré les apparences du contraire.) Les mauvaises cartes SD seront automatiquement corrompues.
Code de bling

Réponses:

17

Vous pouvez résoudre ce problème à l'aide de root et d'un émulateur de terminal (par exemple, Android Terminal Emulator (ou alternativement, en utilisant adb shell). Le fichier binaire pour effectuer le travail est appelé fscket se trouve généralement dans l'un /system/xbinou l' autre /system/bin. Parfois, vous avez besoin d'une variante spéciale. , qui pourrait par exemple être appelé fsck.exfatou similaire. Commençons par trouver le bon fichier binaire:

cd /system/xbin
ls fsc*

Si non trouvé, répéter avec /system/bin. Je suppose ici qu’il a été trouvé en premier lieu, et qu’il est simplement appelé fsck(ajustez ce qui suit si ce n’est pas le cas).

Comme cela fsckvient du "noyau Linux", nous pouvons consulter sa page de manuel pour la syntaxe. Bien que certaines options ne fonctionnent pas sur Android, les plus élémentaires devraient. Reportez-vous à la page de manuel liée pour plus de détails (ou exécutez une machine virtuelle Linux et utilisez-la man fsckau cas où cette page disparaîtrait) - Je vais m'en tenir aux bases ici:

Nous devons d’abord trouver le périphérique auquel votre carte SD est liée. Si c'est monté, la mountcommande nous aidera:

mount

Voilà, en gros: vérifiez la sortie et voyez où se trouve votre carte SD. Habituellement, c'est quelque chose qui utilise vold, mais c'est différent entre les appareils. La sortie peut inclure quelque chose comme /dev/block/vold/179:17 on /mnt/storage/sdcard- dans ce cas, la première partie de ma citation est notre appareil. Pour réparer le "disque", vous devez d'abord le démonter. Cela peut être fait via le menu des paramètres, ou, comme nous sommes juste dans le terminal, en émettant

umount /dev/block/vold/179:17

Maintenant, nous pouvons aller faire le travail de réparation. La syntaxe de base est la suivante:

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

Donc, nous essayons d’abord l’approche la plus simple et espérons fsckque tout se passe bien:

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

Ce qui signifie essentiellement: Afficher la progression (-C), et toujours demander à l'utilisateur de réparer (-r) les erreurs éventuelles /dev/block/vold/179:17. Si cela ne fonctionne pas, consultez la page de manuel liée pour plus d'options.

Izzy
la source
4
Vous pouvez également enregistrer vous-même les cdétapes si vous le souhaitez en utilisant ls /system/bin/fsc*et à ls /system/xbin/fsc*partir de votre répertoire de travail actuel. Vous pouvez même combiner les deux en une commande avec ls /system/xbin/fsc* /system/bin/fsc*.
Eldarerathis
1
Non, je ne confonds pas les choses, ce que je ne savais pas, c'est que cette question concerne en fait la carte SD. Alors oui, j'ai effectivement confondu certaines choses. Bien à proprement parler, vous pouvez également formater votre carte SD avec l'extension, ce qui pourrait s'appliquer aux personnes qui le font.
Lie Ryan
1
Point pris. Bien que "l'utilisateur moyen" (ou celui "en doute") puisse mieux s'en tenir à la FAT, du moins pour l'interopérabilité. Au moins jusqu'à ce que ExtFS soit pris en charge sur la majorité des systèmes d'exploitation facilement et par défaut sans pilotes supplémentaires requis (Windows est et restera un piège ici, comme d'habitude).
Izzy
1
Merci pour cette réponse, je pense que c'est ce dont j'ai besoin. J'ai une erreur sur le umount, faut-il être root?
Organic Marble
1
@OrganicMarble oui, bien sûr - pour toutes les commandes ci-dessus, ou vous n'avez pas accès aux périphériques (tout commence par /dev) de cette façon.
Izzy
3

merci pour cela, ça sauve ma journée :)

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
la source
Merci d'avoir posté cette réponse, cela m'a énormément aidé. De la réponse acceptée, je ne savais pas comment réparer un système de fichiers vfat. Upvote.
Organic Marble
2

Si vous rencontrez régulièrement des erreurs sur votre carte SD, assurez-vous qu’elle a vraiment la capacité indiquée en utilisant H2testw (lien uniquement en allemand, logiciel en allemand et anglais. Je crois que c’est la maison officielle malgré les apparences du contraire.) Les mauvaises cartes SD seront automatiquement corrompues.

Code Bling
la source
Merci pour le vote positif sur cette réponse depuis longtemps oubliée. Devrait probablement être un commentaire, mais je n’avais probablement pas la réputation de cela à l’époque. Je vais laisser ça pour le moment jusqu'à ce que le commentaire soit voté et visible.
Code Bling
J'ai voté votre commentaire.
Inoubliable
@unforgettableid Merci, je veux juste m'assurer que tout le monde est au courant de ce risque. C'est vraiment nul de perdre des données.
Code Bling
OK, alors maintenant que le commentaire a été voté, vous pouvez supprimer cette réponse. :)
inoubliable
@unforgettableid va laisser les deux pour le moment, pour la visibilité
Code Bling
0

Si je ne me trompe pas, vous pouvez forcer Android à effectuer fsck à la fois le stockage interne et externe au redémarrage en procédant comme suit en fonction de votre rom.

exécuter l'application de terminal et tapez

su
touch /forcefsck

Puis redémarrez.

Si votre téléphone n'est pas enraciné, cela échouera définitivement.

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

Trekeyus
la source
Qu'entendez-vous par "en fonction de votre ROM"?
Inoubliable
Cette astuce pourrait ne pas fonctionner sur tous les téléphones. différents téléphones peuvent ne rien faire. De plus, votre téléphone doit être enraciné.
Trekeyus
Une fois que j'ai redémarré, comment puis-je savoir s'il a fsckété exécuté ou non?
Inoubliable au
1
-1. J'ai voté contre votre post. Voici pourquoi: j'ai passé plus de temps à examiner la question. Votre technique suggérée est probablement 100% erronée. Cela peut tromper les lecteurs en leur faisant croire que cela aide, mais la technique ne fait rien.
inoubliable le
2
touch /forcefsckne fonctionnera que sur un périphérique avec un script init qui vérifie la présence d'un /forcefsckfichier. Je ne connais aucun appareil Android doté d'un tel script d'initialisation. Ainsi, bien que votre technique fonctionne probablement sur les périphériques Debian, Ubuntu et Mint, je doute fortement que cela fonctionnera sur n’importe quel périphérique Android. Si quelqu'un trouve même un seul appareil Android avec un script init qui vérifie /forcefsck, merci de me le faire savoir! Répondez simplement à ce commentaire.
inoubliable le