我从eBay购买了64 GB SD卡。当我将Arch Linux ARM映像刻录到它并使用它启动我的Raspberry Pi时,它工作正常。
但是,当我尝试在其上创建单个ext4分区以使用卡的所有容量时,会发生错误。mkfs.ext4
总是快乐地完成;但是,该分区无法mount
编辑,总是引发错误并dmesg
显示内核消息包括Cannot find journal
。事实证明,至少在两个平台上是这种情况:Arch Linux ARM和Ubuntu 13.04。
另一方面,我可以创建并挂载FAT32分区而不会出现错误(尚未完成全容量检查)。
我听说有些坏家伙可以更改SD卡接口以向操作系统报告错误的容量(即,卡实际上只有2 GB,但报告为64 GB),以便以更好的价格出售卡。
我知道我可以使用类似的工具badblocks
来检查SD卡中是否有坏块。可以badblocks
检测到这样的问题吗?如果没有,我还有什么其他解决方案可以测试卡?
理想情况下,我想知道我是否受到欺骗;如果结果显示我刚收到坏货,我只能退回给卖家,而是向eBay报告有人试图欺骗我。
更新
操作和消息:
~$ 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
更新
我已经跑了,badblocks /dev/sde
但是没有报错。这意味着剩下的原因是:
SD车很好,但是由于某种原因
mke2fs
或mount
内核有导致问题的错误。我被欺骗了
badblocks
,无法察觉失败。这是合理的,因为我认为badblocks
这只是在进行一些原位读写测试。但是,作弊者可以使对出站区域的访问链接回到某些入站块。在这种情况下,就地写读检查无法检测到该问题。
如果没有应用程序可以进行适当的测试,我想我可以尝试编写一个简单的C程序来对其进行测试。
dmesg
显示了内核消息,并且我确信它与错误同时出现,因为我之前和之后都进行了比较。我没有检查,syslog
因为我相信dmesg
会显示消息。