はじめに
本記事はJetson Nanoのカーネルを再コンパイルするための方法について記述する。基本的には普通のLinuxのためJetson Nanoだからと言って新しい部分があるわけではない。しかし不要なモジュールはどんどん削除していつかはスリム化したいので書き留めておく。
事前準備
最初にuname
でカーネルのバージョンを把握しておく。
ターミナル
$ uname -a
Linux jetson-nano 4.9.140-tegra #1 SMP PREEMPT Wed Mar 13 00:32:22 PDT 2019 aarch64 aarch64 aarch64 GNU/Linux
4.9.140-tegra
がカーネルのバージョンであり、バージョン4、パッチレベル9、サブレベル140、フレーバはtegraになる。
またコンパイルに備えて最大パフォーマンスにしておく。
ターミナル
sudo jetson_clocks
カーネルソースのダウンロード
ターミナル
wget https://developer.nvidia.com/embedded/dlc/l4t-sources-32-1-jetson-nano -O l4t-sources-32-1-jetson-nano.tar.gz
これを展開する。
ターミナル
tar xvf l4t-sources-32-1-jetson-nano.tar.gz
するとpublic_sourcesというディレクトリ配下にソースコードが展開される。
ターミナル
cd public_sources
ls *.tbz2
下記のファイル群が含まれている。
FreeRTOSV8.1.2_src.tbz2
gstegl_src.tbz2
gstjpeg_src.tbz2
gst-nvvideo4linux2_src.tbz2
gstomx1_src.tbz2
kernel_src.tbz2
libgstnvvideosinks_src.tbz2
nvgstapps_src.tbz2
nvsample_cudaprocess_src.tbz2
u-boot_src.tbz2
v4l2_libs_src.tbz2
kernel_src.tbz2
がカーネルソースなのでこれを展開する。
ターミナル
tar xvf kernel_src.tbz2
kernel
とhardware
というディレクトリが作成される。
ターミナル
cd kernel/kernel-4.9
ソースコードのバージョンを確認
ターミナル
grep VERSION -m1 -A4 Makefile
結果は次の通り。
VERSION = 4
PATCHLEVEL = 9
SUBLEVEL = 140
EXTRAVERSION =
NAME = Roaring Lionus
現在のconfigファイルをコピーする。
ターミナル
zcat /proc/config.gz > .config
コンパイルする。
ターミナル
make oldconfig
make prepare
make modules_prepare
make -j4 Image
make -j4 modules
インストールする。
ターミナル
sudo make modules_install
sudo cp -p /boot/Image /boot/Image.org
sudo cp arch/arm64/boot/Image /boot/Image
あとは再起動。
おまけ
make menuconfig
をする人はcursesライブラリが必要。
ターミナル
apt install -y libncurses5-dev