Raspberry Piをもっと便利に!マルチブートで快適な開発環境を構築しよう

RaspberryPiは、手軽にOSをインストールして試せるシングルボードコンピューターです。ただ最近はちょっと値段も値上がっているので、1台で複数のOSを使い分けられるとさらに便利だよなと思うこともあります。そこで今回はRaspberryPiのマルチブート環境について調べてみました。

マルチブートのメリット

  • 開発・学習の幅が広がる … RaspberryPi OSを普段使い、ピンポイントでUbuntuにするなど1台で環境を切り替えが可能!
  • メディアの入れ替え不要で効率アップ … SDカードをいちいち差し替えなくても、起動時にOSを選択できるのでスムーズ!
  • 実験や検証がしやすい … 新しいOSを試す際も、元の環境を壊さずに済むので安心。

マルチブートを実現する方法には以下のようなものがあるようです。

マルチブートの方法

方法 特徴 向いている用途
最新のブートローダ
(2024年10月以降)
公式サポート、簡単にブートデバイスを変更 手軽にOSを切り替えたい人向け
PINN 1ストレージに複数OSを管理 ストレージを節約したい人向け
GRUB SDカードやUSBからOS選択可能 1ストレージ・複数のメディアを使いたい人向け

今回はこの中で、最新のブートローダー(eeprom)による方法を行います。PINNは他の方の情報がわかりやすいのでそちらをご参照ください。また、GRUBについては…学習・設定のコストが大きいので省いてしまっています🙇

1. 最新のファームウエア(2024年10月以降)によるマルチブート

最新のファームウエアのブートローダーにはマルチブートの仕組みが組み込まれています。ファームウエアの更新は比較的注意の必要な作業といわれているようですので、行う際は自己責任でお願いします

  • RaspberryPi 4/5の最新ブートメニュー。Raspberry4/5のみが対象
  • スペースキーを押しながら起動するとブートメディアを選択可能
  • raspi-configコマンドで起動を優先するメディアの指定が可能です。メディアが挿さっていない場合には、読み飛ばして次の メディアのロードに進みます。

参考

rpi-eeprom/firmware-2712/release-notes.md at master · raspberrypi/rpi-eeprom · GitHub

1-1. ファームウェアの最新化手順

ファームウエアの更新の準備

既存のRaspberryPi OSを使用してもよいですし、別途更新用のOSを使用しても良いです。安心感を求めるのであれば新規にOSを準備するのが良いでしょう。 まずは、準備を行っていきます。aptコマンドで現在のインストール状態を最新アップグレードを行った後に、eepromの状態を確認しています。

$ sudo apt update && sudo apt upgrade -y
# 念の為、再起動してもいいかなと思います
$ sudo reboot
$ sudo rpi-eeprom-update

このコマンドではeeprom現在のバージョンと最新のバージョンが表示されます。

現在のバージョン

CURRENT: Wed 11 Jan 17:40:52 UTC 2023 (1673458852)

となっています。そして最新のバージョンは以下のバージョンとなっていました(2025.03.10現在)。

アップデートを行うバージョン

LATEST: Tue 11 Feb 17:00:13 UTC 2025 (1739293213)

ファームウエアの更新

最新のバージョンをインストールするには以下のように実行します。 このコマンドではアップデート手前まで行い、再起動を行うまではsudo rpi-eeprom-update -rで取り消すこともできます。

$ sudo rpi-eeprom-update -a

問題がなければRaspberryPi OSを再起動させます。

$ sudo reboot

これでeepromのバージョンアップは完了です。今回の再起動後のeepromの状態は以下のようになっていました。

1-2. ファームウェア更新後の設定

1-2-1. スペースキーを押しながら起動する(起動時にブートメディア選択)

  • 起動時に【スペースキー】を押しながら起動するとOSをブートメディアを選択できます。
  • SDカード、USBメモリを接続していない場合にはブートメニューが開きます。そのまま【スペースキー】を押すとブートメディアの選択画面進みます。
  • ブートメディアが接続されている場合には、下記の設定に従いブートを行います。

スペースキーを押しながら起動するとブートメディアの変更画面が表示

1-2-2. ブートデバイスの優先順位変更

ブートメニューを使用しない場合の認識順序はraspi-configのメニュー画面で設定を行うことが出来ます。

$ sudo raspi-config

メニュー画面が表示されたら、カーソルを移動して【6 Advanced Options】→【A4 Boot Order】と選択していき、 【B1 SDカード優先】または【B2 USB優先】 を設定します。

設定後に【ESCキー】を押してメニューの初期画面に戻り画面したにある【】を選択します。

この設定をしても、スペースを押しながら起動を行うことで手動でブートメディアを選択することは出来ます。

また、ブート可能なメディアを指していないとブートローダーがネットワーク起動をしようとします。ここで、スペースキーを押すとメディア選択画面が表示されます。ここでメディアを挿すことも可能。

2. PINNによるマルチブート

ここでは解説だけに留めます。詳細ついては以下が詳しいです🙇

参考

raspida.com

PINNとは?

PINNは以下の機能を持ちます。個人的な印象としてはNOOBSに近い感じですかね。

  • 1つのストレージに複数のOSをインストールし、ブートメニューで切り替え可能
  • GUIで管理が簡単

インストーラなどの管理ツールも入っていますし、これからインストール、環境設定するのであれば、わかりやすいかもしれません。

3. GRUBを使ったマルチブート

こちらも書いていたのですが、どう見てもRaspberryPiのファームウエア更新のほうが楽だったので、実験はやめてしまいました。

GRUBとは?

GRUBGRand Unified Bootloaderの略で、多くのLinuxディストリビューションで使用されているブートローダーです。

GRUBの特徴は以下の様になっています。

  • 複数のOSをインストールしているマシンで、起動時にどのOSを選択するかを制御が可能
  • カーネルパラメータの編集など高度なブートオプションを提供
  • GRUBの設定は、/boot/grub/grub.cfgなどの設定でファイルで管理

GRUBは高度な事ができる反面、設定がやや面倒です🤔PCのBIOSUEFIなどのようにブートメディアを切り替えるという用途であれば、eepromを更新し、ブートローダーを使用したほうが容易だと考えています。

4. どの方法を選ぶべきか?

方法 できること できないこと
ブートローダーの更新 USB/SDカード/NVMe(Pi 5)から簡単にブート切り替え / 公式サポートがあり安心 単一メディア内の複数OS管理は不可 / カスタマイズ性が低い
PINN 1つのストレージに複数OSをインストール可能 / GUIで管理が簡単 SDカードやSSDのみ対応 / 外部USBメディアの切り替えは不可
GRUB SDカードやUSBメディアを柔軟に切り替え可能 / カスタマイズ性が高い 設定が複雑 / 公式のサポートがない

おわりに

今回はRaspberryPiのマルチブートに関して調べてみましたが、以前に比べるとブートローダの機能などが組み込まれPCに遜色ない機能になってきているように感じます。

最近は、SDカード、USBメモリ・ストレージだけでなくM.2のSSDでの起動も可能になってきています。益々、RaspberryPiがminiPCに近づきしそうですね。となると逆のアプローチでminiPCでGPIOを使用できる世界線もあるのかななんて感じます🤔