NVIDIA Tegra AGX Xavier flash kerenl error

I want to update kernel image …

  1. use flash.sh
    ./flash.sh -r -k kernel jetson-xavier mmcblk0p1
    After the execution is still the original kernel image

  2. replacing /boot/Image, it will fail to start

How to update KERNEL IMAGE correctly ???

If there is no Image specified in extlinux.conf, then it uses the partition kernel from the flash command. If the Image is specified in extlinux.conf, then it uses this, and the actual kernel is probably at fault for the failure. What is needed is to see the serial console boot log (which shows logs even prior to reaching Linux kernel load).

BOOT_ORG Use the original KERNEL IMAGE
BOOT_ERR Replace /boot/Image

Comparing BOOT_ERR and BOOT_ORG found an error message

E> digest on binary did not match!!
C> OEM authentication of kernel payload failed!
W> Failed to validate kernel binary (err=1077936152)
W> Security fuse not burned, continue to boot

BOOT_ORG (26.2 KB)
BOOT_ERR (24.1 KB)
extlinux.conf (754 Bytes)

That error does not matter. Read the log and it says it will continue to boot.

W> Security fuse not burned, continue to boot

What did you change in your kernel?

Recompile after adding printk(“\n %s”,func);
Replace /boot/Image

Can you just build the kernel without any modification, replace the /boot/Image and see if that would have problem?

Only recompile will fail to boot

BOOT_ERR2 (199.0 KB)

What is your exact command to build the kernel?

And what is your board? Is it a custom board or devkit? Does this board ever get flashed by sdkmanager?

use SDK 32.3.1

test custom board or devkit is same

sdkmanager ??? I use flash.s command to update all image …
./flash.sh jetson-xavier mmcblk0p1
This can display the ubuntu screen normally

build kernel script
build_kernel.sh (4.5 KB)

Please follow the official document to build the kernel image first.

https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/kernel_custom.html#

My question is how to update only the kernel image
kernel dtb I can use the command
./flash.sh -r -k kernel-dtb jetson-xavier mmcblk0p1
To update properly

But the kernel image cannot be updated
./flash.sh -r -k kernel jetson-xavier mmcblk0p1

Replacing /boot/Image will cause it to fail to boot

I have seen other people’s questions and answers
But not very understanding

The compiled kernel image can be used
./flash.sh jetson-xavier mmcblk0p1
Successful boot after burning

If you are using very old release, then only ./flash.sh -r -k kernel jetson-xavier mmcblk0p1 can work.

But if you are using latest one (rel-32.5.1, rel-32.6.1), then changing the /boot/Image would work. And this one is the default method. Thus, using flash.sh would not take effect because the /boot/Image has higher priority.

And this one is of course working since the whole board gets updated.

./flash.sh jetson-xavier mmcblk0p1

Boldly speaking, I think your problem is your kernel image has problem, but not how you update the image.