ラズベリー・パイ3でOpenBSDを動かしてみた
BSD系OSのラズベリー・パイへの対応状況
OS | 製品/アーキテクチャ |
Raspberry Pi 1 | Raspberry Pi 2 | Raspberry Pi 3 | Raspberry Pi Zero |
ARMv6(32bit) | ARMv7(32bit) | ARMv8(64bit) | ARMv6(32bit) |
FreeBSD | OK | OK | OK | OK |
NetBSD | OK | OK | ? | ? |
OpenBSD | - | - | OK | - |
OpenBSDのラズベリー・パイ3への対応状況
- 対応機種: Firefly-RK3399, Pine64, Raspberry Pi 3, Opteron A1100
- 対応デバイス:
- SoC ... Broadcom BCM2837
- Ethernet ... smsc(4)
- USB Hub ... dwctwo(4)
- SD/MMC, HDMI, WiFi, Bluetoothなどは未対応
ブートシーケンスの概要
- microSDをマウントし、bootcode.binを読み込み、実行
- bootcode.bin内でloader.binをmicroSDカードからRAMへ読み込み、実行
- loader.bin内でGPU firmware(start.elf)を読み込む
- U-BOOTはOpenBSDのルートパーティションから/bootを読込み実行
- /bootはOpenBSDのカーネルを読込み込み、実行
導入手順
- GPUの初期化コードとU-BOOTを読み込むためにμSDカードが必要
- OpenBSDは現在μSDをサポートしていない。ファイルシステムをマウントするために、USBのストレージデバイス(USBメモリなど)が必要
- さらに、OpenBSDは現在HDMI出力もサポートしていない。コンソールデバイスはシリアルI/F*1となっているため、ここに端末を接続する必要がある。
- 配布サイトから OpenBSD/snapshots/arm64/miniroot61.fs をダウンロードし、ddなどでμSDカードに書き込む
- シリアル: Pin[3(GND) 4(RxD) 5(TxD)] <-----[Serial/USB変換]------> Terminal[11520bps]
- Ethernet <-----> DHCPでインターネット接続可能な環境
- 電源投入後、インストーラが立ち上がるので、USBメモリをターゲットにしてOpenBSDを導入
- 手順はi386, amd64とほぼ同じ。(注:FAT32のパーティションが作成されるが、消さないこと)
現況とまとめ
- 6.1-releaseからインストール
- CPUはシングルコアで動作してるっぽい
- USBメモリを選ぶ
- U-BOOTが認識するUSBメモリと認識しないUSBメモリがある
→インストールできるがブート時認識されない。
- USBメモリ2本挿すと両方とも認識されない。
→インストールできるがブート時認識されない
- arm64用のpackagesなし。
- ports treeからコンパイルして導入
→コンパイルエラーで頻繁に止まる ... GCCからclangに変ったため?
→packageのmakeがネストすると止る(プロセス数が増えるとある時点で起動出来なくなる?)
- -currentでインストールし直し
- USBデバイスの認識状況は変りなし
- プロセスが起動出来なくなる問題は解決
- portsのコンパイルエラーはほぼ解消
- まとめ
- 現状ではヘッドレス運用となるため、クライアントマシンとしての利用は厳しい
- サーバとして見た場合
- デフォルトでサーバが運用されるサービスはそのまま使用可
→SMTP, Web, DNS, NTPなど
- Webで動的なページ生成を行いたい場合は、必要なもの(サーバサイド言語、データベースサーバなど)をportsからコンパイル・インストールする必要がある