Ich habe eine 64-GB-SD-Karte von eBay gekauft. Es funktioniert einwandfrei, wenn ich ein Arch Linux ARM-Image darauf brenne und damit meinen Raspberry Pi starte.
Wenn ich jedoch versuche, eine einzelne ext4-Partition zu erstellen, um die gesamte Kapazität der Karte zu nutzen, treten Fehler auf. mkfs.ext4
endet immer fröhlich; Die Partition kann jedoch nicht mount
bearbeitet werden, es wird immer ein Fehler ausgegeben und dmesg
die Kernelmeldungen werden angezeigt Cannot find journal
. Dies hat sich auf mindestens zwei Plattformen bewährt: Arch Linux ARM und Ubuntu 13.04.
Andererseits kann ich eine FAT32-Partition ohne Fehler erstellen und mounten (eine vollständige Kapazitätsprüfung wurde nicht durchgeführt).
Ich habe gehört, dass einige Bösewichte die SD-Karten-Schnittstelle ändern können, um dem Betriebssystem eine falsche Kapazität zu melden (dh die Karte hat nur 2 GB, aber sie meldet sich selbst als 64 GB), um die Karte zu einem besseren Preis zu verkaufen.
Ich weiß, dass badblocks
es für mich Tools gibt, mit denen ich die SD-Karte auf fehlerhafte Blöcke überprüfen kann. Können Sie badblocks
solche Probleme erkennen? Wenn nicht, welche anderen Lösungen stehen mir zum Testen der Karte zur Verfügung?
Ich möchte im Idealfall wissen, ob ich betrogen wurde oder nicht. Wenn das Ergebnis zeigt, dass ich gerade einen schlechten Artikel erhalten habe, kann ich nur zum Verkäufer zurückkehren, statt eBay zu melden, dass jemand versucht hat, mich zu betrügen.
AKTUALISIEREN
Operationen und Nachrichten:
~$ 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
AKTUALISIEREN
Ich bin gelaufen, badblocks /dev/sde
aber es wird kein Fehler gemeldet. Das heißt, die verbleibenden Ursachen sind:
Das SD-Auto ist gut, aber aus irgendeinem Grund hat
mke2fs
odermount
der Kernel einen Fehler, der das Problem verursacht.Ich wurde auf eine Weise betrogen
badblocks
, die die Niederlage nicht erkennen kann. Das ist plausibel, weil ich denke, esbadblocks
handelt sich nur um einen direkten Schreib-Lese-Test. Der Betrüger kann jedoch den Zugang zu ausgehenden Bereichen auf einen eingehenden Block zurückführen. In diesem Fall kann eine In-Place-Lese- / Schreibprüfung das Problem nicht erkennen.
Wenn es keine Anwendung gibt, die den richtigen Test durchführen kann, kann ich versuchen, ein einfaches C-Programm zu schreiben, um es zu testen.
dmesg
Kernelnachrichten angezeigt werden, und ich bin sicher, dass sie gleichzeitig mit den Fehlern angezeigt werden, da ich das vorher und nachher getan und sie verglichen habe. Ich habe nicht überprüft, syslog
weil ich glaube dmesg
, dass die Nachrichten angezeigt werden.