What is 4.9.140-tegra+? How to boot 4.9.140-tegra instead?

JetPack 4.2.2

I need to build a driver and the link of the build in module is:

~/nvidia/nvidia_sdk/JetPack_4.2.2_Linux_GA_P3310/Linux_for_Tegra$ ls -l rootfs/lib/modules/4.9.140-tegra+/build
lrwxrwxrwx 1 root root 45 Dec 16 13:30 rootfs/lib/modules/4.9.140-tegra+/build -> /usr/eadams/trunk_tx2_32.2.1/tegra_kernel_out

This links to nothing.

Who can help me?



You might check this out:

Note that source_sync.sh (mentioned in above URLs) recognizes these example tags for kernels (the “-u” is for U-Boot):

./source_sync.sh -k tegra-l4t-r28.1
./source_sync.sh -k tegra-l4t-r32.2.0
./source_sync.sh -k tegra-l4t-r28.1
./source_sync.sh -k tegra-l4t-r32.2.3-1

I mention this because if you use source_sync.sh for download of source, then you need to know the name of the tag. “source_sync.sh” is itself found in the “Linux_for_Tegra/” directory of the flash software. You can also download from NVIDIA without the script, but I prefer using source_sync.sh.

To know your L4T version, see “head -n 1 /etc/nv_tegra_release”.

Thank you @linuxdev for your detailed answer…
I am surprised that I need to compile the kernel while for the version 4.9.140-tegra I didn’t need, the symbolic link of /lib/modules/build linked to a correct location.
I thought to change the symbolic link from /usr/eadams/trunk_tx2_32.2.1/tegra_kernel_out
to /usr/src/linux-headers-4.9.140-tegra-ubuntu18.04_aarch64/kernel-4.9/

Would it be OK?


As long as you reference the right headers (complete headers) you will be ok. Do take careful note in the referenced thread that the “uname -r” with a “+” on the end needs to be fixed if you wish to use the original modules. The “+” will cause searching in the wrong place and all modules would be missing unless you built those too.

A reason I suggest via the source_sync.sh is that there are relative paths in the kernel source, and if certain Tegra features are enabled, then those relative paths will search outside of the purely kernel source tree. Those alternate paths added with source_sync.sh have everything. Location of using this is up to you.