#topicpath
*ラズベリー・パイ3でOpenBSDを動かしてみた [#le8801c8]
RIGHT:EBUG 第62回会合 ~
2017年 8月19日、三条市グリーンスポーツセンター ~
川俣吉広、kaw@on.rim.or.jp

**BSD系OSのラズベリー・パイへの対応状況 [#c24fba0c]

|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|c
|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への対応状況 [#mdbab495]

-ラズベリー・パイ3のみ対応、OpenBSD 6.1 (2017/5 リリース)から ~
https://www.openbsd.org/arm64.html

--対応機種: Firefly-RK3399, Pine64, Raspberry Pi 3, Opteron A1100

--対応デバイス:
---SoC ... Broadcom BCM2837
---Ethernet ... smsc(4)
---USB Hub ... dwctwo(4)
---SD/MMC, HDMI, WiFi, Bluetoothなどは未対応

**ブートシーケンスの概要 [#o4822211]
-電源投入直後は、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>http://www.denx.de/wiki/U-Boot/]]に処理が移る

--U-BOOTはOpenBSDのルートパーティションから/bootを読込み実行

--/bootはOpenBSDのカーネルを読込み込み、実行

**導入手順 [#jea29406]

-前提条件

--GPUの初期化コードとU-BOOTを読み込むためにμSDカードが必要

--OpenBSDは現在μSDをサポートしていない。ファイルシステムをマウントするために、USBのストレージデバイス(USBメモリなど)が必要

--さらに、OpenBSDは現在HDMI出力もサポートしていない。コンソールデバイスはシリアルI/F((基板上にある40ピンヘッダ、3.3V))となっているため、ここに端末を接続する必要がある。

-手順

--配布サイトから 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

**現況とまとめ [#sa48c57a]

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

----
#topicpath

Top Index Search Recent Backups  Help  RSS