¿Verifica y corrige los errores de la tarjeta SD dentro de Android?

42

A veces mi tarjeta SD se "corrompe" y esto lleva a muchos errores de lectura / escritura. Por lo general, al conectar la tarjeta SD a Windows 7 y seleccionar la opción "Verificación de errores" (haga clic con el botón derecho en la unidad> Herramientas> Verificación de errores) se encuentra la corrupción y se corrige.

¿Existe alguna herramienta o aplicación para verificar las tarjetas SD en busca de errores de unidad y corregirlas desde el propio Android ?

También me gustaría mencionar que estoy en froyo rooteado con busybox instalado.

Irfan
fuente
¿Has probado con una aplicación de terminal, haciendo una suy ejecutando la /system/bin/fsck.exfat?
Izzy
@Izzy me daNo such file or directory
Irfan
Verifique diferentes ubicaciones, ¿tal vez está en su /system/xbinlugar? Intenta cdingresar al directorio y ls fsc*ver qué hay disponible. Debe estar en algún lugar :)
Izzy
1
Exactamente. Busybox intenta ser lo más delgado posible. Prueba tía Google con "montaje de hombre", funciona bien :) Y mira mi respuesta a continuación. Si algo no está claro, comente allí (o míreme en el chat, aunque no estaré disponible allí durante las próximas horas, todavía hay otros miembros conocedores para ayudarlo :)
Izzy
2
Si repetidamente tiene errores en su tarjeta SD, debe asegurarse de que realmente tenga la capacidad indicada usando H2testw (enlace solo en alemán, software en alemán e inglés. Creo que este es el hogar oficial a pesar de las apariencias en contrario). Las tarjetas SD defectuosas se corromperán automáticamente.
Código Bling

Respuestas:

17

Puede solucionar esto con la ayuda de root y un emulador de terminal (por ejemplo, Android Terminal Emulator (o, alternativamente, usando adb shell). El binario para hacer el trabajo se llama fsck, y generalmente se encuentra en /system/xbino /system/bin. A veces necesita una variante especial del mismo , que podría llamarse, por ejemplo, fsck.exfato similar. Así que primero asegurémonos de encontrar el binario correcto:

cd /system/xbin
ls fsc*

Si no se encuentra, repita con /system/bin. Asumiré aquí que se encontró en primer lugar, y simplemente se llama fsck(ajuste lo siguiente correspondientemente si ese no es el caso).

Como fsckviene del "núcleo de Linux", podemos consultar su página de manual para la sintaxis. Aunque puede haber algunas opciones que no funcionan en Android, las más básicas deberían hacerlo. Consulte la página de manual vinculada para obtener detalles (o ejecute una máquina virtual Linux y úsela man fscken caso de que esa página desaparezca). Aquí me limitaré a lo básico:

Primero necesitamos encontrar el dispositivo al que está vinculada su tarjeta SD. Si está montado, el mountcomando nos ayudará:

mount

Eso es todo, básicamente: verifique la salida y vea dónde se encuentra su tarjeta SD. Por lo general, esto es algo que usa vold, pero es diferente entre dispositivos. La salida puede incluir algo como /dev/block/vold/179:17 on /mnt/storage/sdcard: en ese caso, la primera parte de mi presupuesto es nuestro dispositivo. Para reparar la "unidad", primero debe desmontarla. Esto se puede hacer a través del menú de configuración o, como estamos en la terminal, emitiendo

umount /dev/block/vold/179:17

Ahora podemos ir al trabajo de reparación. La sintaxis básica es:

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

Así que primero intentamos el enfoque más simple y esperamos fsckdescubrir todo por sí mismo:

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

Lo que básicamente significa: Mostrar progreso (-C) y siempre pedirle al usuario que repare (-r) cualquier error /dev/block/vold/179:17. Si esto no funciona, consulte la página de manual vinculada para obtener más opciones.

Izzy
fuente
44
También puede guardar los cdpasos si lo desea utilizando ls /system/bin/fsc*y ls /system/xbin/fsc*desde el directorio de trabajo actual. Incluso podría combinar los dos en un comando con ls /system/xbin/fsc* /system/bin/fsc*.
eldarerathis
1
No, no confundo las cosas, de lo que no estaba al tanto es que esta pregunta es sobre la tarjeta SD. Entonces sí, realmente confundí algunas cosas. Hablando estrictamente, también puede formatear su tarjeta SD como ext, por lo que podría aplicarse a las personas que lo hacen.
Lie Ryan
1
Punto a favor. Aunque el "usuario promedio" (o el "en duda") podría apegarse mejor a FAT, al menos para la interoperabilidad. Al menos hasta que ExtFS sea compatible con la mayoría de los sistemas operativos fácilmente y de forma predeterminada sin necesidad de controladores adicionales (supongo que Windows es y seguirá siendo un obstáculo aquí, como es habitual).
Izzy
1
Gracias por esta respuesta, creo que es lo que necesito. Tengo un error en el umount, ¿tienes que ser root?
Mármol orgánico
1
@OrganicMarble sí, por supuesto, para todos los comandos anteriores, o no tienes acceso a los dispositivos (todo comienza con /dev) de esa manera.
Izzy
3

gracias por esto, me salva el día :)

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
júnior
fuente
Gracias por publicar esta respuesta, me ayudó enormemente. Por la respuesta aceptada, no sabía cómo arreglar un sistema de archivos vfat. Votado
Mármol orgánico
2

Si repetidamente tiene errores en su tarjeta SD, debe asegurarse de que realmente tenga la capacidad indicada usando H2testw (enlace solo en alemán, software en alemán e inglés. Creo que este es el hogar oficial a pesar de las apariencias en contrario). Las tarjetas SD defectuosas se corromperán automáticamente.

Código Bling
fuente
Gracias por el voto a favor de esta respuesta olvidada hace mucho tiempo. Probablemente debería ser un comentario, pero probablemente no tenía la reputación de eso en ese momento. Dejaré esto aquí por ahora hasta que el comentario sea votado y sea visible.
Código Bling
He votado tu comentario.
inolvidableid
@unforgettableid Gracias, solo quiero asegurarme de que todos sepan sobre este riesgo. Realmente apesta perder datos.
Código Bling
OK, ahora que el comentario ha sido votado, puedes eliminar esta respuesta. :)
inolvidableid
@unforgettableid dejará ambos por ahora, para visibilidad
Code Bling
0

Si no me equivoco, puede forzar a Android a cargar el almacenamiento interno y externo al reiniciar haciendo lo siguiente dependiendo de su rom.

ejecuta la aplicación de terminal y escribe

su
touch /forcefsck

Luego reiniciar.

Si su teléfono no está rooteado, esto definitivamente fallará.

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

Trekeyus
fuente
¿Qué quieres decir con "dependiendo de tu ROM"?
inolvidableid
Ese truco podría no funcionar en todos los teléfonos. diferentes teléfonos pueden no hacer nada. Además, su teléfono debe estar rooteado.
Trekeyus
Una vez que haya reiniciado, ¿cómo puedo saber si fsckrealmente se ejecutó o no?
unforgettableid
1
-1. He rechazado tu publicación. He aquí por qué: he pasado más tiempo investigando el asunto. Su técnica sugerida es probablemente 100% errónea. Puede engañar a los lectores para que piensen que ayuda, pero la técnica en realidad no hace nada.
inolvidableid
2
touch /forcefscksolo funcionará en un dispositivo con un script de inicio que verifique la presencia de un /forcefsckarchivo. No conozco un solo dispositivo Android que tenga una secuencia de comandos de inicio. Entonces, aunque su técnica probablemente funcione en dispositivos Debian, Ubuntu y Mint, dudo mucho que funcione en cualquier dispositivo Android. Si alguien encuentra incluso un solo dispositivo Android con un script de inicio que comprueba /forcefsck, ¡hágamelo saber! Simplemente responde a este comentario.
inolvidableid