JetPack 6 Compiling Source Code
Learning to build the BSP and OS components enables developers to customize the software for their specific project needs.
This section will guide you through the process of building the BSP and OS components for the NVIDIA Jetson Orin. For this section you are going to need Jetpack 6 for Orin AGX installed on your host computer.
Assumptions
- The build of the BSP/OS components source code will be performed by cross-compiling on a host computer running a Linux OS.
- Make sure the following dependencies are installed on your system:
- wget
- lbzip2
- build-essential
- bc
- zip
- libgmp-dev
- libmpfr-dev
- libmpc-dev
- vim-common # For xxd
In Debian-based systems you can run the following:
sudo apt install wget lbzip2 build-essential bc zip libgmp-dev libmpfr-dev libmpc-dev vim-common
Downloading and compiling
Download the JetPack sources
You can obtain the JetPack 6 sources by doing the following:
1. Go to https://developer.nvidia.com/embedded/jetson-linux-archive and download the source files for your release.
2. Extract the .tbz2 file:
mkdir ${HOME}/nvidia-jetson tar xf Jetson_Linux_R36.0.0_aarch64.tbz2 -C ${HOME}/nvidia-jetson/ sudo tar xpf Tegra_Linux_Sample-Root-Filesystem_R36.0.0_aarch64.tbz2 -C \ ${HOME}/nvidia-jetson/Linux_for_Tegra/rootfs cd ${HOME}/nvidia-jetson/Linux_for_Tegra
3. Download sources:
cd ${HOME}/nvidia-jetson/Linux_for_Tegra sudo ./apply_binaries.sh ./source_sync.sh -k -t rel-36_eng_2023-10-04
Kernel build instructions
Once the sources have been downloaded, perform the following steps to build.
Install the Toolchain
First, download the Bootlin toolchain binaries from the the bootlin page.
After that do:
mkdir $HOME/l4t-gcc cd $HOME/l4t-gcc tar xf <path_to_toolchain_archive>
Build the kernel and the out-of-tree drivers
1. Get the sources from downloading the tar files.
mkdir -p ${HOME}/nvidia-jetson/build tar -xjf kernel_src.tbz2 -C ${HOME}/nvidia-jetson/build tar -xjf kernel_oot_modules_src.tbz2 -C ${HOME}/nvidia-jetson/build tar -xjf nvidia_kernel_display_driver_source.tbz2 -C ${HOME}/nvidia-jetson/build
2. Export the following variables on the command-line:
export KERNEL_HEADERS=${HOME}/nvidia-jetson/build/kernel/kernel-jammy-src export CROSS_COMPILE_AARCH64=</path/to/aarch64-cross-compiler>
3. Copy over the Makefiles “Makefile.kernel_oot_modules_src” and “Makefile.kernel_src” using the commands below. These two makefiles should be part of the released items for this release.
cp Makefile.kernel_oot_modules_src ${HOME}/nvidia-jetson/build/Makefile cp Makefile.kernel_src ${HOME}/nvidia-jetson/build/kernel/Makefile
4. Build
cd ${HOME}/nvidia-jetson/build make -C kernel clean make clean make -C kernel make modules
5. Install (Optional): If you plan to install the NVIDIA out-of-tree drivers to a rootfs directory, use the following steps:
export INSTALL_MOD_PATH=</path/to/rootfs> sudo -E make -C kernel install sudo -E make modules_install
Build NVIDIA out-of-tree drivers only
build NVIDIA out-of-tree drivers only - 1. Get the sources from the downloaded tar files.
mkdir -p ${HOME}/nvidia-jetson/build tar -xjf kernel_oot_modules_src.tbz2 -C ${HOME}/nvidia-jetson/build tar -xjf nvidia_kernel_display_driver_source.tbz2 -C ${HOME}/nvidia-jetson/build
2. Export the following variables on the command-line:
export KERNEL_HEADERS=</path/to/Linux/headers> export CROSS_COMPILE_AARCH64=</path/to/aarch64-cross-compiler>
3. Copy over the makefile “Makefile.kernel_src” using the command below. This makefile should be part of the released items for this release.
cp Makefile.kernel_src ${HOME}/nvidia-jetson/build/kernel/Makefile
4. Build
cd ${HOME}/nvidia-jetson/build make clean make modules
5. Install (Optional): If you plan to install the NVIDIA out-of-tree drivers to a rootfs directory, use the following steps:
export INSTALL_MOD_PATH=</path/to/rootfs> sudo -E make modules_install