moode audioのカーネルをクロスビルドする手順メモ

  • moode audioで使用しているRaspbianのカーネルイメージをクロスビルドするにあたっていろいろハマったのでメモして置きます。
  • Ubuntu 18.04LTS AMD64環境で確認
  • ターゲットはRaspberry Pi Zero用。RPi3とか64bitの奴はツールチェインやビルドオプションが変わるはず。

1. toolchainとkernelをとってくる

git clone https://github.com/raspberrypi/tools
git clone https://github.com/raspberrypi/linux

2. toolchainにパスを通す

$ vim rpisetup
export PATH=`pwd`/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin:$PATH
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-

って感じで環境変数を書いたファイルを作成して

source ./rpisetup

とかして読み込む。毎回コマンドラインでexportしても良いです。お好きな方法で。

3. kernel hashを探す

  • まずはmoode audioのプロパティを見て使用しているカーネルを探す。
  • https://github.com/moode-player/mosbuild
  • modbuild.properties ファイルの中身を見る

  • ここにKERNEL_HASHがある

    • KERNEL_HASHという名前だが、raspberrypi/linuxリポジトリのHashではなく、
    • rpi-updateが使ってるHexxeh/rpi-firmwareリポジトリのHashであることに注意
    • 例えば 171c962793f7a39a6798ce374d9d63ab0cbecf8c って感じの文字列がKERNEL_HASHです。

4. kernel git hashを探す

5. rpi kernelを指定のバージョンでチェックアウトする

  • git_hashのハッシュでcheckoutする。これでやっとmoode audioで使ってるバージョンのkernelが取得できる。
cd linux
git checkout b6e99accda7519a48dfd38992d31baefb56b0e10

6. configを実機から持ってくる場合(任意)

  • RPi実機でconfigsをロードしてconfig.gzをクロスビルド環境に持ってきておく
modprobe configs
scp /proc/config.gz hoge とかで実機からビルドマシンに吸い上げる。
zcat config.gz > .config でlinuxディレクトリ配下に展開しておく

7. buildする

  • あとはビルドするだけ
  • .configを実機から持ってきてる場合はoldconfigで。デフォルト設定でビルドするならbcmrpi_defconfigで。
KERNEL=kernel
make oldconfig or make bcmrpi_defconfig
make -j8 zImage modules dtbs

編集履歴