F3 aplicación para verificar memorias flash en linux

Memorias flash

Hoy me llegaron unas memorias SD que compre por ebay y me puse a buscar aplicación para verificar memorias flash en linux.  Quería estar seguro de poder llevarlas de viaje y no volver con una pila de basura digital.

No sabía que aplicación / utilidad existía para verificar que la memoria flash (memorias sd / xd / cf / pendrive) tenga la capacidad que dice tener y que la información no se corrompa.

Investigando un poco en la web encontré F3 (sitio de descarga), una aplicación en “C” que permite verificar la memoria con poco esfuerzo.

F3 esta compuesto por dos archivos binarios, f3write and f3read.  f3write llena el sistema de archivos con archivos de 1GB llamados NNNN.fff donde N es un número (/[0-9]/).  f3read valida estos archivos.  Si el contenido de todos los archivos NNNN.fff es válido, la memoria esta bien.  El último archivo puede ocupar menos de 1GB.

Procedimiento:

El primer paso a realizar es descargar las fuentes de la aplicación desde la página web de F3 (no esta compilado ni empaquetado para Ubuntu).

Suponiendo que el archivo de descarga desde un navegador a la carpeta “/tmp”

Creo el directorio donde vos a descomprimir los archivos fuentes (en el home del usuario se crea el directorio src/f3).

< mkdir -p ~/src/f3

Y se procede a descomprimir el zip descargado

< cd ~/src/f3
< unzip /tmp/f3v2_1.zip

A continuación se procede a compilar las fuentes (se debe tener instalado el paquete “build-essential”)

< make linux
> gcc -Wall -c utils.c
> gcc -Wall -c f3write.c
> gcc -Wall -c f3read.c
> gcc -o f3write utils.o f3write.o -lm
> gcc -o f3read utils.o f3read.o

En pocos segundos finalizará y se dispondrá en el directorio los archivos “fwrite” y “fread”.

Verificación de memorias flash

Para verificar la memoria flash se debe tener la misma conectada al equipo, montada (con el sistema de archivos accesible).

En el ejemplo se va a testear una memoria SD de 16GB montada en el directorio “/media/10DF-6679/”

El primer paso es ejecutar f3write para que cree los archivos binarios (debe adaptar esta línea para utilizar el punto de montaje de su dispositivo).

< ./f3write /media/10DF-6679/
> Free space: 14.82 GB
> Creating file 0001.fff ... OK! 
> Creating file 0002.fff ... OK! 
> Creating file 0003.fff ... OK! 
> Creating file 0004.fff ... OK! 
> Creating file 0005.fff ... OK! 
> Creating file 0006.fff ... OK! 
> Creating file 0007.fff ... OK! 
> Creating file 0008.fff ... OK! 
> Creating file 0009.fff ... OK! 
> Creating file 0010.fff ... OK! 
> Creating file 0011.fff ... OK! 
> Creating file 0012.fff ... OK! 
> Creating file 0013.fff ... OK! 
> Creating file 0014.fff ... OK! 
> Creating file 0015.fff ... OK! 
> Free space: 0.00 Byte
> Average writing speed: 18.06 MB/s

Finalizado el procedimiento de creación de los archivos se deben verificar los mismos.

./f3read /media/10DF-6679/
                          SECTORS ok/corrupted/changed/overwritten
> Validating file 0001.fff ... 2097152/       0/      0/          0
> Validating file 0002.fff ... 2097152/       0/      0/          0
> Validating file 0003.fff ... 2097152/       0/      0/          0
> Validating file 0004.fff ... 2097152/       0/      0/          0
> Validating file 0005.fff ... 2097152/       0/      0/          0
> Validating file 0006.fff ... 2097152/       0/      0/          0
> Validating file 0007.fff ... 2097152/       0/      0/          0
> Validating file 0008.fff ... 2097152/       0/      0/          0
> Validating file 0009.fff ... 2097152/       0/      0/          0
> Validating file 0010.fff ... 2097152/       0/      0/          0
> Validating file 0011.fff ... 2097152/       0/      0/          0
> Validating file 0012.fff ... 2097152/       0/      0/          0
> Validating file 0013.fff ... 2097152/       0/      0/          0
> Validating file 0014.fff ... 2097152/       0/      0/          0
> Validating file 0015.fff ... 1717568/       0/      0/          0
> Data OK: 14.82 GB (31077696 sectors)
> Data LOST: 0.00 Byte (0 sectors)
>    Corrupted: 0.00 Byte (0 sectors)
>    Slightly changed: 0.00 Byte (0 sectors)
>    Overwritten: 0.00 Byte (0 sectors)
> Average reading speed: 20.32 MB/s

En el último bloque se puede ver que no encontró errores.

Un pensamiento en “F3 aplicación para verificar memorias flash en linux

  1. Gracias

    Aquí se explica cómo se puede expulsar de manera segura una unidad de memoria flash USB (“pendrive”, “lápiz de memoria”, …) a partir de comandos en la consola o terminal.

    Esto debería funcionar en muchas (¿todas?) las distros de GNU/Linux. Está bien saberlo por si falla la manera gráfica, … En alguna distro puede no hacer falta anteponer sudo (p.e. Puppy, ya que por defecto sólo hay un usuario, que es root, superusuario).

    Primera forma, más rápida, en 2 pasos
    1) 4 opciones: sudo blkid , mount , sudo parted -l o sudo fdisk -l
    2) sudo eject unidad , p.e. sudo eject /dev/sdc

    Segunda manera, en 3 pasos
    1) 4 opciones: sudo blkid , mount , sudo parted -l o sudo fdisk -l
    2) 2 opciones: umount partición(es) (p.e. umount /dev/sdc1 , luego umount /dev/sdc2 , …) o punto(s) de montaje (p.e. umount /media/mint/datos_en_pendrive , luego umount /media/mint/linux_en_pendrive , …). O bien udisks –unmount partición(es) (p.e. udisks –unmount /dev/sdc1 , luego udisks –unmount /dev/sdc2 , …)
    3) udisks –detach unidad (p.e. udisks –detach /dev/sdc)

    Aclaraciones
    * Tras los comandos, ya hecha la expulsión o extracción informática, ya podemos hacer la física, de forma segura, es decir tirar del pendrive con la mano para que salga de su ranura.
    * Como se ve, el primer paso es compartido por los dos procedimientos. sudo blkid muestra el nombre de las particiones (pueden ser las de fábrica si no se han cambiado/personalizado posteriormente), mount dónde están montadas y sudo parted -l el modelo (y marca) del pendrive. Tanto estos tres comandos como sudo fdisk -l cumplen su función pues los cuatro informan de las unidades y particiones. Los 2 últimos comandos, además, muestran los tamaños correspondiente (fdisk da más datos pero los de parted son más habituales, sencillos, fáciles de entender).
    * Según dice el manual de eject si [las particiones de] el aparato está montado, lo desmonta antes de expulsarlo. Es así cómo en el primer procedimiento un sólo comando hace lo que en el segundo se hace con dos.
    * Nótese que en la segunda forma, antes del tercer paso sudo fdisk -l sigue mostrando la unidad y su(s) partición(es)), igual que antes de desmontar la(s) partición(es). Tras dicho tercer paso sudo fdisk -l ya no muestra la unidad de memoria flash USB ni su(s) partición(es). Es entonces cuándo podemos sacar el lápiz de memoria de su ranura con garantías de no estropear nuestro aparato, perdiendo nuestros datos, …
    * En la primera forma, en su segundo paso, en vez de unidad se puede poner partición o bien punto de montaje. Supongo que aunque haya más de una partición todas ellas se desmonten antes de expulsar el aparato. Yo por si acaso pondría unidad, que es más corto además.
    =============
    Fuente: http://www.lawebdelprogramador.com/foros/Linux/1460504-Comandos_expulsar_de_forma_segura_memoria_flash_USB_como_extraer_modo_seguro_pendrive_terminal.html

Deja un comentario