Sample_fs usage when building your own kernel

Good point. I think that step may have come from a forum post (maybe this one Agx orin custom board HDMI didn't work - #5 by WayneWWW ? )

I’ll review the code and see if it is unnecessary.

I’m in the process of recompiling everything and will report back once I’ve flashed the unit w/the new kernel.

1 Like

I applied the generated rootfs/ , completed full kernel build. and reflashed the boot SD card. Initial NVIDIA splash screen comes up, then no more video. I can still ssh into the system. I am at the same point I was on July 31 (see above).

The login message contains :

This system has been minimized by removing packages and content that are
not required on a system that users do not log into.

To restore this content, you can run the 'unminimize' command.
  1. Is that the expected behaviour of nv_build_samplefs.sh ? Isn’t the point of the desktop samplefs to have everything already ‘unminimized’ ?

  2. How do I enable the HDMI video out? We’ve established it should work with my setup, but for some reason the desktop version of build sample fs looks like it still needs some configuration

Hi,

It’s expected, and please just ignore it.
You will also see it with our sample rootfs from the download page.

Have you done this?

Also, what does /var/log/Xorg.0.log give you?

Yes - I ran depmod -a and rebooted - still no HDMI.

Here is the Xorg.0.log file - Xorg.0.log_os14_03-custom_rootfs.txt - Google Drive

I’m not seeing any discovery messages for the monitor like I was w/the fresh install and flash to SD.

Hi,

I mean did you also compile the display driver again? Not just sudo depmod -a.
Also, is the driver loaded correctly with lsmod | grep nvidia?

I followed all the steps I posted above. I thought the lines :

make ARCH=arm64 O=$KERNEL_OUT CROSS_COMPILE=$CROSS_COMPILE -j8 modules
make ARCH=arm64 O=$KERNEL_OUT INSTALL_MOD_PATH=$KERNEL_MODULES_OUT -j8 modules_install

would recompile everything I needed. Do i need to enable something in menuconfig ?

lsmod | grep nvidia

does not return any results.

Hi,

so apparently the display driver is gone.
It’s not in the upstream kernel so it won’t get compiled with steps above.
Give it a try:
https://docs.nvidia.com/jetson/archives/r35.3.1/DeveloperGuide/text/SD/Kernel/KernelCustomization.html#to-build-display-kernel-modules

Ok - I’ve figured out most of the env variables they use, but what is

SYSSRC=<KERNELSRC> \

supposed to be pointing to? I have

export KERNEL_SRC=l4t-sources-34-1

but can not figure out where I got that from and it doesn’t actually point to anything.

It’s where the kernel source code resides; for example, Linux_for_Tegra/source/public/kernel/kernel-5.10.

1 Like

I was able to compile the module. For my setup (user is /home/parallels) - I did this :

cd  /home/parallels/Linux_for_Tegra/source/public/
tar -xjfv nvidia_kernel_display_driver_source.tbz2

cd NVIDIA-kernel-module-source-TempVersion/

export KERNELSRC=~/Linux_for_Tegra/source/public/NVIDIA-kernel-module-source-TempVersion

make \
      modules \
      SYSSRC=/home/parallels/nvidia/nvidia_sdk/JetPack_5.1.1_Linux_JETSON_ORIN_NANO_TARGETS/Linux_for_Tegra/sources/kernel/kernel-5.10 \
      SYSOUT=$KERNEL_OUT \
      CC=/home/parallels/l4t-gcc/bin/aarch64-buildroot-linux-gnu-gcc \
      LD=/home/parallels/l4t-gcc/bin/aarch64-buildroot-linux-gnu-ld.bfd \
      AR=/home/parallels/l4t-gcc/bin/aarch64-buildroot-linux-gnu-ar \
      CXX=/home/parallels/l4t-gcc/bin/aarch64-buildroot-linux-gnu-g++ \
      OBJCOPY=/home/parallels/l4t-gcc/bin/aarch64-buildroot-linux-gnu-objcopy \
      TARGET_ARCH=aarch64 \
      ARCH=arm64  

Where $KERNEL_OUT is defined above.

At this point, I should start from
make ARCH=arm64 O=$KERNEL_OUT CROSS_COMPILE=$CROSS_COMPILE -j8 modules

and continue through the other steps to reflash the SD card, correct ?

Yes, and remember to copy the three .ko files into

/Linux_for_Tegra/usr/lib/modules/$(uname -r)/extra/opensrc-disp/

Everything else should be the same as your previous steps.

1 Like

I will copy my newly created files :

parallels@orindev:~/Linux_for_Tegra/source/public/NVIDIA-kernel-module-source-TempVersion$ find . -depth -print | grep ko$ | xargs ls -la
-rw-rw-r-- 1 parallels parallels  5195720 Aug  3 01:34 ./kernel-open/nvidia-drm.ko
-rw-rw-r-- 1 parallels parallels 16707120 Aug  3 01:34 ./kernel-open/nvidia.ko
-rw-rw-r-- 1 parallels parallels  2925664 Aug  3 01:34 ./kernel-open/nvidia-modeset.ko

to

/home/parallels/nvidia/nvidia_sdk/JetPack_5.1.1_Linux_JETSON_ORIN_NANO_TARGETS/Linux_for_Tegra/rootfs/usr/lib/modules/5.10.104-tegra/extra/opensrc-disp:
total 4060
-rw-r--r-- 1 root root  110249 Mar 19 11:14 nvidia-drm.ko
-rw-r--r-- 1 root root 2072553 Mar 19 11:14 nvidia.ko
-rw-r--r-- 1 root root 1971521 Mar 19 11:14 nvidia-modeset.ko

and try another build.

It is a little confusing have two different Linux_for_Tegra/ directories.

Thank you for your knowledge and patience @DaveYYY :)

Maybe a little closer ?

I rebuilt and flashed the SD card w/the new .ko files, ran sudo depmod -a; sudo reboot and still no HDMI signal.

This is after becoming root. I verified :

root@orindev14:~# lsmod | grep nvidia
root@orindev14:~# locate nvidia.ko | xargs ls -la
-rw-r--r-- 1 root root 16707120 Aug  3 07:26 /usr/lib/modules/5.10.104-tegra/extra/opensrc-disp/nvidia.ko
root@orindev14:~# depmod -a
root@orindev14:~# lsmod | grep nvidia
root@orindev14:~# insmod /usr/lib/modules/5.10.104-tegra/extra/opensrc-disp/nvidia.ko
root@orindev14:~# lsmod | grep nvidia
nvidia               1462272  0

Still nothing about the monitor in Xorg.0.log.

I see the .ko files are in /usr/lib/modules/5.10.104-tegra - those should still be found even if uname -r returns 5.10.104 , correct ?

Hi,

sorry that I got some mistakes here.

I think the correct step here is that you still run apply_binaries.sh first, then install the compiled kernel modules with

cd <path_to_kernel_source>
sudo make ARCH=arm64 O=$TEGRA_KERNEL_OUT modules_install INSTALL_MOD_PATH=<top>/Linux_for_Tegra/rootfs/

This way, you should have two folders under /usr/lib/modules/, one with the default suffix, one with your customized suffix. You may just delete the default one, and leave the one you really need. Also, the display drivers should be installed into the correct folder, i.e. the one with your customized suffix.

You actually don’t need to tar them again here.

No, they will not get loaded if the suffix does not match.

This step was just to back things up.

I have not altered my steps, but inspired by your commend about kernel suffixes and before trying anything else :

root@orindev14:/usr/lib/modules# ls
5.10.104  5.10.104-tegra
root@orindev14:/usr/lib/modules# mv 5.10.104/ hold-5.10.104/
root@orindev14:/usr/lib/modules# mv 5.10.104-tegra/ 5.10.104/
root@orindev14:/usr/lib/modules# reboot

Then

Last login: Fri Aug  4 02:59:02 2023
orin@orindev14:~$ sudo su -
[sudo] password for orin:
root@orindev14:~# lsmod | grep nvidia
nvidia_modeset       1138688  4
nvidia               1462272  9 nvidia_modeset
root@orindev14:~# tail -20 /var/log/Xorg.0.log
[    28.052] (**) Option "Device" "/dev/input/event3"
[    28.052] (**) Option "_source" "_driver/libinput"
[    28.053] (II) libinput:   mini keyboard Consumer Control: is a virtual subdevice
[    28.053] (**) Option "config_info" "udev:/sys/devices/platform/3610000.xhci/usb1/1-2/1-2.1/1-2.1:1.1/0003:1997:2433.0002/input/input3/event3"
[    28.053] (II) XINPUT: Adding extended input device "  mini keyboard Consumer Control" (type: KEYBOARD, id 11)
[    28.053] (**) Option "xkb_model" "pc105"
[    28.053] (**) Option "xkb_layout" "us"
[    31.767] (--) NVIDIA(GPU-0): Acer X223W (DFP-0): connected
[    31.767] (--) NVIDIA(GPU-0): Acer X223W (DFP-0): Internal TMDS
[    31.767] (--) NVIDIA(GPU-0): Acer X223W (DFP-0): 165.0 MHz maximum pixel clock
[    31.767] (--) NVIDIA(GPU-0):
[    32.035] (II) NVIDIA(0): Setting mode "HDMI-0: 1680x1050_60_0 @1680x1050 +0+0 {ViewPortIn=1680x1050, ViewPortOut=1680x1050+0+0}"
[    37.857] (--) NVIDIA(GPU-0): Acer X223W (DFP-0): connected
[    37.857] (--) NVIDIA(GPU-0): Acer X223W (DFP-0): Internal TMDS
[    37.857] (--) NVIDIA(GPU-0): Acer X223W (DFP-0): 165.0 MHz maximum pixel clock
[    37.857] (--) NVIDIA(GPU-0):
[    39.799] (--) NVIDIA(GPU-0): Acer X223W (DFP-0): connected
[    39.799] (--) NVIDIA(GPU-0): Acer X223W (DFP-0): Internal TMDS
[    39.799] (--) NVIDIA(GPU-0): Acer X223W (DFP-0): 165.0 MHz maximum pixel clock
[    39.799] (--) NVIDIA(GPU-0):

IT WORKS! :D

I see the HDMI output from the Xavier devkit board w/the Orin board inserted.

Thank you again @DaveYYY ! You can mark this issue resolved with my sincere gratitude.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.