Raspberry Pi 4B が起動しなくなる問題

起動しなくなった

sshRaspberry Piにログインしようとして,IPアドレス,ホスト名の両方を試してもうまくいかない場合,起動していない可能性がある.HDMI 0のポートにディスプレイを繋いだ時,ほぼ正方形の虹色の画面が表示されていてそこから動く気配がない場合,起動に失敗している.いくつか原因があるらしい.

www.makeuseof.com

上記の中では,SDカードの異常(破損,規格不足?)が疑われたので,内容を別のカードに移動するか,スクリプトや設定ファイルをサルベージして別のカードにクリーンインストールするかを試みた.

SDカードの中身の移し替え

ラズパイのSDカードを普通にMacに挿しても,Documentフォルダなどがそのまま見られるわけではない.なのでまずはサルベージより中身の移し替えを試みた.

www.cyberciti.biz

ラズパイのディスクとして使用したSDカードは,いくつかのパーティションに自動で分かれているが,別に異常ではない(参考:Raspberry Pi 4(ラズパイ)起動!虹画面フリーズの原因は意外なものだった… │ きゅうり大爆発).しかし移動するのも,そのままファイルをコピーしたのではダメそうで,ddコマンドを使って,まずはディスクイメージを作成し,そのディスクイメージを別のSDカードに焼き込んで物理ディスクを作るという流れになる.

ちなみにdiskutil listでディスクの状態を見ると,ディスクをMacに挿した時にマウントされるbootディスクとRECOVERYディスク以外の空白らしく見えた部分にも,linuxというディスク領域が設定されていることがわかる.つまり名目上は領域の全てを使っていることになっているので,移し替えるディスクは容量が同一でないとダメだと思う(未試行).

/dev/disk3 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *63.9 GB    disk3
   1:             Windows_FAT_16 RECOVERY                2.6 GB     disk3s1
   2:                      Linux                         33.6 MB    disk3s5
   3:             Windows_FAT_32 boot                    268.4 MB   disk3s6
   4:                      Linux                         61.0 GB    disk3s7

www.raspberrypi.org

このディスクイメージ作成作業は,上記サイトでは15分ほど要すると書いてあるが,私の環境では,バッファサイズを16mに設定して,ゆうに2時間はかかった.さらにSDカードに焼きこむ作業はその半分くらいの速度しか出ていなかった(健闘した方だと思う).

データのサルベージとクリーンインストール

ディスクの焼きなおしと並行して,とりあえずディスクイメージ作成が終わって解放された旧ディスクからサルベージする方も試みることにした.Macでラズパイのファイルを見るためには,外部ディスクとしてマウントするためにext4fuseというツールを使う方法があるらしい.

www.jeffgeerling.com

上記サイトにあるようにどちらもHomebrewでインストールする.さて,マウントするのはディスク全体ではなく,そのパーティションごとであるので,上記のdiskutil listをひとつひとつ試してファイルが入っているところを探し当てる必要がある.結論的には最後のlinuxパーティションが正解.

ファイルを救出したところで,別ディスクにRaspberry Pi OSをクリーンインストールする.まずはsudo diskutil eraseDisk FAT32 NAME MBRFormat /dev/diskNを実行して,FAT32にフォーマットする(別にDisk Utilityでやっても何の問題もない).

superuser.com

ついでインストール.今回はDisk Imagerをインストールして使ってみたが,これは簡単で便利.リカバリーツールやUbuntuなど他のOSも手軽に扱える.

www.raspberrypi.org

いつからraspbianという呼び名を使わなくなったのか.つい最近のことのように思うが.

解決(電流不足?)

クリーンインストールはすぐ終わるので,とりあえずそのカードで起動を試みたが,状況は一緒だった.すわ本体の故障かと落胆したが,GPIOに多数の配線が繋がったままだったので,藁にもすがる思いでそれらを外して起動を試みたところ,異常が疑われた旧ディスクで問題なく起動した.

どういうことかよくわからないが,GPIOがいくらか電気をもっていってしまうので,チップに使う電気が足りなくて起動できないということらしい.電気が足りないという問題は,アダプターや電源の問題によっても起きるが,GPIOのせいでも起こることがあるようなので,同様の症状の向きはぜひ試みられたい.ちなみに私のところでは,3V3電源線とGND線だけを外せば起動する.なぜ3V3だけではダメなのかは謎.

www.raspberrypi.org

もちろんこの時点で,3時間くらい経過して半分弱くらい焼き込みが終わっていたSDカードへのディスク作成は中断した.

残る問題

GPIOに配線を繋いだままでは起動できないのだとすると,なんらかの機器に組み込んで利用する場合,いちいち分解しないと起動できないということになるのでは?

これまでは別に繋いだままでも起動できていたので,たまたま今の配線が悪いということなのか.ちなみにブレッドボードに3色LEDを一本と1KΩ抵抗一本,プルダウン抵抗1KΩのスイッチが6本.なんとなく,スイッチのプルダウン抵抗が悪さをしているような,そうでもないような.

追記

プルダウン抵抗を1kΩから10kΩ,100kΩと変えてみたところ,10kΩでは起動せず,100kΩでは起動した.抵抗を大きくしたことで流れる電流が減ったから?

よくわからないが,GPIOのうちいくつかはデフォルトでいくらか電流が流れるらしく,特に何もしていなくてもLEDがうっすら点いていたりする.おそらくGNDとつながっているとそこで電流が消費されてしまうのだろう.したがって,上では謎だと書いた,3V3だけ外しても起動しないという問題は,3V3ではなく他のGPIOが電流を食っているために起こっている問題だったので当然だったわけである.むしろGNDだけ外せば起動するはず.