For reference for other people reading this (I’m trying to be a bit general), the L4T release (which you show as R36.4.3) is just Ubuntu plus NVIDIA drivers. The list of software and docs for a given L4T release is here:
https://developer.nvidia.com/linux-tegra
Your specific case:
https://developer.nvidia.com/embedded/jetson-linux-r3643
Within this you will see one source download for the sample root filesystem, which is the Ubuntu software without NVIDIA drivers. The other source is a package containing packages, and has what you are after:
Driver Package (BSP) Sources
This produces file public_sources.tbz2
. To see a list of all tar packages within the main tar package:
tar --list -f public_sources.tbz2
To filter for just the kernel software, including out-of-tree:
tar --list -f public_sources.tbz2 | egrep -i kernel
Now let’s say you want just the kernel source itself, which is what most people will want; this is file kernel_src.tbz2
within that source. The full path is needed, which happens to be “Linux_for_Tegra/source/kernel_src.tbz2
”. Here we extract just that file (there is more than one way to do this):
tar xv Linux_for_Tegra/source/kernel_src.tbz2 -jf ~/Downloads/public_sources.tbz2
The “xv
” is verbose extract, and putting a path after this instead of going straight to the original package name implies you are extracting only that subset of files. The “jf
” means bzip2
decompression of a file (“f
”). This extracts the kernel source, but puts it in a relative subdirectory from where you extracted (which presumably would be from the parent directory of “Linux_for_Tegra/
”):
<parent directory of this>/Linux_for_Tegra/source/kernel_src.tbz2
You would then “cd /Linux_for_Tegra/source/
” and unpack kernel_src.tbz2
:
tar xvfj kernel_src.tbz2
If you were to unpack the out-of-tree content from the parent directory of Linux_for_Tegra/
, then everything would go to the correct place, and you’d again extract sub-packages from the “Linux_for_Tegra/source/
”.
Note that in R36.x this source is mainline, but no doubt you’ll want to take your running kernel’s config (copy from “/proc/config.gz
” to somewhere safe, and note “uname -r
” since the suffix tells you CONFIG_LOCALVERSION
; this is normally “-tegra
”) and start with that. The default config from mainline is the “defconfig
” make
target, but NVIDIA will ship with some other items enabled (I think there are minor differences, but perhaps not). config.gz
is a reflection of the running kernel’s exact configuration at the time of build, except that it lacks the CONFIG_LOCALVERSION
.