Comprei um cartão SD de 64 GB no eBay. Funciona bem quando eu gravo uma imagem ARM do Arch Linux e a uso para inicializar meu Raspberry Pi.
No entanto, quando tento criar uma única partição ext4 para usar toda a capacidade do cartão, ocorrem erros. mkfs.ext4
sempre termina feliz; no entanto, a partição não pode ser mount
editada, sempre gerando um erro e dmesg
mostra inclusões nas mensagens do kernel Cannot find journal
. Este provou ser o caso em pelo menos duas plataformas: Arch Linux ARM e Ubuntu 13.04.
Por outro lado, posso criar e montar uma partição FAT32 sem erros (uma verificação de capacidade total não foi feita).
Ouvi dizer que alguns bandidos podem mudar a interface do cartão SD para relatar uma capacidade incorreta ao sistema operacional (ou seja, o cartão tem realmente apenas 2 GB, mas se informa como 64 GB) para vender o cartão a um preço melhor.
Eu sei que badblocks
existem ferramentas como essa para eu verificar o cartão SD quanto a blocos defeituosos. Pode badblocks
detectar problemas como este? Caso contrário, que outras soluções existem para eu testar o cartão?
Idealmente, gostaria de saber se fui enganado ou não; se o resultado mostrar que acabei de receber um item com defeito, posso retornar apenas ao vendedor, em vez disso, informar ao eBay que alguém tentou me enganar.
ATUALIZAR
operações e mensagens:
~$ 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
ATUALIZAR
Eu executei, badblocks /dev/sde
mas ele não relata erro. Isso significa que as causas restantes são:
O carro SD é bom, mas por algum motivo
mke2fs
oumount
ou o kernel tem um bug que causa o problema.Fui enganado de uma maneira que
badblocks
não pode detectar a derrota. Isso é plausível, porque eu acho quebadblocks
está apenas fazendo algum teste de gravação / leitura no local. No entanto, o trapaceiro pode fazer o acesso às áreas de saída vincular de volta a algum bloco de entrada. Nesse caso, uma verificação de gravação / leitura no local não é capaz de detectar o problema.
Se não houver um aplicativo que possa fazer o teste adequado, acho que posso tentar escrever um programa C simples para testá-lo.
dmesg
mostra as mensagens do kernel e tenho certeza de que elas aparecem ao mesmo tempo que os erros, porque eu fiz isso antes e depois e as comparei. Não verifiquei syslog
porque acredito dmesg
que mostrará as mensagens.