51 votes

Vérifiez et corrigez les erreurs de la carte SD directement dans Android ?

Parfois ma carte SD se "corrompt" et cela entraîne de nombreuses erreurs de lecture/écriture. En général, en connectant la carte SD à Windows 7 et en sélectionnant l'option "Vérification des erreurs" (Clic droit sur le lecteur > Outils > Vérification des erreurs), on peut trouver la corruption et la réparer.

Comment puis-je vérifier les erreurs de lecteur sur les cartes SD et les réparer directement depuis l'Android ?

Je tiens également à mentionner que j'utilise un froyo rooté avec busybox installé.

2 votes

Si vous rencontrez régulièrement des erreurs sur votre carte SD, vous devriez vous assurer qu'elle possède réellement la capacité indiquée en utilisant H2testw (lien uniquement en allemand, logiciel disponible en allemand et en anglais. Je crois que c'est le site officiel malgré les apparences contraires). Les mauvaises cartes SD se corrompront automatiquement.

18voto

Milner Points 533

Vous pouvez résoudre ce problème avec l'aide de root et d'un émulateur de terminal (par exemple, Émulateur de Terminal Android (ou, alternativement, en utilisant adb shell). Le binaire pour effectuer la tâche s'appelle fsck, et est généralement situé dans /system/xbin ou /system/bin. Parfois, vous avez besoin d'une variante spéciale, qui pourrait s'appeler par exemple fsck.exfat ou similaire. Assurons-nous donc d'abord de trouver le bon binaire :

cd /system/xbin
ls fsc*

S'il n'est pas trouvé, répétez avec /system/bin. Je vais supposer ici qu'il a été trouvé en premier lieu, et est simplement appelé fsck (ajustez la suite en conséquence si ce n'est pas le cas).

Comme fsck provient du "noyau Linux", nous pouvons consulter sa page de manuel pour la syntaxe. Bien qu'il puisse y avoir certaines options qui ne fonctionnent pas sur Android, les plus basiques devraient fonctionner. Consultez la page de manuel liée pour plus de détails (ou exécutez une VM Linux et utilisez man fsck au cas où cette page disparaît) -- je vais rester sur les bases ici :

Tout d'abord, nous devons trouver le périphérique auquel votre carte SD est liée. Si elle est montée, la commande mount nous aidera :

mount

C'est tout, en gros : vérifiez la sortie et voyez où se situe votre carte SD. Habituellement, il s'agit de quelque chose utilisant vold, mais cela varie selon les appareils. La sortie peut inclure quelque chose comme /dev/block/vold/179:17 sur /mnt/storage/sdcard -- dans ce cas, la première partie de ma citation est notre périphérique. Pour réparer le "lecteur", vous devez d'abord le démonter. Cela peut être fait via le menu des paramètres, ou, comme nous sommes simplement dans le terminal, en lançant

umount /dev/block/vold/179:17

Ensuite, nous pouvons passer à la réparation. La syntaxe de base est :

fsck [options] [-t fstype]  [fsoptions]

Donc nous essayons d'abord l'approche la plus simple et espérons que fsck résoudra tout lui-même :

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

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

4 votes

Vous pouvez également vous épargner les étapes cd si vous le souhaitez en utilisant ls /system/bin/fsc* et ls /system/xbin/fsc* depuis le répertoire actuel. Vous pourriez même combiner les deux en une seule commande avec ls /system/xbin/fsc* /system/bin/fsc*.

0 votes

Sur certains systèmes, la commande peut également être nommée e2fsck, comme sur mon stock Australian Galaxy Nexus.

0 votes

@LieRyan Vous ne confondez pas les choses, n'est-ce pas ? e2fsck est le vérificateur de système de fichiers pour extFS. Donc, s'il a un nom différent, c'est plutôt fsck.fat ou fsck_msdos (ce dernier est un exemple concret provenant d'une ancienne ROM 2.2 de mon Moto).

5voto

Irfan Latif Points 16863

Alors que d'autres réponses sont correctes (du moins partiellement), juste pour ajouter quelques notes supplémentaires. Sur les versions récentes d'Android, vous n'avez pas besoin d'exécuter manuellement la vérification du système de fichiers car vold gère cela automatiquement. Voir Quand dois-je effectuer une vérification de la cohérence de ma carte MicroSD amovible ?

Si vous voulez le faire manuellement, vous avez besoin d'un appareil rooté car il n'est pas possible d'accéder aux périphériques de bloc sur les appareils non rootés. De plus, vous devez démonter le système de fichiers avant de vérifier les erreurs. Depuis Android 6, la carte SD externe est montée sur /mnt/media_rw/[UUID] puis émulée sur /mnt/runtime/[VIEW]/[UUID]. Une VIEW est ensuite liée à /storage/[UUID]. Voir les détails dans Comment enregistrer des fichiers sur une carte SD externe ?.

Après avoir entièrement démonté la carte SD, exécutez le binaire fsck.* respectif sur le périphérique de bloc. Habituellement, init énumère le périphérique de bloc SD comme /dev/block/mmcblk1p* (p* indique le numéro de partition, généralement c'est seulement 1) tandis que vold crée un autre nœud de périphérique dans /dev/block/vold/[MAJOR:MINOR]. Vous devez trouver le bon périphérique de bloc (vous pouvez également vérifier avec mount | grep /mnt/media_rw avant de démonter le système de fichiers).

Pour la famille de systèmes de fichiers FAT[N], vous pouvez utiliser fsck_msdos (ou fsck.fat), et fsck.exfat pour exFAT. Si ceux-ci ne sont pas inclus dans votre ROM (exFAT était de source fermée jusqu'à récemment, donc il pourrait y avoir des problèmes de licence), vous pouvez utiliser des binaires externes. Ou les créer à partir des sources (dosfstools ou exfat).

Pour exécuter la vérification du système de fichiers :

~# fsck.exfat /dev/block/mmcblk1p1

2voto

junior Points 41

Merci pour ça, ç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

1voto

UnKnown Points 359

J'ai trouvé une application appelée AParted sur le marché qui peut "réparer certaines cartes SD endommagées et scanner pour des blocs défectueux", etc.

0voto

Trekeyus Points 64

Si je ne me trompe pas, vous pouvez forcer Android à vérifier à la fois le stockage interne et externe au redémarrage en suivant les instructions suivantes, selon votre ROM.

Exécutez l'application terminal et tapez

su
touch /forcefsck

Ensuite, redémarrez.

Si votre téléphone n'est pas rooté, cela échouera certainement.

Source: Forums XDA - [Q]Comment fsck /data ou /system?

0 votes

Que voulez-vous dire par "en fonction de votre ROM" ?

1 votes

Cette astuce pourrait ne pas fonctionner sur tous les téléphones. Différents téléphones peuvent échouer à faire quoi que ce soit. De plus, votre téléphone doit être rooté.

0 votes

Une fois que j'ai redémarré, comment puis-je savoir si fsck a effectivement été exécuté ou non?

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X