Ho acquistato una scheda SD da 64 GB da eBay. Funziona bene quando masterizzo un'immagine ARM di Arch Linux e la utilizzo per avviare il mio Raspberry Pi.
Tuttavia, quando provo a creare una singola partizione ext4 su di essa per utilizzare tutta la capacità della scheda, si verificano errori. mkfs.ext4
finisce sempre felicemente; tuttavia, la partizione non può essere modificata mount
, generando sempre un errore e dmesg
mostrando che include i messaggi del kernel Cannot find journal
. Questo ha dimostrato di essere il caso su almeno due piattaforme: Arch Linux ARM e Ubuntu 13.04.
D'altra parte, posso creare e montare una partizione FAT32 senza errori (non è stato eseguito un controllo della capacità totale).
Ho sentito che alcuni cattivi possono cambiare l'interfaccia della scheda SD per segnalare una capacità errata al sistema operativo (cioè la scheda è in realtà solo 2 GB ma si riferisce come 64 GB) al fine di vendere la scheda a un prezzo migliore.
So che badblocks
esistono strumenti come me per controllare la scheda SD per blocchi danneggiati. Riesci a badblocks
rilevare problemi come questo? In caso contrario, quali altre soluzioni esistono per provare la scheda?
Preferirei sapere se sono stato tradito o no; se il risultato mostra che ho appena ricevuto un articolo difettoso, posso tornare solo al venditore, piuttosto riferire a eBay che qualcuno ha cercato di imbrogliarmi.
AGGIORNARE
operazioni e messaggi:
~$ 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
AGGIORNARE
Ho eseguito badblocks /dev/sde
ma non riporta alcun errore. Ciò significa che le cause rimanenti sono:
La macchina SD è buono, ma per qualche motivo
mke2fs
omount
o il kernel hanno un bug che causa il problema.Sono stato ingannato in modo da
badblocks
non poter rilevare la sconfitta. Questo è plausibile perché penso chebadblocks
stia solo facendo qualche test di lettura-scrittura sul posto. Tuttavia, il cheater può fare in modo che l'accesso alle aree in uscita sia ricollegato ad alcuni blocchi in entrata. In questo caso, un controllo di scrittura-lettura sul posto non è in grado di rilevare il problema.
Se non esiste un'applicazione in grado di eseguire il test corretto, penso di poter provare a scrivere un semplice programma C per testarlo.
dmesg
mostra i messaggi del kernel e sono sicuro che appare contemporaneamente agli errori perché l'ho fatto prima e dopo e li ho confrontati. Non ho controllato syslog
perché credo dmesg
mostrerà i messaggi.