Kupiłem kartę SD 64 GB w serwisie eBay. Działa dobrze, gdy wypalę na nim obraz Arch Linux ARM i użyję go do uruchomienia mojego Raspberry Pi.
Jednak gdy próbuję utworzyć na nim pojedynczą partycję ext4, aby wykorzystać całą pojemność karty, występują błędy. mkfs.ext4
zawsze kończy się szczęśliwie; jednak partycja nie może być mount
edytowana, zawsze zgłasza błąd i dmesg
pokazuje komunikaty jądra Cannot find journal
. Okazało się, że tak jest na co najmniej dwóch platformach: Arch Linux ARM i Ubuntu 13.04.
Z drugiej strony mogę utworzyć i zamontować partycję FAT32 bez błędów (nie przeprowadzono pełnej kontroli pojemności).
Słyszałem, że niektórzy złoczyńcy mogą zmienić interfejs karty SD, aby zgłosić nieprawidłową pojemność do systemu operacyjnego (tj. Karta ma naprawdę tylko 2 GB, ale zgłasza się jako 64 GB), aby sprzedać kartę w lepszej cenie.
Wiem, że badblocks
istnieją takie narzędzia , aby sprawdzić kartę SD pod kątem uszkodzonych bloków. Czy można badblocks
wykryć takie problemy? Jeśli nie, jakie inne rozwiązania istnieją dla mnie, aby przetestować kartę?
Idealnie chciałbym wiedzieć, czy zostałem oszukany, czy nie; jeśli wynik pokazuje, że właśnie otrzymałem zły przedmiot, mogę wrócić tylko do sprzedawcy, raczej zgłosić na eBayu, że ktoś próbował mnie oszukać.
AKTUALIZACJA
operacje i komunikaty:
~$ 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
AKTUALIZACJA
Uruchomiłem, badblocks /dev/sde
ale nie zgłasza żadnego błędu. Oznacza to, że pozostałe przyczyny to:
Samochód SD jest dobry, ale z jakiegoś powodu
mke2fs
lubmount
jądro ma błąd, który powoduje problem.Zostałem oszukany w sposób,
badblocks
który nie może wykryć porażki. Jest to prawdopodobne, ponieważ myślę, żebadblocks
po prostu wykonuję jakiś test zapisu i odczytu w miejscu. Jednak oszust może sprawić, że dostęp do obszarów wychodzących będzie łączył się z pewnym blokiem wejściowym. W takim przypadku kontrola zapisu i odczytu w miejscu nie jest w stanie wykryć problemu.
Jeśli żadna aplikacja nie może wykonać właściwego testu, myślę, że mogę spróbować napisać prosty program w C, aby go przetestować.
dmesg
pokazuje komunikaty jądra i jestem pewien, że pojawia się w tym samym czasie co błędy, ponieważ zrobiłem to przed i po i porównałem je. Nie sprawdziłem, syslog
bo wierzę, dmesg
że pokażę wiadomości.