ネットワークブート
ストレージをもたないコンピュータや,ストレージを何らかの理由で使いたくないなどの理由で,サーバ上に用意したOSイメージを使用して起動出来るものをネットワークブートと呼んでいる。
ローカルネットワークにあるサーバー上にRaspberry Piがロードするファイル(カーネルやルートファイル)を置いて,Raspberry Piがブート時にそれをロードしてRaspbianを起動させるネットワークブートができるようにしてみる。
Raspberry PiはOSをSDカードに書き込んで利用しているため,数ヶ月から1年程度でMicroSDカードやSDカードが寿命で使えなくなってしまう。
この対策としてもネットワークブートは有用。
ネットワークブートの仕組みの一つにPXE(Preboot eXecution Environment)がある。これは,インテルが考えた仕組みでネットワークブートの代表的なものらしい。
Raspberry Piでネットワークブートするには,モデルによりいくつかの方法がある。
- Pi,Pi2B,Pi zeroでネットワークブート
以下のような2種類の方法があります。どちらかの方法で実現出来る。
- 対応したbootcode.binを使う
SD/MicroSDカードのFAT/FAT32パーテーションのbootcode.binに,ネットワークブート(PXEブート)可能な物を使用する。
いつからかは不明だがラズベリー財団が提供する2ndステージブートローダーであるbootcode.bin(ソースコードは公開されていない)が,ネットワーク対応になっているみたい。
- U-Bootを使用する
SDカードのFAT/FAT32パーテーションに汎用ブートローダーのU-Bootを入れて,最終ブートステージであるLinuxカーネルを読み込む代わりに使う方法。
- Pi3B,3B+でネットワークブート
以下のような3種類の方法があります。どれかの方法でネットワークを実現出来る。
- GPUのfirmwareのブートローダーを使う
Raspberry Pi3B,3B+のGPUのfirmwareに,ネットワークブートやUSBストレージからのブートが出来る機能が入っている。
GPUのOTP-ROMの設定を書き換えることで,このfirmwareによるネットワークブート機能が使えるようになる。(もとに戻すことは不可能)
- 対応したbootcode.binを使う
上記と同様。
- U-Bootを使用する
上記と同様。
- Pi4Bでネットワークブート
Pi4BではブートにEEPROMのブートローダーを使用するように変更されました。
以下のような方法があります。
- EEPROMでのネットワークブート
今までのRaspberry PiのGPU firmwareでのブート機能の代わりに,新たに実装されたEEPROMのブートローダーを使用する。
Pi4B発売直後の現時点ではネットワークブートやUSB機器からのブートには,まだ対応されていない。
今後の更新で対応されるとのこと。
- U-Bootを使用する
上記と同様。
ネットワークブートの構築

新しくコメントをつける