SDカードのファイルシステムが破損しているため(おそらく電源が不十分なため)、新しいファイルシステムを作成したいと考えています。 (e2fsck
は失敗します。ログに記録します。)
ただし、SDカード上のファイル関連の変更は魔法のように元に戻されます!
fdisk
を使用して新しいパーティションテーブルを作成すると、古いパーティションテーブルがすぐに元に戻ります。 (以下のログ。)dd if=/dev/zero of=/dev/mmcblk0 bs=1M
、fdisk
を実行しましたDisk /dev/mmcblk0 doesn't contain a valid partition table
。 dd
が完了すると、古いパーティションテーブルが再び戻りました。小さなスイッチでSDカードを物理的にロックしていません。読み取り専用エラーは発生しません。実際、エラーはまったく発生しません! dmesg
は、エラーのあるファイルシステムをマウントしていることを除いて、何も報告しません。
Xubuntu live cd(12.10)の実行中にも問題が発生しました。残念ながら、現時点では他のコンピューターやSDカードリーダーにアクセスできません。
それは私のコンピューター、SDカードの問題なのでしょうか、それともいつも何かが足りないのですか?私が試すことができる提案はありますか?
e2fsck
失敗:
$ Sudo e2fsck /dev/mmcblk0p2
e2fsck 1.42.5 (29-Jul-2012)
/dev/mmcblk0p2: recovering journal
Superblock needs_recovery flag is clear, but journal has data.
Run journal anyway<y>? yes
e2fsck: unable to set superblock flags on /dev/mmcblk0p2
/dev/mmcblk0p2: ********** WARNING: Filesystem still has errors **********
以下は、fdisk
が効果がないことを示すログです。
$ Sudo fdisk /dev/mmcblk0
Command (m for help): p
Disk /dev/mmcblk0: 31.5 GB, 31460425728 bytes
4 heads, 16 sectors/track, 960096 cylinders, total 61446144 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00017b69
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA)
/dev/mmcblk0p2 122880 61446143 30661632 83 Linux
Command (m for help): d
Partition number (1-4): 1
Command (m for help): d
Selected partition 2
Command (m for help): p
Disk /dev/mmcblk0: 31.5 GB, 31460425728 bytes
4 heads, 16 sectors/track, 960096 cylinders, total 61446144 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00017b69
Device Boot Start End Blocks Id System
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
$ Sudo fdisk -l /dev/mmcblk0
Disk /dev/mmcblk0: 31.5 GB, 31460425728 bytes
4 heads, 16 sectors/track, 960096 cylinders, total 61446144 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00017b69
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA)
/dev/mmcblk0p2 122880 61446143 30661632 83 Linux
この時点で、SDカードでbadblocksを実行して、見つかったものを確認することをお勧めします。
カードの書き込みロジックが破損しているように見えますが、マウントポイントに表示されるのは、単にデータのキャッシュバージョンです。同期およびアンマウント中に書き戻されることになっています。 SDカードがまったくぶら下がっていることに言及していないことを確認すると、損傷が発生するほど深刻であることが示唆されますfalse positive write back responseまたはより簡単な言葉でディスクはあなたに嘘をついています書き込みが完了したと表示されます。
カードがシステムから取り外されている間に、書き込み保護スイッチの切り替えを試みることができます。例えば.
「stuck at 1」値をキャッシュしている可能性のある回路をくすぐる努力。それ以外は、それを押しつぶして、他の誰もそれ以上悲しみを感じないようにしてください。
カードはMMC書き込み保護フラグを介してロックされているようです。 SD/MMCカードリーダーを搭載したLinuxコンピューターがある場合は、実行してみてください
Sudo sdtool /dev/mmcblk0 unlock
これを機能させるには、MCCデバイス(/dev/sdX
などのUSB大容量記憶装置ではない)が必要であることに注意してください。
sdtool
が見つかりました こちら 。 Raspberry Piビルドがあります。それ以外の場合は、ソースからビルドする必要があります。 hdparm
で同様のアクションを実行できるようですが、個人的には試していません。
欠陥のあるカードは、同様の方法で内部的にロックされ、データのさらなる損傷を防ぎ、ロック解除コマンドを無視します。