J'ai acheté une carte SD de 64 Go sur eBay. Cela fonctionne bien lorsque je lui grave une image Arch Linux ARM et que je l'utilise pour démarrer mon Raspberry Pi.
Cependant, lorsque j'essaie de créer une seule partition ext4 dessus pour utiliser toute la capacité de la carte, des erreurs se produisent. mkfs.ext4
finit toujours avec bonheur; cependant, la partition ne peut pas être mount
éditée, générant toujours une erreur et dmesg
affichant les messages du noyau inclus Cannot find journal
. Cela s'est avéré être le cas sur au moins deux plates-formes: Arch Linux ARM et Ubuntu 13.04.
D'un autre côté, je peux créer et monter une partition FAT32 sans erreur (une vérification de la pleine capacité n'a pas été effectuée).
J'ai entendu dire que certains méchants peuvent changer l'interface de la carte SD pour signaler une mauvaise capacité au système d'exploitation (c'est-à-dire que la carte n'est vraiment que de 2 Go mais elle se présente comme 64 Go) afin de vendre la carte à un meilleur prix.
Je sais que des outils comme celui-ci badblocks
existent pour moi de vérifier la carte SD pour les blocs défectueux. Peut badblocks
détecter des problèmes comme celui-ci? Sinon, quelles sont les autres solutions pour tester la carte?
J'aimerais idéalement savoir si j'ai été trompé ou non; si le résultat montre que je viens de recevoir un mauvais article, je peux retourner au vendeur uniquement, plutôt signaler à eBay que quelqu'un a essayé de me tromper.
MISE À JOUR
opérations et messages:
~$ 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
MISE À JOUR
J'ai couru badblocks /dev/sde
mais il ne signale aucune erreur. Cela signifie que les causes restantes sont:
La voiture SD est bonne mais pour une raison
mke2fs
oumount
une autre, le noyau a un bogue qui cause le problème.J'ai été trompé d'une manière qui
badblocks
ne puisse pas détecter la défaite. C'est plausible parce que je pense quebadblocks
c'est juste faire un test d'écriture-lecture sur place. Cependant, le tricheur peut relier l'accès aux zones sortantes à un bloc entrant. Dans ce cas, une vérification en lecture-écriture sur place n'est pas en mesure de détecter le problème.
S'il n'y a pas d'application qui puisse faire le bon test, je pense que je peux essayer d'écrire un simple programme C pour le tester.
dmesg
montre les messages du noyau et je suis sûr qu'il apparaît en même temps que les erreurs car je l'ai fait avant et après et les ai comparés. Je n'ai pas vérifié syslog
parce que je crois dmesg
affichera les messages.