Raspberry PiでLinuxのブート周りをいろいろといじっているうちに、
MicroSDのパーティション情報が認識されなくなりました。
何かの拍子にMicorSDのデータを壊したかなと思い、Raspberry Pi OSのイメージを再度書き直してみるも状況は変わらず。
いくつか調べてみると、USB接続のSDカードリーダに問題があったようでした。
2つSDカードリーダを用意して、同じMicroSDを読んだ結果が以下です。
■ 壊れたSDカードリーダ
1$ sudo hexdump -C /dev/sdb | head 200000000 ba b8 00 10 8a 90 b8 00 b0 b8 00 00 8a 98 8a 80 |................| 300000010 bb ba 00 38 bb 00 02 b9 00 02 b3 a0 aa 21 02 00 |...8.........!..| 400000020 00 ba ba 03 38 00 31 0b 83 82 10 81 ba ba 03 31 |....8.1........1| 500000030 b3 ab 12 b0 02 b0 01 bb 00 38 b2 80 8a 30 01 8b |.........8...0..| 600000040 08 02 89 13 aa 00 38 00 00 ab ba 00 00 00 00 00 |......8.........| 700000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 8* 9000001b0 00 00 00 00 00 00 00 00 39 a0 91 29 00 00 00 00 |........9..)....| 10000001c0 01 00 08 03 a0 bb 00 20 00 00 00 00 08 00 00 03 |....... ........| 11000001d0 a0 bb 83 3b a0 bb 00 20 08 00 00 20 83 01 00 00 |...;... ... ....|
■ 正常なSDカードリーダ
1$ sudo hexdump -C /dev/sdc | head 200000000 fa b8 00 10 8e d0 bc 00 b0 b8 00 00 8e d8 8e c0 |................| 300000010 fb be 00 7c bf 00 06 b9 00 02 f3 a4 ea 21 06 00 |...|.........!..| 400000020 00 be be 07 38 04 75 0b 83 c6 10 81 fe fe 07 75 |....8.u........u| 500000030 f3 eb 16 b4 02 b0 01 bb 00 7c b2 80 8a 74 01 8b |.........|...t..| 600000040 4c 02 cd 13 ea 00 7c 00 00 eb fe 00 00 00 00 00 |L.....|.........| 700000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 8* 9000001b0 00 00 00 00 00 00 00 00 3d e4 95 29 00 00 00 00 |........=..)....| 10000001c0 01 40 0c 03 e0 ff 00 20 00 00 00 00 08 00 00 03 |.@..... ........| 11000001d0 e0 ff 83 3f e0 ff 00 20 08 00 00 60 c7 01 00 00 |...?... ...`....|
SDカードのデータ線は4bitなので、4bit単位で化けている部分を探すと以下の規則性です。
つまり、3bit目が化けているので、DATA2の信号線に何らかの問題が出ていると考えられます。
前後のデータに依存性があるわけではなく、ランダムにDATA2がHighになっているようです。
化けるときは常にHighになる方向なので、どこかで短絡している可能性があるのかなとは思います。
MicorSDの端子ではDATA2の近くにVCCは見当たらないので、基板上かコントローラの中で何らかの問題が発生しているのでしょうか。
かなり古いもので、十分役に立ってくれたので、これは捨てようと思います。
再現性の低い問題ではなく、わりとわかりやすい壊れ方してくれたのはありがたいことでした。