New Kernel image is not reflecting

Hello team,

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:~$

2.we followed this document to flash Kernel Customization — NVIDIA Jetson Linux Developer Guide 1 documentation

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

and used below command to flash

sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device mmcblk0p1\
-c tools/kernel_flash/flash_l4t_external.xml -p "-c bootloader/generic/cfg/flash_t234_qspi.xml"\
--showlogs --network usb0 jetson-orin-nano-devkit internal

Are you really booting from the SD card?

yes the devkit SOM is having SD card option only right?, but how to confirm that its booted from sd card.

one way we confirmed: the old files which created were vanished after flashing new image.

Show me

cat /etc/nv_boot_control.conf

Onanouser@localhost:~$ cat /etc/nv_boot_control.conf
TNSPEC 3767-300-0005-K.2-1-0-jetson-orin-nano-devkit-
COMPATIBLE_SPEC 3767–0005–1–jetson-orin-nano-devkit-
TEGRA_BOOT_STORAGE mmcblk0
TEGRA_CHIPID 0x23
TEGRA_OTA_BOOT_DEVICE /dev/mtdblock0
TEGRA_OTA_GPT_DEVICE /dev/mtdblock0
Onanouser@localhost:~$

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

any command to flash only kernel? flash.sh is ok?

Just replace /boot/Image on the SD card.

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?

You have to update kernel modules under /lib/modules/ as well.

https://cateee.net/lkddb/web-lkddb/LOCALVERSION.html

Hello Dave,

Thanks for that trick to check the new kernel laoded or not,
we have loaded /boot/Image only to SD card by simply copying image,

but is there any difference in using inird flash script to write image?

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.

1 Like

Hello DaveYYY,

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

Have you done this?
This is not really related to Jetson at all. It’s just some basic Linux knowledge.

but in this document, that step for adding Image in rootfs/boot/Image.

https://docs.nvidia.com/jetson/archives/r36.2/DeveloperGuide/SD/Kernel/KernelCustomization.html

thats why we are confused

sorry we missed to add /lib/modules/. we will add it and let u know the results

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.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.