I had to re-compile the tegra kernel to add SMB2 support (see https://devtalk.nvidia.com/default/topic/1068636/jetson-agx-xavier/please-enable-cifs_smb2-by-default-in-future-versions-of-jetpack/post/5412994/#5412994).
While this worked when compiling SMB support as built-in, I experienced some confusion and a defunct installation when trying to use the kernel modules compiled from source.
Following the steps as described in NVIDIA Tegra Linux Driver Package / Kernel Customization (https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-322/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide%2Fkernel_custom.html%23wwpID0E0ZC0HA) I will have a working kernel image at $TEGRA_KERNEL_OUT/arch/arm64/boot/Image that, after copied to /Linux_for_Tegra/kernel/Image and running:
./flash.sh jetson-xavier mmcblk0p1
Boots and works fine.
The kernel modules remain the same (dated 10-dec-2019), even if I follow the instructions to create kernel_supplements.tbz2 and copy it to Linux_for_Tegra/kernel/kernel_supplements.tbz2.
The reason is that apply_binaries.sh (if called without -t) disregards the file kernel_supplements.tbz2 and calls Linux_for_Tegra/nv_tegra/nv-apply-debs.sh, which in turn installs kernel modules from: Linux_for_Tegra/kernel/nvidia-l4t-kernel-4.9.140-tegra-xxx.deb
The same .deb package contains a kernel image too (boot/Image), BUT that on is later overwritten by the one I copied to Linux_for_Tegra/kernel/Image.
If instead I use apply_binaries.sh -t kernel/kernel_supplements.tbz2, and flash the device with the resulting root filesystem, then it will boot, have the EULA accepted and the system configured, but then it does not allow logging in with the initial user created during the setup. The screen goes blank, but then I am back at the login screen. I can log in text mode on console 2, but could not figure out what is blocking the graphical login when using the fresh compiled kernel modules instead of the stock ones. I did not change the kernel configuration apart from enabling SMB2 and compiling it as built-in instead of module.
So I have two problems:
What is confusing is that the document Kernel customization does not mention that apply_binaries.sh shall be used with the -t parameter, otherwise it will silently disregard my new kernel modules and install the pre-packaged ones
What is bad is that if I manage to flash the device with the newly built kernel modules, graphical login does not work.
Did I misinterpret the instructions?
Can you suggest how to compile and install kernel modules in a way that I have a fully operational system afterwards?