# Before
$ cat /proc/version
Linux version 4.9.337-tegra (gcc version 7.3.1 20180425 (Linaro GCC 7.3-2018.05) ) #1 SMP PREEMPT Thu Jun 8 21:19:14 PDT 2023
# After
$ cat /proc/version
Linux version 4.9.337-tegra-customX (gcc version 7.5.0 (Linaro GCC 7.5-2019.12) ) #1 SMP PREEMPT Mon Jun 17 10:42:29 UTC 2024
まずこちらのGitをクローンしてください
1.l4tのカーネルをダウンロードして解凍する
執筆時の最新版は r32_release_v7.4
wget https://developer.nvidia.com/embedded/l4t/r32_release_v7.4/sources/t210/public_sources.tbz2
tar -xjf public_sources.tbz2
rm -f public_sources.tbz2
cd Linux_for_Tegra/source/public
tar -xjf kernel_src.tbz2
2.コンパイルコンテナーを作成します
執筆時のLinaro7.x系の最新版は GCC 7.5-2019.12
$ docker build . -t hexaforce/jetson-kernel-rebuilder
3.1 メディアカードリーダーの[MOUNTPOINTS]を確認する
$ lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sdb 8:16 1 29.5G 0 disk /run/media/{xxxx-USB-xxxx}
3.2 コンパイルコンテナーでビルド
{xxxx-USB-xxxx}は上記で出力されたもの
- コンテナ内からホストのUSBを参照します
$ docker run --privileged --rm -it \
-v $(pwd)/Linux_for_Tegra:/Linux_for_Tegra \
-e LOCALVERSION=-tegra-customX \
-v /run/media/{xxxx-USB-xxxx}:/usb \
hexaforce/jetson-kernel-rebuilder
4.1 ビルドコンテナの[CONTAINER ID]を確認する
$ docker ps
CONTAINER ID IMAGE COMMAND
{xxxx-ID-xxxx} hexaforce/jetson-kernel-rebuilder "bash /docker-entryp…"
4.2 コンテナーに侵入
{xxxx-ID-xxxx}は上記で出力されたもの
$ docker exec -it {xxxx-ID-xxxx} bash
5.1 SDカードのImageとdtbを上書きする
sudo cp $TEGRA_KERNEL_OUT/arch/arm64/boot/Image /usb/boot/Image
sudo cp -r $TEGRA_KERNEL_OUT/arch/arm64/boot/dts/* /usb/boot/dtb
5.2 SDカードにカーネルモジュールをインストールする
sudo make ARCH=arm64 O=$TEGRA_KERNEL_OUT modules_install INSTALL_MOD_PATH=/usb