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がある
4. kernel git hashを探す
- と、言うことで、rpi-firmwareからgit hashを探す
- github.com/Hexxeh/rpi-firmware/raw/${KERNEL_HASH}/git_hash を見る
上の例で言うと こんな感じ。 https://raw.githubusercontent.com/Hexxeh/rpi-firmware/171c962793f7a39a6798ce374d9d63ab0cbecf8c/git_hash
- 例えば、4.14.32+ のgit_hashはこんな感じ。
- b6e99accda7519a48dfd38992d31baefb56b0e10
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