#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 https://www.openbsd.org/arm64.html ~ http://undeadly.org/cgi?action=article&sid=20170409123528 ~ --対応機種: 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