Saya membeli kartu SD 64 GB dari eBay. Ini berfungsi dengan baik ketika saya membakar gambar ARM Arch Linux dan menggunakannya untuk mem-boot Raspberry Pi saya.
Namun, ketika saya mencoba membuat partisi ext4 tunggal di atasnya untuk menggunakan semua kapasitas kartu, kesalahan terjadi. mkfs.ext4
selalu berakhir dengan bahagia; Namun, partisi tidak dapat mount
diedit, selalu menimbulkan kesalahan dan dmesg
menampilkan pesan-pesan kernel Cannot find journal
. Ini telah terbukti menjadi kasus di setidaknya dua platform: Arch Linux ARM dan Ubuntu 13.04.
Di sisi lain, saya dapat membuat dan me-mount partisi FAT32 tanpa kesalahan (pemeriksaan kapasitas penuh belum dilakukan).
Saya mendengar bahwa beberapa orang jahat dapat mengubah antarmuka kartu SD untuk melaporkan kapasitas yang salah ke OS (yaitu kartu tersebut benar-benar hanya 2 GB tetapi ia melaporkan dirinya sendiri sebagai 64 GB) untuk menjual kartu dengan harga yang lebih baik.
Saya tahu bahwa alat seperti badblocks
ada bagi saya untuk memeriksa kartu SD untuk blok buruk. Bisakah badblocks
mendeteksi masalah seperti ini? Jika tidak, solusi apa yang ada bagi saya untuk menguji kartu?
Saya idealnya ingin tahu apakah saya dicurangi atau tidak; jika hasilnya menunjukkan saya baru saja menerima barang yang buruk, saya dapat kembali ke penjual saja, lebih baik melaporkan ke eBay bahwa seseorang mencoba menipu saya.
MEMPERBARUI
operasi dan pesan:
~$ 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
MEMPERBARUI
Saya telah menjalankan badblocks /dev/sde
tetapi tidak melaporkan kesalahan. Itu berarti sisa penyebabnya adalah:
Mobil SD bagus tetapi karena beberapa alasan
mke2fs
ataumount
atau kernel memiliki bug yang menyebabkan masalah.Saya ditipu dengan cara yang
badblocks
tidak bisa mendeteksi kekalahan. Ini masuk akal karena saya pikirbadblocks
hanya melakukan beberapa tes tulis-baca di tempat. Namun, penipu dapat membuat akses ke area keluar tautan kembali ke beberapa blok masuk. Dalam hal ini cek baca-baca di tempat tidak dapat mendeteksi masalah.
Jika tidak ada aplikasi yang dapat melakukan tes yang tepat, saya pikir saya dapat mencoba menulis program C sederhana untuk mengujinya.
dmesg
menampilkan pesan-pesan kernel dan saya yakin itu muncul bersamaan dengan kesalahan karena saya melakukan itu sebelum dan sesudah dan membandingkannya. Saya belum memeriksa syslog
karena saya yakin dmesg
akan menampilkan pesan.