Raspberry Piを使用していて突然起動できなくなるようなことはないでしょうか。昨年末、突然Raspberry Piが起動しなくなりリモートで使用していたこともあり、ネットワーク側が原因ではないかなと色々試していたのですが、最終的にHDMIでモニタを接続するとファイルシステム側の問題で起動できないというメッセージが表示されていました。SDメモリカード(以降SDカード)書き込み回数などが多すぎたというよりも、ふとしたきっかけでファイルシステムが壊れてしまったという印象です。
しかたないなあと思い、SDカードイメージファイルを再書き込みすることにしたのですが、/boot領域はアクセスできるにも関わらず、/(ルート)領域には全くアクセスできないというものでした。Windowsのディスクツールを使用しても全くアクセスできず、Ubuntuからのgpartなどからもアクセスはできないようです。
そんなことがあったので、なんとかして復帰させたかったので、いろいろ手をつくしてみました。結果はとしては全くだめでしたが、こういうことも書いておいたほうがいいのかなと思い今回のエントリーを書いています。
SDカードにはなにが起こったのか?
結論からいうとSDカードは書き込み禁止状態になっていました。マイクロSDメモリカードには書き込み禁止のスイッチがあるというわけでもないのですが、その状態と同じ状態です。ソフトウエア的に書き込み禁止状態になっているようです。なぜこの状態になったかがわかったかというとUbuntu側でCDドライブのような表示がされていたためです。
改めてWindowsにSDカードを認識させると、以下のようなダイアログ表示が行われています。ファイルシステムが壊れていいるような感じです。

Raspberry Pi Imagerを使用するとSDカードは以下のように表示されています。WRITE PROTECTEDという表示がされています。

これが原因のようです。もっとローレベルでの領域操作が必要になるので、Windowsのディスク管理ツールを使用して領域の開放をしてみると、以下のようなエラーが発生します。

流石にここまでくると結構辛いものがあります。更に食い下がるということでWindowsのdiskpartをしようするしかないという状況になります。cmdを管理者権限で起動して、diskpartを起動します。起動するとプロンプトの表示はDISKPART>に変化します。WRITE PROTECTEDの属性を変更したいので、ディスクの属性のReadOnlyをクリアしてみます。
diskpartのマニュアル
> dsikpart DISKPART> list disk # ここで表示されるディスク番号をSDカードのものを以降は使用します。 # 今回はディスク1を使用するため以降使用するのは”1”となります。 DISKPART> select disk 1 # オペレーションを行うdiskを確認するにはlist diskコマンドを使用して、 # 選択したdiskの行頭に*がついていることを確認します。 DISKPART> attribute disk clear readonly DISKPART> exit
実行の様子


これでいいはずなのですが、どうやってもうまく属性変更ができません。今回はこれでギブアップという状態です。
Ubuntuでもgpartedを使用して操作をしてみたのですが、こちらも操作を受け付けてくれませんでしたし、ディスクをクローンするようなツールを使っても操作できない状態でした。
今回は完全に敗北です。
SDカードの書き込み不能に関して
いろいろとネットを検索していると、同じような現象になっている方をみました。そんな情報のなかに、SDカード側の保護機能として、ファイルシステムにライトプロテクトを行うという機能があると書かれていました。
ただ、そういう情報をほかのサイトで見ていないので本当なのでしょうか?
原因の予想ですが、SDカードのアクセス時に電源断をしている可能性が高いです。そのつもりはまったくなかったのですが。同じ現象が出ている方もSDカードの復帰はできていませんでした。
おわりに
今回は対処方法も失敗に終わり、原因にも納得行かない状況での終了となりました。
ただ、復帰はかなり難しいということは情報にしておいたほうがいいのかなと思い今回の教訓という内容のエントリとしました。同じトラブルの方の情報となれば幸いです。
何らかの形で復帰できた場合にはこのエントリーに追記していきたいと思います。
参考