Detectando daños en la tarjeta SD


0

¿Hay alguna forma de detectar la corrupción de la tarjeta SD en tiempo de ejecución?

Tengo una situación en la que la actualización del firmware se ve afectada por un problema con la tarjeta SD, sin embargo, solo se conocerá después de que falle la actualización. Lo que estoy buscando son las pruebas / cualquier utilidad que pueda usarse para detectar la corrupción de la tarjeta SD sobre la marcha. Digamos, hago un chequeo todos los días para ver si la tarjeta SD está bien o si está dañada. Si está dañado, puedo detener la actualización y recomendar el reemplazo de la tarjeta SD o tomar alguna otra medida.

Cualquier aporte es muy apreciado. Lograr esto sin quitar físicamente la tarjeta SD será bueno.

Respuestas:


1

Si solo le interesa detectar la corrupción, puede usar una *sumutilidad, como sha256sum.

Desde el directorio para proteger, ejecute lo siguiente. Tenga en cuenta el uso de find ... -print0y xargs -0para acomodar rutas con espacios u otros caracteres especiales.

find . -type f -print0 \
    | xargs -0 sha256sum \
    > manifest.sum

Luego use lo siguiente para validar el contenido del archivo.

sha256sum -c manifest.sum

La salida mostrará una lista de archivos con OKo FAILED, y el valor de retorno será 0(cero) si todos los archivos salieron bien, o no cero si hubo errores.

Este proceso validará todos los archivos del directorio actual y los dejará manifest.sumatrás.

Idealmente, generaría manifest.sumen la fuente (por ejemplo: en el momento de la compilación) y lo distribuiría con los archivos, solo ejecutando la verificación ( sha256sum -c) en el dispositivo de destino.


Como ha mencionado que esto es para un proceso de actualización de firmware, le recomendaría que busque más que solo verificar los datos en busca de corrupción.

En muchos casos, es beneficioso asegurarse de que la actualización que se está aplicando es genuina, y ha sido proporcionada por la fuente prevista ... Si permite que se aplique alguna actualización a un sistema, la abre por accidente (y potencialmente dañinas) actualizaciones así como actualizaciones maliciosas.

Para solucionar este problema, debe considerar firmar criptográficamente la actualización.

  • Usted podría salirse con la firma sólo la manifest.sumproducida anteriormente (menos sobrecarga de procesamiento). Al firmar las sumas de verificación, puede verificar el contenido de cada archivo ... suponiendo que el resumen es seguro, por supuesto ... ( MD5 no sería una buena opción)
  • Sin embargo, podría ser mejor distribuir un archivo que esté firmado (y posiblemente encriptado) en su totalidad y verificado antes de que se extraiga.

Como la salida de las *sumutilidades es texto ASCII, puede usar gpg --clearsignpara firmar los datos:

find . -type f -print0 \
    | xargs -0 sha256sum \
    | gpg --clearsign --default-key 7826F053 \
    > manifest.asc

En el destino, puede verificar la firma:

gpg --verify manifest.asc

Entonces, si, y solo si , la firma es válida y proviene del origen esperado (deberá usarla --status-fdpara verificar esto), puede continuar para verificar el contenido del archivo:

gpg --decrypt manifest.asc \
    | sha256sum -c -

Tenga en cuenta que *sumdebe estar al " final " de la tubería para asegurarse de que vea el código de retorno ... alternativamente, puede usarset -o pipefail


Mencioné el uso --status-fdanterior ... se vuelve desordenado en el shell, por lo que probablemente desee escribir una aplicación para manejar esto de manera más sensata ... Algo como esto " funcionará " (es decir, probar un punto).

La huella de la clave utilizada para firmar el manifiesto es: A5C929D6A230C02067720F1DB2B38B43C2ABEB33.

gpg --status-fd 3 --verify manifest.asc 3>&1 1>/dev/null \
    | grep -Eq '^\[GNUPG:\] VALIDSIG A5C929D6A230C02067720F1DB2B38B43C2ABEB33 '

0
  • Calcule el MD5 de los archivos y guárdelo en la tarjeta:

    md5sum * >SDCardFiles.md5
    
  • Para verificar el uso md5umen modo "verificar" (volverá a calcular el MD5 de los archivos en la tarjeta y se comparará con el MD5 almacenado en el archivo).

    md5sum -c SDCardFiles.md5
    

Nota: debe estar en el mismo directorio cuando ejecuta la inicial md5sumy md5sum -cdesde que la ruta a los archivos se mantiene en el .md5archivo.


0

Parte de la detección de la corrupción depende (un poco) de cómo se formateó originalmente la tarjeta SD, pero puede intentar ejecutar fdisk o badblock. Consulte Verificar si la micro SD está dañada :

Debe usar el comando badblocks para este propósito, usando las opciones -n (para especificar que la verificación se realiza en modo lectura-escritura, no destructivo) y -v (modo detallado). Asegúrese de que las particiones que desea verificar NO estén montadas

en el símbolo del sistema, escriba: mount y busque la entrada del dispositivo que corresponde a su tarjeta SD. Si aparece en la lista, primero debe desmontar los sistemas de archivos:

$ sudo umount /dev/sde1

luego escribe

$ sudo badblocks -n -v /dev/sde

o

$ sudo fsck /dev/sde1

Tenga en cuenta que los bloques defectuosos pueden llevar mucho tiempo. Intentaría fsck primero


1
Incluya pasos importantes de su enlace en su respuesta.
confeti

¡Bienvenido a Super User! Cite las partes esenciales de la respuesta de los enlaces de referencia, ya que la respuesta puede invalidarse si las páginas enlazadas cambian.
DavidPostill

Con la mayoría de los sistemas de archivos, esto perderá cualquier / toda corrupción que golpee el contenido del archivo pero no los metadatos del sistema de archivos.
Attie

@Attie: ese es un buen punto, usar una suma de verificación como sugirió xenoid manejaría la corrupción dentro del contenido del archivo.
B.McCready

Usar fsck y badblocks parece funcionar bien. No se pudo detectar ningún error y la operación se completó. Incluso después de que estos mostraron todo normal, tuve un problema diferente. Supongamos que creo un nuevo archivo dentro de la tarjeta SD y luego lo desmonto y lo vuelvo a montar, ¡ese nuevo archivo creado no existe después del montaje! Del mismo modo, eliminé un archivo existente de la tarjeta SD y lo desmonté y volví a montar. ¡El archivo eliminado apareció nuevamente después del montaje! ¿Cómo puede pasar esto? ¿Es esto también una corrupción de la tarjeta SD? ¿Cómo detectar esta condición de antemano?
Ravi
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.