ฉันซื้อการ์ด SD 64 GB จาก eBay มันทำงานได้ดีเมื่อฉันเผาอิมเมจ Arch Linux ARM ไปที่มันและใช้เพื่อบู๊ต Raspberry Pi ของฉัน
อย่างไรก็ตามเมื่อฉันพยายามที่จะสร้างพาร์ติชัน ext4 เดียวบนมันเพื่อใช้ความจุทั้งหมดของการ์ดข้อผิดพลาดเกิดขึ้น mkfs.ext4
จบอย่างมีความสุขเสมอ อย่างไรก็ตามพาร์ติชั่นไม่สามารถแก้ไขได้mount
, มักจะเกิดข้อผิดพลาดและdmesg
แสดงข้อความของเคอร์เนลรวมCannot find journal
อยู่ด้วย สิ่งนี้ได้พิสูจน์แล้วว่าเป็นอย่างน้อยในสองแพลตฟอร์ม: Arch Linux ARM และ Ubuntu 13.04
ในทางกลับกันฉันสามารถสร้างและติดตั้งพาร์ติชัน FAT32 ได้โดยไม่มีข้อผิดพลาด (ยังไม่ได้ตรวจสอบความจุทั้งหมด)
ฉันได้ยินมาว่าคนร้ายบางคนสามารถเปลี่ยนอินเตอร์เฟสการ์ด SD เพื่อรายงานความจุที่ไม่ถูกต้องกับระบบปฏิบัติการ (เช่นการ์ดนั้นมีเพียง 2 GB แต่รายงานตัวเองว่าเป็น 64 GB) เพื่อขายการ์ดในราคาที่ดีขึ้น
ฉันรู้ว่ามีเครื่องมือเช่นนั้นbadblocks
อยู่เพื่อให้ฉันตรวจสอบการ์ด SD สำหรับบล็อกที่ไม่ดี สามารถbadblocks
ตรวจพบปัญหาเช่นนี้ได้หรือไม่? ถ้าไม่ฉันมีวิธีแก้ไขปัญหาอื่นใดอีกบ้างสำหรับฉันในการทดสอบการ์ด
ฉันอยากรู้ว่าฉันถูกโกงหรือไม่ หากผลลัพธ์แสดงให้เห็นว่าฉันเพิ่งได้รับรายการที่ไม่ดีฉันสามารถกลับไปที่ผู้ขายเท่านั้นแทนที่จะรายงานไปยัง eBay ว่ามีคนพยายามโกงฉัน
UPDATE
การดำเนินงานและข้อความ:
~$ 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
UPDATE
ฉันทำงานแล้วbadblocks /dev/sde
แต่ไม่มีรายงานข้อผิดพลาด นั่นหมายถึงสาเหตุที่เหลืออยู่คือ:
รถ SD เป็นสิ่งที่ดี แต่ด้วยเหตุผลบาง
mke2fs
หรือmount
หรือ kernel มีข้อผิดพลาดที่ทำให้เกิดปัญหาฉันถูกโกงด้วยวิธีที่
badblocks
ไม่สามารถตรวจจับความพ่ายแพ้ สิ่งนี้เป็นไปได้เพราะฉันคิดว่าbadblocks
จะทำแบบทดสอบเขียนอ่านแทน อย่างไรก็ตามสิบแปดมงกุฎสามารถทำให้การเข้าถึงพื้นที่ขาออกเชื่อมโยงกลับไปที่บล็อกขาเข้าบางส่วน ในกรณีนี้การตรวจสอบการอ่านแบบอ่านแทนจะไม่สามารถตรวจพบปัญหาได้
หากไม่มีแอปพลิเคชันสามารถทำการทดสอบที่เหมาะสมฉันคิดว่าฉันสามารถลองเขียนโปรแกรม C อย่างง่ายเพื่อทดสอบ
dmesg
แสดงข้อความเคอร์เนลและฉันแน่ใจว่าจะปรากฏในเวลาเดียวกันเป็นข้อผิดพลาดเพราะฉันทำก่อนและหลังและเปรียบเทียบพวกเขา ฉันไม่ได้ตรวจสอบsyslog
เพราะฉันเชื่อว่าdmesg
จะแสดงข้อความ