Top / EBUG勉強会 / 20170819_OpenBSD_rpi3

ラズベリー・パイ3でOpenBSDを動かしてみた

EBUG 第62回会合
2017年 8月19日、三条市グリーンスポーツセンター
川俣吉広、kaw@on.rim.or.jp

BSD系OSのラズベリー・パイへの対応状況

OS製品/アーキテクチャ
Raspberry Pi 1Raspberry Pi 2Raspberry Pi 3Raspberry Pi Zero
ARMv6(32bit)ARMv7(32bit)ARMv8(64bit)ARMv6(32bit)
FreeBSDOKOKOKOK
NetBSDOKOK??
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などは未対応

ブートシーケンスの概要

  • 電源投入直後は、GPUが起動
  • SoCのROMからブートローダを読み込み、実行
  • microSDをマウントし、bootcode.binを読み込み、実行
  • bootcode.bin内でloader.binをmicroSDカードからRAMへ読み込み、実行
  • loader.bin内でGPU firmware(start.elf)を読み込む
  • start.elf内で各種設定ファイルを読み込む
  • GPU初期化後、CPUが起動
  • GPUによってメモリに読み込まれたU-BOOTに処理が移る
  • 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]
  • μSDカード、USBメモリ装着
  • Ethernet <-----> DHCPでインターネット接続可能な環境
  • 電源投入後、インストーラが立ち上がるので、USBメモリをターゲットにしてOpenBSDを導入
    • 手順はi386, amd64とほぼ同じ。(注:FAT32のパーティションが作成されるが、消さないこと)
  • インストール完了後、リブート。
    • インストールされたOpenBSDカーネルが立ち上がるように、U-BOOTのデバイス優先順位を変更する。
      Hit any key to stop autoboot:  2
      U-Boot> setenv boot_targets usb0 mmc0 pxe dhcp
      U-Boot> saveenv
      U-Boot> boot

現況とまとめ

  • 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からコンパイル・インストールする必要がある

Top / EBUG勉強会 / 20170819_OpenBSD_rpi3


*1 基板上にある40ピンヘッダ、3.3V
Reload  New Edit Freeze Diff Attach Copy Rename  Top Index Search Recent Backups  Help  RSS
Last-modified: 2017-08-19 (Sat) 13:59:54 (332d)