17
5
I purchased a 64 GB SD card from eBay. It works fine when I burn an Arch Linux ARM image to it and use it to boot up my Raspberry Pi.
However, when I try to create a single ext4 partition on it to use all capacity of the card, errors occur. mkfs.ext4
always finishes happily; however, the partition cannot be mount
ed, always throwing an error and dmesg
shows kernel messages includes Cannot find journal
. This has proved to be the case on at least two platforms: Arch Linux ARM and Ubuntu 13.04.
On the other hand, I can create and mount a FAT32 partition without error (a full capacity check has not been done).
I heard that some bad guys can change the SD card interface to report a wrong capacity to the OS (i.e. the card is really only 2 GB but it reports itself as a 64 GB) in order to sell the card at a better price.
I know that tools like badblocks
exist for me to check the SD card for bad blocks. Can badblocks
detect problems like this? If not, what other solutions exist for me to test the card?
I'd ideally like to know whether I was cheated or not; if the result shows I just received a bad item, I can return to the seller only, rather report to eBay that somebody tried to cheat me.
UPDATE
operations and 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
UPDATE
I have run badblocks /dev/sde
but it reports no error. That means the remain causes are:
The SD car is good but for some reason
mke2fs
ormount
or the kernel have a bug that causes the problem.I was cheated in a way that
badblocks
that cannot detect the defeat. This is plausible because I thinkbadblocks
is just doing some in-place write-read test. However, the cheater can make the access to outbound areas link back to some inbound block. In this case a in-place write-read check is not able to detect the problem.
If there is no application can do the proper test, I think I can try to write a simple C program to test it.
Have you tried it in a SDXC USB card reader? – Ignacio Vazquez-Abrams – 2013-05-22T04:14:00.563
Also, do any messages appear in the system log at the same time as the errors? – Ignacio Vazquez-Abrams – 2013-05-22T04:14:49.177
I tried both with the native Raspberry Pi card reader, and an external card reader for my Ubuntu desktop as well. I have said that
dmesg
shows kernel messages and I am sure it is appear at the same time as the errors because I did that before and after and compared them. I have not checksyslog
because I believedmesg
will show the messages. – Earth Engine – 2013-05-22T04:21:10.613Does it show any other messages? – Ignacio Vazquez-Abrams – 2013-05-22T04:22:42.333
The external card reader I used is working for my other cards, includes SDXC cards. However that problematic one has one difference: it is a micro SD card with a SD adapter. – Earth Engine – 2013-05-22T04:24:00.127
@IgnacioVazquez-Abrams I have updated the question. I am currently running
sudo badblocks /dev/sde
and waiting for a result. – Earth Engine – 2013-05-22T10:02:07.337Have you tried things like
mount.ext4 /dev/sde1 /mnt
ormount –f ext4 /dev/sde1 /mnt
? Does/etc/fstab
have an entry for/dev/sde1
? – Scott – 2013-05-22T22:48:57.943I have not tried that because according to the kernel message I believe the file system type has been recognized as EXT4-fs correctly. Also I do not have an entry in
etc/fstab
because I don't thing I have to as long as I do have an explicit mount point in command line. – Earth Engine – 2013-05-22T22:56:51.027