Build L4T with one change, flash it, and get dmesg right after boot
cd ~/Downloads/Linux_for_Tegra
# Make a change:
vi ./source/kernel/kernel-noble/init/main.c
pr_notice("%s", linux_banner);
pr_notice("Hello, kernel!\n");
cd ~/Downloads/Linux_for_Tegra/source
export CROSS_COMPILE=$HOME/l4t-gcc/x-tools/aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-
make -C kernel
make: Entering directory '/home/demo-user/Downloads/Linux_for_Tegra/source/kernel'
================================================================================
Building kernel-noble sources
================================================================================
make \
ARCH=arm64 \
-C /home/demo-user/Downloads/Linux_for_Tegra/source/kernel/kernel-noble \
LOCALVERSION=-1021-tegra \
defconfig
make[1]: Entering directory '/home/demo-user/Downloads/Linux_for_Tegra/source/kernel/kernel-noble'
*** Default configuration is based on 'defconfig'
#
# No change to .config
#
make[1]: Leaving directory '/home/demo-user/Downloads/Linux_for_Tegra/source/kernel/kernel-noble'
make -j 16 \
ARCH=arm64 \
-C /home/demo-user/Downloads/Linux_for_Tegra/source/kernel/kernel-noble \
LOCALVERSION=-1021-tegra \
--output-sync=target Image
CALL scripts/checksyscalls.sh
CC init/main.o
AR init/built-in.a
AR built-in.a
AR vmlinux.a
LD vmlinux.o
OBJCOPY modules.builtin.modinfo
GEN modules.builtin
GEN .vmlinux.objs
MODPOST vmlinux.symvers
UPD include/generated/utsversion.h
CC init/version-timestamp.o
KSYMS .tmp_vmlinux0.kallsyms.S
AS .tmp_vmlinux0.kallsyms.o
LD .tmp_vmlinux1
NM .tmp_vmlinux1.syms
KSYMS .tmp_vmlinux1.kallsyms.S
AS .tmp_vmlinux1.kallsyms.o
LD .tmp_vmlinux2
NM .tmp_vmlinux2.syms
KSYMS .tmp_vmlinux2.kallsyms.S
AS .tmp_vmlinux2.kallsyms.o
LD vmlinux
NM System.map
SORTTAB vmlinux
OBJCOPY arch/arm64/boot/Image
make -j 16 \
ARCH=arm64 \
-C /home/demo-user/Downloads/Linux_for_Tegra/source/kernel/kernel-noble \
LOCALVERSION=-1021-tegra \
--output-sync=target dtbs
make -j 16 \
ARCH=arm64 \
-C /home/demo-user/Downloads/Linux_for_Tegra/source/kernel/kernel-noble \
LOCALVERSION=-1021-tegra \
--output-sync=target modules
CALL scripts/checksyscalls.sh
MODPOST Module.symvers
================================================================================
Kernel Image: /home/demo-user/Downloads/Linux_for_Tegra/source/kernel/kernel-noble/arch/arm64/boot/Image
Kernel sources compiled successfully.
================================================================================
make: Leaving directory '/home/demo-user/Downloads/Linux_for_Tegra/source/kernel'
# Install the new kernel
cd ~/Downloads/Linux_for_Tegra/source
export INSTALL_MOD_PATH=/home/demo-user/Downloads/Linux_for_Tegra/rootfs
sudo -E make install -C kernel
cp kernel/kernel-noble/arch/arm64/boot/Image /home/demo-user/Downloads/Linux_for_Tegra/kernel/Image
output:
sudo_-E_make_install_-C_kernel.out
# Try to power off, force recovery, and power on:
cd ~/Downloads/Linux_for_Tegra
./tools/board_automation/boardctl -t thor-jetson recovery
This ^^^ returns an error.
Do it manually: from power off, press and hold the middle button, power on while still holding the middle button, press the right button while holding the middle button, wait a few seconds after you see the Ethernet light. Release both buttons.
# Flash
cd ~/Downloads/Linux_for_Tegra
sudo ./flash.sh jetson-agx-orin-devkit internal