Flashing Jetson AGX XAVIER kernel -- error

To change the kernel for Jetson AGX XAVIER, I have downloaded the Kernel Source Code and tool chain for x86 Ubuntu.
Then I changed the kernel files related to PCI bus, such as

  1. drivers/pci/dwc/pcie-designware-host.c
  2. drivers/pci/pci-driver.c
  3. drivers/pcie/pme.c
  4. drivers/pci/probe.c

Following the instruction “Kernel Customization”, I made new kernel image without errors.
To flashing the new kernel, in Kernel_for_Tegra directory,
I use the below command in recovery mode of Jetson AGX XAVIER:

$ ./flash.sh -k kernel jetson-agx-xavier-devkit mmcblk0p1

Flashing command is well done as like:
*** The [kernel] has been updated successfully. ***

But Jetson AGX XAVIER is booting using old kernel, not newly generated kernel.
I have attached the log file from flash.sh.

flash-log.txt (43.8 KB)


Because after jetpack4.3, xavier is using extlinux to boot up, the kernel could be replaced by directly copy&paste Image to /boot/Image.

I have replaced “/boot/Image” into new “Image” file.
When booting, “Failed to start Load Kernel Modules” is appeared.
And then screen is of/off repeatedly.
After booting error, I install again using NVIDIA SDK MANAGER

This indicates that you did not preserve the “CONFIG_LOCALVERSION”. As a result it expects modules to be somewhere else.

The command “uname -r” is a result of the base kernel verison, plus the suffix of “CONFIG_LOCALVERSION”. When NVIDIA makes these kernels the suffix is “-tegra”.

The kernel searches for modules at:
/lib/modules/$(uname -r)/kernel/

What is your “uname -r”? Do you have directory /lib/modules/$(uname -r)/kernel/?

Thanks linuxdev,
I did not define “CONFIG_LOCALVERSION” when making new kernel.
I defined ‘CONFIG_LOCALVERSION’ to “-tegra” and made new kernel.
Then booting in new kernel is OK !

1 Like