On a system with a non-modified kernel I recommend saving a copy of “/proc/config.gz” for reference. Start with this as your initial configuration, adjust CONFIG_LOCALVERSION (usually CONFIG_LOCALVERSION=“-tegra” if you want to reuse existing modules), and then edit any config. You are guaranteed starting with an exact match to the existing system and modules currently installed if you do this, whereas the _defconfigs do not guarantee this.
What was your original base configuration and what were your edits to kernel config? What was your “CONFIG_LOCALVERSION”?
I copied “/proc/config.gz” from official system, and compared it with “$TEGRA_KERNEL_OUT/.config” compiled via the command as follow:
make ARCH=arm64 O=$TEGRA_KERNEL_OUT tegra_defconfig
The result is the two files are identical, with the contents about “CONFIG_LOCALVERSION” as follows:
#
# General setup
#
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_CROSS_COMPILE=""
# CONFIG_COMPILE_TEST is not set
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_DEFAULT_HOSTNAME="(none)"
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
CONFIG_POSIX_MQUEUE_SYSCTL=y
CONFIG_CROSS_MEMORY_ATTACH=y
CONFIG_FHANDLE=y
# CONFIG_USELIB is not set
CONFIG_AUDIT=y
CONFIG_HAVE_ARCH_AUDITSYSCALL=y
CONFIG_AUDITSYSCALL=y
CONFIG_AUDIT_WATCH=y
CONFIG_AUDIT_TREE=y
#
# Tegra BPMP Driver
#
CONFIG_ARCH_TEGRA_18x_SOC=y
CONFIG_ARCH_TEGRA_19x_SOC=y
CONFIG_ARCH_TEGRA_23x_SOC=y
Is there any error in the above config? Thanks in advance.
By the way, I used “gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu” as the compiler and compiled the kernel on Ubuntu-18.04.
Jetson TX2 uses U-Boot. The kernel partition contains the U-Boot binary rather than the kernel on this platform (same for TX1 in recent L4T releases). You should write any updated kernel to the /boot directory in the filesystem, rather than using flash.sh. IIRC, if the kernel DTB changed, you will need to use flash.sh to update the kernel-dtb partition. Updated kernel modules need to be written to the correct location in /lib/modules/…
Early on the Image file was used in “/boot”, but later this became part of a partition. I have not yet been able to work with R32.x (working on an Ubuntu laptop which ran out of battery power during upgrade…didn’t go well), but is the Image file in R32.x back in “/boot”? That would be good news.
For Jetson TX1 and TX2, the kernel has always been in /boot as far as I can recall. The location varies depending on board generation; for Jetson AGX Xavier, the kernel is always loaded from a partition.
EDIT: My bad: I forgot that we did indeed modify U-Boot to pass the DTB from cboot to the kernel rather than loading a fresh DTB from disk. I think the DTB is still copied into /boot even so, but that copy is simply not used. Sorry for the confusion.