ジャンル不定の日記です。

Orange Pi Zero とりあえず起動した

先日届いたOrange Pi Zero LTSだが、標準の2MBフラッシュじゃLinux入らんので、R1のときのカーネルとかをSDカードに入れてXR819のモジュールだけ作って起動しようと思った。

XR819のモジュールは、AURだと https://github.com/fifteenhex/xradio になってるが、
コメント欄に https://github.com/karabek/xradio じゃないと起動しないとか書いてあった。
後者のほうが開発続いてる感じなんで後者にした。

$ git clone https://github.com/karabek/xradio.git
$ cd xradio
のあとに、Makefileの4,5行目
CONFIG_WLAN_VENDOR_XRADIO := m
ccflags-y += -DCONFIG_XRADIO_USE_EXTENSIONS
の部分をコメントアウトする必要がある。
で、
$ make ARCH=arm CROSS_COMPILE=arm-none-eabi- -C ../linux/linux-5.4.16 M=$PWD modules
とR1の時に作ったカーネルのモジュールを作ろうとしたら、
cc1: error: incompatible gcc/plugin versions
cc1: error: failed to initialize plugin ./scripts/gcc-plugins/arm_ssp_per_task_plugin.so
こんなエラー出てコンパイルできなかった。
どうも、カーネル作ったときとGCCのバージョンが変わって互換性が無くなってるみたい。
gcc-pluginsだけのリビルドはやり方わからなかったので、5.8.3でカーネルを作り直すことにした。
どうせだし、Buildrootとu-bootも作り直した。
XR819のモジュールはカーネルのリビルドしたら問題なく実行できた。

Orange Pi R1のときにまとめた情報を見ながら作ったが、
今回はカーネルのビルドはBuildroot上でやらなかったら/lib/modulesがなかったんでモジュール置くのに手動で作る必要があった。
ファームウェアは/lib/firmware/xr819以下にBuildrootが置いててくれた。
R1と共通化するためにルーター関連のアプリなんかも入れたんだが、カーネルのpppサポートを入れ忘れた。

u-bootは一応作り直したがsfコマンドが使えなかった。
menuconfigでSPIフラッシュ関連の項目があったんで設定しないとダメになったのかも。
前は include/configs/sunxi-common.h を改造してboot.scrをロードするようにしてたが、インストール後にsetenvでdistro_bootcmdを書き換えちゃえばいい気がした。

そして、buildrootでdepmod入れ忘れてたようでdepmodコマンドが使えるようになってなかった。
というわけで、再度Buildrootの必要がある感じ。
flashcpなんかはBuildrootの標準で有効になってたんでBusyboxでは入れる必要なさそうな感じ。

あと、rootパスワードも設定忘れてたんだが、パスワード設定しないとオートログインになるんだね。