Я купил карту SD на 64 ГБ у eBay. Он отлично работает, когда я записываю на него образ ARM Arch Linux и использую его для загрузки моего Raspberry Pi.
Однако, когда я пытаюсь создать на нем один раздел ext4 для использования всей емкости карты, возникают ошибки. mkfs.ext4
всегда заканчивается счастливо; тем не менее, раздел не может быть mount
ed, всегда выдает ошибку, и dmesg
показывает, что сообщения ядра включают в себя « Cannot find journal
. Это подтвердилось как минимум на двух платформах: Arch Linux ARM и Ubuntu 13.04.
С другой стороны, я могу создать и смонтировать раздел FAT32 без ошибок (проверка полной емкости не была выполнена).
Я слышал, что некоторые плохие парни могут изменить интерфейс SD-карты, чтобы сообщить о неправильной емкости ОС (т. Е. Карта действительно всего 2 ГБ, но сообщает о себе как 64 ГБ), чтобы продать карту по более выгодной цене.
Я знаю, что такие инструменты, как 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
или kernel имеют ошибку, которая вызывает проблему.Меня обманули таким образом, что
badblocks
не могут обнаружить поражение. Это правдоподобно, потому что я думаю, чтоbadblocks
просто выполняет некоторый тест записи-чтения на месте. Однако мошенник может связать доступ к исходящим областям с некоторым входящим блоком. В этом случае проверка на запись-чтение на месте не может обнаружить проблему.
Если нет приложения, способного выполнить надлежащий тест, я думаю, что я могу попытаться написать простую C-программу для его тестирования.