System loads but doesn't show GUI after kernel update

Hello.
I try to build the kernel image for 35.6.2 (kernel_src.tbz2 from public source)
I am using AGX Orin.
I do the default workflow:
make ARCH=arm64 O=~/JetsonOrin/kernel_build tegra_defconfig
make ARCH=arm64 O=~/JetsonOrin/kernel_build menuconfig
export LOCALVERSION=-tegra make ARCH=arm64 O=$HOME/JetsonOrin/kernel_build -j8
make ARCH=arm64 O=~/JetsonOrin/kernel_build -j$(nproc) dtbs
make ARCH=arm64 O=~/JetsonOrin/kernel_build -j$(nproc) modules
make ARCH=arm64 O=~/JetsonOrin/kernel_build modules_install

Then I replace the Image , modules and dtbs just copying it at host machine to Jetson related dirs.
After all I flash:
sudo ./tools/l4t_create_default_user.sh -u agx -p 1111 --accept-license
sudo ./flash.sh jetson-agx-orin-devkit internal

I see that system loads normal in UART console.
Although the screen is black.
In command line I try: lsmod | grep nvidia
The output is empty.
Also I try:
cat /var/log/Xorg.0.log | grep -E "EE|WW"
This says that interactive mode start was failed.

What is wrong I am doing?
Thanks.

Hello @axentsky

Could you please follow the instructions at NVIDIA Jetson Orin AGX - Building the Kernel, OoT Modules and DTBs with JetPack 6.1 and check if that works for you?

Please, let us know how it goes!
Best regards!
Eduardo Salazar
Embedded SW Engineer at RidgeRun

Contact us: support@ridgerun.com
Developers wiki: https://developer.ridgerun.com/
Website: www.ridgerun.com

Hello @EduardoSalazar96
Jetpack 6+ works fine.
Although I strongly chained with Jetson Linux 35.6.2 (JP 5.1.5).
The problem is with this.
I found that something is wrong with modules implementation.
If I update only Image and DTB’s - the system starts GUI normally.
Until I update (copy) modules via:
sudo cp -arfv $ORIN_KER_SRC/modules/lib rootfs/usr
Thanks.

Hello @axentsky

Have try flashing the AGX Orin with a fresh JetPack 5.1.5 image, building the binaries and copying them to the board?

You can take the instructions in our NVIDIA Jetson Orin Nano - Compiling Source Code as guidance to compile the Kernel Image.

To copy it to the board, you can take the following commands as a reference:

Copy kernel modules

rsync -avz -e ssh modules_out/modules/lib/modules/<agx_orin_modules>/ board_user@board_ip:/tmp/

** Copy kernel Image**

scp kernel_out/arch/arm64/boot/Image board_user@board_ip:/tmp/

Then, from the board

Move modules to modules directory: first, make a backup of the current modules

cd /usr/lib/modules 
sudo mv <agx_orin_modules> <agx_orin_modules>_bkp

Then, copy the modules

sudo mv /tmp/<agx_orin_modules> .

Copy kernel Image

cd /boot 
sudo mv /tmp/Image Image.test

Add a new label to extlinux.conf: this will allow you to select the kernel to boot at boot time. Edit /boot/extlinux/extlinux.conf and add the following at the end of the file.

Note: Copy the same APPEND field from the primary label to the TEST label. The following is just a reference:

LABEL test
      MENU LABEL TEST kernel
      LINUX /boot/Image.test
      FDT /boot/dtb/<agx_orin_device_tree>
      INITRD /boot/initrd
      APPEND ${cbootargs} root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 mminit_loglevel=4 console=ttyTCU0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 rootfstype=ext4 video=efifb:off nv-auto-config

After this, double-check that your extlinux.conf file has 2 labels: primary and TEST, and the primary label is the default.

DEFAULT primary

Reboot the board: When the board is booting, you will be asked to select a label to boot:

Enter to continue boot.
**  WARNING: Test Key is used.  **
......
      L4TLauncher: Attempting Direct Boot
L4T boot options
0: primary kernel
1: TEST kernel
Press 0-1 to boot selection within 3.0 seconds

Type 0 or let it boot with the primary label. Type 1 to boot with TEST kernel.

I suggest using the serial console for this test.

Please let us know if this helps.
Best regards!