Kernel Image update does not work on some systems

Good day,

I have compiled a kernel Image since I need a custom integration for CSI cameras.
I have two AGX Xavier where in one of them the kernel Image update was successful and in the other nothing seems to happen.

After compiling the kernel I simply copy the Image file into the jetson with the following:

@host: scp Image user@jetson-xavier-agx:/home/user/
@agx: sudo cp /boot/Image /boot/Image_previous
@agx: sudo mv Image /boot/Image
@agx: sync
@agx: sudo reboot

As you can see in the attached picture, both Image files have the same sha1sum but the kernel name is still the old one.

Could someone help me do this without using the script?

Many thanks,

Instead of flashing you could just name the file in the extlinux.conf (this is prohibited only if security fuses are burned). What is the “/boot/extlinux/extlinux.conf” content on the failed systems? There should be an entry similar to this:
LINUX /boot/Image

These are the contents of the /boot/extlinux/extlinux.conf, they are the same in both systems.

DEFAULT primary

MENU TITLE L4T boot options

LABEL primary
      MENU LABEL primary kernel
      LINUX /boot/Image
      INITRD /boot/initrd
      APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyTCU0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 rootfstype=ext4

# When testing a custom kernel, it is recommended that you create a backup of
# the original kernel and add a new entry to this file so that the device can
# fallback to the original kernel. To do this:
# 1, Make a backup of the original kernel
#      sudo cp /boot/Image /boot/Image.backup
# 2, Copy your custom kernel into /boot/Image
# 3, Uncomment below menu setting lines for the original kernel
# 4, Reboot

# LABEL backup
#    MENU LABEL backup kernel
#    LINUX /boot/Image.backup
#    INITRD /boot/initrd
#    APPEND ${cbootargs}

The only difference between the systems is that one has an SD card and the other one does not. Unfortunately I cannot remove the SD card since the AGX is already inside a water tight case.

What version of Jetpack? You may want to try copying the whole “boot” directory to the SD card.

If you are using rel-32.7.2, please apply the cboot patch here.

Looks like extlinux.conf is correct. Unless security fuses were burned, then that file placement should work. @WayneWWW mentioned a patch for R32.7.2. What release do you have? See “head -n 1 /etc/nv_tegra_release”. Maybe try that patch.

Jetpack 4.6 is installed on both systems.

$ head -n 1 /etc/nv_tegra_release
# R32 (release), REVISION: 6.1, GCID: 27863751, BOARD: t186ref, EABI: aarch64, DATE: Mon Jul 26 19:36:31 UTC 2021

@linuxdev is there any way to confirm wether the security fuses are burned?

Also, the SD card I mentioned is used only for external storage on /dev/mmcblk1

You would know if you burned the fuses. A key would have been used during the flash. The serial console boot log will mention where it gets the device tree and kernel from, and this could verify if anything comes from “/boot” (versus kernel or device tree partition). However, SD card models don’t allow security fuse burning (it doesn’t exist on that model, it is only for eMMC models). I don’t know what is going on since your extlinux.conf seemed correct.

Have you tried my suggestion? Assuming your SD is mounted as /data, you can copy your /boot to it :

sudo cp -a /boot /data

So the bootloader can read the /data/boot/extlinux/extlinux.conf from your SD.

Hi @user100090

Besides copying the files to the SD Card, how should I tell the bootloader to load from /data/boot/extlinux/extlinux.confinstead of /boot/extlinux/extlinux.conf?

If the kernel version shows the new one after the copy and reboot, you know it works from /data/boot/extlinux/extlinux.conf

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