qshinoの日記

Powershell関係と徒然なこと

Jetson TX2 JetPack 4.2 kernel compile

Build Jetson TX2 R32.1 kernel

下記は検証用の下書き。検証後に修正の可能性あり。

Downoad packages

  1. ドライバパッケージ
  2. ソースパッケージ
  3. サンプルルート
  4. ツールチェイン

をダウンロードする。

Extract pkg

top=$PWD  # here is top

# 設定

expand=1 # pkgを展開する場合。
mproc=2 # makeのprocess数

# 定数設定

spkg=JAX-TX2-public_sources.tbz2
dpkg=Jetson_Linux_R32.1.0_aarch64.tbz2
rpkg=Tegra_Linux_Sample-Root-Filesystem_R32.1.0_aarch64.tbz2

kpkg=kernel_src.tbz2 # in $spkg
kk=kernel/kernel-4.9
l4=Linux_for_Tegra
ps=public_sources

ccc=$top/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- 

out=$top/$kk/build 
mout=$top/$l4/rootfs/

boot=$out/arch/arm64/boot
dtb=tegra186-quill-p3310-1000-c03-00-base.dtb
dtb_xavier=tegra194-p2888-0001-p2822-0000.dtb

# expand packages

if [ "x$expand" == "x1" ]  ; then
  tar jxvf $spkg
  tar jxvf $ps/$kpkg
  tar jxvf $dpkg
  tar jxvf $rpkg -C rootfs
fi

build kernel

cd $kk

export O=$out
export INSTALL_MOD_PATH=$mout
export ARCH=arm64
export CROSS_COMPILE=$ccc

# get default config
make tegra_defconfig 

# edit config
make menuconfig 

# to check modifications if you like
# make oldconfig

# if necessary
# make prepare
# make modules_prepare

make -j${mproc}

# kernel modules dtbsを個別ビルドしたい場合は、下記にて。

# build kernel
# make -j${mproc} Image 

# build dtbs
# make -j${mproc} dtbs 

# build modules
# make -j${mproc} modules 

# install modules
make modules_install

External module

mdir=外部モジュール
# mdir=$top/kernel/nvidia

pushd $mdir
make -C $kk -M $mdir
popd

Install to dpkg dir

cd $top/$l4

# copy kernel
cp $boot/Image kernel/

# copy dtb
cp $boot/dts/$dtb kernel/dtb

# pack module
ks=kernel_supplements.tbz2
tar --owner root --group root -cjf kernel/$ks  lib/modules -C $mout

# build binaries
./apply_binaries.sh

Flash

# after tx2 enter frb mode
sudo ./flash.sh jetson-tx2 mmcblk0p1 

ダウンロード toolchain and source package

topが定義された後に下記のコード。

cd $top

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

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 Jxf -

ソースパッケージ

wget https://developer.download.nvidia.com/embedded/L4T/r32_Release_v1.0/jax-tx2/BSP/JAX-TX2-public_sources.tbz2

サンプルルート

tbd

ドライバパッケージ

tbd

refs

https://developer.ridgerun.com/wiki/index.php?title=Compiling_Jetson_TX2_source_code_L4T_32.1

make oldconfig

https://stackoverflow.com/questions/4178526/what-does-make-oldconfig-do-exactly-in-the-linux-kernel-makefile