🧩

jetson nanoのカーネルをソースからビルドする

2022/05/13に公開

** 2022/05/15 追記 ビルドするホストにはx86_64のubuntu 20.04を使いましょう。

現在動いているカーネルのバージョンを確認する

$ cat /proc/version
Linux version 4.9.253-tegra (buildbrain@mobile-u64-5434-d8000) (gcc version 7.3.1 20180425 [linaro-7.3-2018.05 revision d29120a424ecfbc167ef90065c0eeb7f91977701] (Linaro GCC 7.3-2018.05) ) #1 SMP PREEMPT Sat Feb 19 08:59:22 PST 2022

参考にしたページ

https://blog.kevmo314.com/compiling-custom-kernel-modules-on-the-jetson-nano.html

作業ディレクトリの作成

作業ディレクトリを$TOPDIR で参照できるようにしておく。

$ TOPDIR=$PWD/tegra
$ mkdir -p $TOPDIR
$ cd $TOPDIR

ツールチェインのダウンロード

$ wget http://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-linux-gnu/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz
$ tar xf gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz 
$ export CROSS_COMPILE=$(pwd)/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
$ export LOCALVERSION=-tegra

カーネルソースのダウンロード

$ wget https://developer.nvidia.com/embedded/l4t/r32_release_v7.1/sources/t210/public_sources.tbz2
$ tar xf public_sources.tbz2 
$ cd Linux_for_Tegra/source/public/
$ tar xf kernel_src.tbz2 
$ cd kernel/kernel-4.9/

カーネルのビルド

ビルドに必要なツールをインストール

$ sudo apt install -y build-essential bc libncurses5 libncurses5-dev

ビルドファイルの出力先を指定し、デフォルトのコンフィグを実行

$ TEGRA_KERNEL_OUT=$TOPDIR/t4l-kernel
$ mkdir -p $TEGRA_KERNEL_OUT
$ make ARCH=arm64 O=$TEGRA_KERNEL_OUT tegra_defconfig

コンフィグをカスタマイズ

$ make ARCH=arm64 O=$TEGRA_KERNEL_OUT menuconfig

ビルドを実行

$ nohup make ARCH=arm64 O=$TEGRA_KERNEL_OUT -j`nproc` &
$ tail -f nohup.out 

dtbのビルドでエラーになってしまう。

$ nohup make -k ARCH=arm64 O=$TEGRA_KERNEL_OUT -j`nproc` &

-k オプションをつけて可能なものだけビルドしてみた。
vmlinuxとmodules はビルドできていた。
dtbのビルドでエラーになってしまう件は今は深追いしないことにする。

** 2022/05/15 追記
最初はビルド環境としてubuntu 22.04を使用してdtbのビルドエラーが起こっていたのですが、ubuntu 20.04では問題なくビルドできました。何かのコマンドの挙動の変化が影響しているようです。
** 追記ここまで

仮の場所にカーネルモジュールをインストール

INSTALL_MOD_PATH= をつけてカーネルモジュールをインストール

$ make ARCH=arm64 O=$TEGRA_KERNEL_OUT INSTALL_MOD_PATH=$TEGRA_KERNEL_OUT -j`nproc` modules_install

関連

https://zenn.dev/tetsu_koba/articles/ba03e670b7e50e

Discussion