Compré una tarjeta SD de 64 GB en eBay. Funciona bien cuando grabo una imagen ARM de Arch Linux y la uso para iniciar mi Raspberry Pi.
Sin embargo, cuando intento crear una única partición ext4 en ella para usar toda la capacidad de la tarjeta, se producen errores. mkfs.ext4
siempre termina felizmente; sin embargo, la partición no se puede mount
editar, siempre arroja un error y dmesg
muestra los mensajes del núcleo incluidos Cannot find journal
. Este ha demostrado ser el caso en al menos dos plataformas: Arch Linux ARM y Ubuntu 13.04.
Por otro lado, puedo crear y montar una partición FAT32 sin error (no se ha realizado una verificación de capacidad total).
Escuché que algunos tipos malos pueden cambiar la interfaz de la tarjeta SD para informar una capacidad incorrecta al sistema operativo (es decir, la tarjeta en realidad solo tiene 2 GB pero se reporta como 64 GB) para vender la tarjeta a un mejor precio.
Sé que badblocks
existen herramientas como para que compruebe que la tarjeta SD no tenga bloques defectuosos. ¿Puede badblocks
detectar problemas como este? Si no, ¿qué otras soluciones existen para que yo pruebe la tarjeta?
Idealmente me gustaría saber si fui engañado o no; Si el resultado muestra que acabo de recibir un artículo defectuoso, puedo volver solo al vendedor, en lugar de informar a eBay que alguien trató de engañarme.
ACTUALIZAR
operaciones y mensajes:
~$ sudo mkfs.ext4 /dev/sde1
mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
4096000 inodes, 16383996 blocks
819199 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
500 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
~$ dmesg | tail
...
[4199.749118]...
~$ sudo mount /dev/sde1 /mnt
mount: wrong fs type, bad option, bad superblock on /dev/sde1,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
~$ dmesg | tail
...
[ 4199.749118]...
[ 4460.857603] JBD2: no valid journal superblock found
[ 4460.857618] EXT4-fs (sde1): error loading journal
ACTUALIZAR
He corrido badblocks /dev/sde
pero no informa ningún error. Eso significa que las causas restantes son:
La SD del coche es bueno, pero por alguna razón
mke2fs
omount
o el núcleo tiene un error que causa el problema.Fui engañado de una manera que
badblocks
no puede detectar la derrota. Esto es plausible porque creo quebadblocks
solo estoy haciendo una prueba de lectura y escritura en el lugar. Sin embargo, el tramposo puede hacer que el acceso a las áreas salientes se vincule a algún bloque entrante. En este caso, una comprobación de lectura y escritura in situ no puede detectar el problema.
Si no hay una aplicación que pueda hacer la prueba adecuada, creo que puedo intentar escribir un programa C simple para probarlo.
dmesg
muestra los mensajes del kernel y estoy seguro de que aparece al mismo tiempo que los errores porque lo hice antes y después y los comparé. No lo he verificado syslog
porque creo dmesg
que mostrará los mensajes.