Raspberry Pi(ラズパイ)が動かなくなりました。
先日購入したタッチパネルのドライバを入れようとしたら、こんな感じで文鎮になっちゃいました。確かにインストール済みのRaspbianにドライバを突っ込むのは非推奨だと、マニュアルには書いていましたが…。
フォーマットして入れなおしてもいいんですが、中には思い出の開発品(クソリプbotとか熱測定のコードとか)が入ってるので、復旧させられないかと足掻いてみました。
- Raspberry Piリカバリーの手順
- VMwareのインストール
- 仮想マシンでSDを認識
- SDが割り当てられているdevを確認してマウント解除
- fsckコマンドで修復
- 結果
- まとめ
- 参考にしたページ
Raspberry Piリカバリーの手順
Linuxにはfsck
というファイルシステムの検査と修復を行うコマンドがあるということで、これをダメになったラズパイSDに試してみようということです。具体的な手順は以下の通り。
- VMwareのインストール
- 仮想マシンでSDを認識
- SDが割り当てられているdevを確認してマウント解除
fsck
コマンドで修復
何を言ってるか分からない人もいるかと思いますが、僕だって1/3も分かってないので大丈夫です。
VMwareのインストール
VMware Playerのダウンロードはこちらから(個人利用は無料)
OSはオススメされていたFedoraを入れました。ワークステーションの、1.5GBのliveイメージを使って仮想マシンを立ち上げています。
インストールから仮想マシンの作成までは特に難しいことはなかったので割愛します。
仮想マシンでSDを認識
Fedoraを起動してからSDカードリーダーを挿します。先にリーダーがあると、Fedoraが立ち上がらないことがあったので、その点はご注意を。
カードリーダーを挿したら何もせずに認識してくれました。ファイルを覗いてみると、ラズパイのhomeフォルダが見えました。よかった…とりあえずファイルの取り出しができる。
SDが割り当てられているdevを確認してマウント解除
ターミナルを立ち上げます。ActivitiesをクリックしてUtilitiesの中に入ってます。
次にSDがどこに割り当てられるかを確認します。dmesg
コマンドを使うらしいです。
dmesg | tail
このコマンド、「カーネルのリングバッファの内容を出力する」というもので、正直いって意味が分かってません。ただ、何となく/dev/sdb/に割り当てられている雰囲気を感じました。
fsck
はマウント解除してから実行しろということなので、umount
でマウントを解除しておきます。sudo
無いと怒られたので、ご注意を。
sudo umount /dev/sdb*
fsck
コマンドで修復
ここまでくれば後一息です。sdb*に対してしらみ潰しにfsck
を実行していきます。オプションの-V
は詳細な情報を表示してくれます。
sudo fsck.fat -V /dev/sdb6
画像の通りsdb6で異常を感知しました。異常な箇所を削除するか聞かれたので、削除してみます。これはもしかしてラズパイ復活の予感…!
結果
ダメでした。
まとめ
ラズパイを復活させようとしましたが、ダメでした。しょうがないので大人しくフォーマットします。今度はタッチパネルのドライバが最初っから入ってるイメージファイルを焼きこむようにします。
復活がかなわなかったのは残念でしたが、副産物が色々とありました。
- VMwareはじめて使った
- 知ってるコマンド増えた
- ラズパイの中身をサルベージできた
やってみることで見えてくるものはあるし、知識も増えるので、かけた時間はムダじゃなかったかなと思います。何より「ラズパイを復活させる」という分かりやすい目標があると、やる気が湧いてくるものです。 この手法でラズパイを復帰させてる方もいたので、もしラズパイが文鎮化して困っている人がいるなら、一度試してみるといいかなと思います。
参考にしたページ
Raspberry PiでMicro SDカードが壊れたときの対処方法 - エンジニアの備忘録
Raspberry piのファイルシステム破損による起動失敗とリカバリ方法: 学習ノート
こんな記事も書いています。
temcee.hatenablog.com
コードは取り出したので、いつでもクソリプいけます。