なぜmicroSDブートではダメなのか
microSDは衝撃に弱いですし、小さくてなくしがちです。 読み書きできる回数も決まっていますし、相性問題もよく起こりますから。
相性問題のよくある例はデータの読み書きは普通にできるのに、ラズパイのOSブート用として使うとOSがなかなか起動しなかったり、連続してデータを書き続けると書き込みエラーが発生してmicroSDが読み取り専用になったりするなどです。この場合、フォーマットして書き込み直すと復活する場合もありますが、損傷度合いによってはダメかもしれません。
他にもいろいろ起きたことがありますが、多すぎて書けないのでここらへんにしておきます。
一方、USBメモリースティック(以下USBメモリー)はそれなりの強度がありますし、相性問題はほとんどありません。 (読み書きできる回数的に)より安心するなら、USB接続のHDDとかSSDを使うという選択肢もあります。
作業方法
方法は以下の公式ドキュメントに書かれていました。ちなみにラズパイ3B+の場合はデフォルトでUSBブートが使えるようになっているため、本記事のような設定は不要です。
基本的に次のような流れでUSBブートを有効にできるようです。 microSDにRaspbian Liteを書き込んだものを用意して、起動後に/boot/config.txtに下記の設定を書き込むか、書き込んだイメージをマウントして/boot/config.txtに事前に設定を書き込みます。
再起動するときにUSBブートを許可するようにとROMに書き込まれるそうです。 なお、USBブートを有効にした後の起動優先順ですが、microSDの優先度が高く設定されています。 したがって、microSD、その他のUSBデバイスの順にOSを探しにいくようになります(つまり、USBブートしたければmicroSDは取り出しておく必要があるということ)。
作業手順
- microSDに「Raspberry Pi OS Lite」を書き込む
- microSDをマウントして、
/boot/config.txt
(注1) の末尾に書き込む
program_usb_boot_mode=1 program_usb_boot_timeout=1
- 一旦再起動
sudo reboot
- 再起動が終わったらシャットダウン
sudo shutdown -h now
- microSDカードをラズパイ から取り出す
- イメージ書き込みしたUSBストレージを接続して、電源投入 (注2)
USBストレージへのOS書き込みはmicroSDに書き込むのと同じように、書き込み先としてUSBストレージを指定した後は従来のように書き込むだけです。EtcherとかRaspberry Pi Imagerなどを使って書き込めばいいと思います。
Raspberry Pi 4では?
Raspberry Pi 4については、上記手順では2020/07/17時点では対応できません。現時点で標準提供されるEEPROMよりも新しいバージョンが必要なためです。
Raspberry Pi OSのEEPROMはdebパッケージで順次提供されるようなので、もう少し待つ方が適切みたいです。
どうしてもやってみたい場合は、 こちらの情報を確認してみてください(GPUファームウェアのアップデートも必要なので難易度は高いです。文鎮にしてしまう可能性があるので、debパッケージがaptで落ちてくるまで待つのが適切です)。
注1: macOSの場合は /Volumes/boot/config.txt
としてマウントされます。
注2: こちらのイメージに program_usb_boot_mode=1
などを書き込む必要はありません。先のステップによりROMに書き込みが完了しているためです。