1.we bringing up new custum carrier board, when we flashed new compiled kernel image changes and the kernel image is not loaded, instead it loaded with some old Image
Onanouser@tegra-ubuntu:~$ uname -a Linux tegra-ubuntu 5.15.122-tegra #1 SMP PREEMPT Thu Nov 30 10:30:37 PST 2023 aarch64 aarch64 aarch64 GNU/Linux Onanouser@tegra-ubuntu:~$
these are the steps we followed from above doc link:
link1. https://docs.nvidia.com/jetson/archives/r36.2/DeveloperGuide/SD/Kernel/KernelCustomization.html
1. In your browser, go to https://developer.nvidia.com/embedded/jetson-linux-archive.
Locate and download the Jetson Linux source files for your release.
2.Extract the .tbz2 file:
$ tar xf public_sources.tbz2 -C <install-path>/source/
3.Extract the kernel and the NVIDIA out-of-tree modules source files:
$ cd <install-path>/source
$ tar xf kernel_src.tbz2
$ tar xf kernel_oot_modules_src.tbz2
$ tar xf nvidia_kernel_display_driver_source.tbz2
4.Building the Jetson Linux Kernel
Go to the build directory:
$ cd <install-path>/source
If you are building the real-time kernel, enable the real-time configuration:
$ ./generic_rt_build.sh "enable"
5.Run the following commands to build the Jetson Linux kernel and its in-tree modules:
env set:
========
export CROSS_COMPILE_AARCH64_PATH=$HOME/projects/orin_nano/l4t-gcc/aarch64--glibc--stable-2022.08-1/bin/
export CROSS_COMPILE=$HOME/projects/orin_nano/l4t-gcc/aarch64--glibc--stable-2022.08-1/bin/aarch64-buildroot-linux-gnu-
Compile kernel:
$ make -C kernel
6. Run the following commands to install the kernel and in-tree modules:
$ export INSTALL_MOD_PATH=$HOME/projects/orin_nano/Linux_for_Tegra/rootfs/
$ sudo -E make install -C kernel
$ cp kernel/kernel-jammy-src/arch/arm64/boot/Image $HOME/projects/orin_nano/Linux_for_Tegra/kernel/Image
Then kerel image is actually loaded from SD card.
Maybe you can add some custom suffix to the kernel version name to better see if the new image is really taking effect.
Like 5.15.122-tegra-test.
yes we can verify that way, bu we feel new image is not loaded, we have selected some syfs config for gpio and that too not showing in
$ zcat /proc/config.gz
ok we will do that, initially when we tried it was thronging some sinature issues, so we were flashing all the time.
where to change kernel version name in kernel sources?
OK, the logic is that aside from Linux_for_Tegra/kernel/Image, another copy of kernel image lives in Linux_for_Tegra/rootfs/boot/Image, so if you want to re-flash everything, you have to replace both files.
For debug purposes, replacing /boot/Image on the storage device is enough, and there is really no need to re-flash the whole device just to update the kernel image.
after booting the image from that /boot/Image copying method, the network interfaces are not working, not showing in the ifconfig list, are we missing any thing here
Kernel modules/drivers and kernel image itself have to match each other.
If you change the kernel version, or modify any code/config in kernel, causing the CRC checksum to change, old drivers that are built with a different kernel will fail to load.