NanoPi Neo2のビルド環境構築(公式サイトからToolchain取得)

概要

  • 過去記事で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度目以降は全コピー不要。修正したものがあれば手動でコピーしてください。