概要
- 過去記事でNEO2用のビルド環境構築を解説したけど、MediafireからToolchainを持ってきたりでちょっと怪しい感じだったので、Linaroから直接Toolchainをとってきてビルドする手順を確認したのでメモします。
- Ubuntu 18.04LTS AMD64環境で確認しました。32bit環境は未確認
Build関連パッケージのインストール
- ビルドするならまずはbuild-essentialを入れる。gcc, g++, make, libc-devあたりを纏めてインストールしてくれる仮想パッケージ。
$ sudo apt install build-essential
Toolchainの取得と展開
- Linaroのサイトからツールチェインを取得。
- ポイントは6.x系を選ぶこと。7.x系からはABIが変わる?とかで互換性が無いとか。
- 取ってきて/opt以下にバラします。
$ wget https://releases.linaro.org/components/toolchain/binaries/6.4-2017.11/aarch64-linux-gnu/gcc-linaro-6.4.1-2017.11-x86_64_aarch64-linux-gnu.tar.xz
$ sudo mkdir -p /opt/linaro/toolchain/
$ sudo tar xvf aarch64-linux-gnu/gcc-linaro-6.4.1-2017.11-x86_64_aarch64-linux-gnu.tar.xz -C /opt/linaro/toolchain/
- 未確認ですが、32bitだと下記をDLしてください。
https://releases.linaro.org/components/toolchain/binaries/6.4-2017.11/aarch64-linux-gnu/gcc-linaro-6.4.1-2017.11-i686_aarch64-linux-gnu.tar.xz
パスを通す
$ export PATH=/opt/linaro/toolchain/gcc-linaro-6.4.1-2017.11-x86_64_aarch64-linux-gnu/bin:$PATH
gitでカーネルを持ってきて、4.11ブランチをcheckout
$ git clone https://github.com/friendlyarm/linux.git
$ cd linux
$ git checkout sunxi-4.11.y
$ git clone https://github.com/tkztkztkz/linux.git
$ cd linux
$ git checkout npi-audio-4.11.y
ビルド
$ make sunxi_arm64_defconfig ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
$ make Image dtbs modules ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
モジュールを集める
$ make modules_install ARCH=arm64 INSTALL_MOD_PATH=./mod_root/
$ cd mod_root
$ tar cvfz ../modules.tar.gz ./
ターゲットにコピー
- 出来上がったarch/arm64/boot/ImageをNanoPi NEO2の/bootにコピー
- dtbはarch/arm64/boot/dts/allwinner/あたりに生成されます。これも必要なものをコピー
- modules.tar.gzをターゲット(NEO2)のrootに展開。下記コマンドはNEO2上で実行すること。
$ sudo tar xvfz modules.tar.gz -C /
次回から
- パスを通してビルドしてターゲットにコピーするだけです。
- モジュールはカーネルのマイナーバージョンが同じなら2度目以降は全コピー不要。修正したものがあれば手動でコピーしてください。