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.ext4zawsze kończy się szczęśliwie; jednak partycja nie może być mountedytowana, zawsze zgłasza błąd i dmesgpokazuje 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 badblocksistnieją takie narzędzia , aby sprawdzić kartę SD pod kątem uszkodzonych bloków. Czy można badblockswykryć 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/sdeale nie zgłasza żadnego błędu. Oznacza to, że pozostałe przyczyny to:
Samochód SD jest dobry, ale z jakiegoś powodu
mke2fslubmountjądro ma błąd, który powoduje problem.Zostałem oszukany w sposób,
badblocksktóry nie może wykryć porażki. Jest to prawdopodobne, ponieważ myślę, żebadblockspo 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ć.
dmesgpokazuje 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, syslogbo wierzę, dmesgże pokażę wiadomości.