Hello, I encountered a problem when compiling R35.1, and I need your help, thank you.
I followed the “Manually Downloading and Expanding Kernel Sources” in the operation manual, unpacked the source code file, and compiled the source code with the following command:
make ARCH=arm64 O=$PWD/kernel_out tegra_defconfig
make ARCH=arm64 O=$PWD/kernel_out -j8
But when the “make menuconfig ” command is used in the kernel_out directory, an error is reported.
drivers/video/Kconfig:27: can't open file "drivers/video/tegra/Kconfig"
It can run successfully in this directory. What is the reason? Shouldn’t I run make menuconfig in the “$PWD/kernel_out” directory to generate different kernel image files?
No, I created the kernel_out folder separately. But to execute make menuconfig under the corresponding kernel_out folder, there will be the above alarm. Execute make menuconfig in the kernel-5.10 directory, but there is no .config file in the kernel-5.10 directory. So, when make menuconfig is executed under kernel-5.10, which .config file is called?
This step creates a .config in the “$PWD/kernel_out”: make ARCH=arm64 O=$PWD/kernel_out tegra_defconfig
Then this step edits the “.config” in “$PWD/kernel_out”: make ARCH=arm64 O=$PWD/kernel_out menuconfig
Note that if there is a complaint about: drivers/video/Kconfig:27: can't open file "drivers/video/tegra/Kconfig"
…then it is missing in the source. This should not occur and would not be related to any of your commands. This would probably be an incorrect source download of some sort.
Hello, I just tested it. Using the command you gave, execute “make ARCH=arm64 O=$PWM/kernel_out menuconfig” in the /kernel/kernel-5.10 directory, and it can run successfully. But when I execute make menuconfig in the “$PWD/kernel_out” directory, an error is reported
Is that error the previously mentioned one which I quoted above? If so, from the kernel source top directory, does “drivers/video/tegra/” exist? If so, is there a Kconfig and Makefile in that directory? Is any of this owned by root and not readable without being root?
Incidentally, that is the correct download for the kernel source.
I can verify the source code is missing the required content on this release, but has it on another release. However, if this was intended to be missing, then the Kconfig and Makefile would have required an update to prevent this. So I am thinking NVIDIA will likely need to update the source code download to include that directory.
I extracted just the kernel source via: tar xvfj public_sources.tbz2 Linux_for_Tegra/source/public/kernel_src.tbz2
I then went to subdirectory Linux_for_Tegra/source/public, and unpacked that: tar xvfj kernel_src.tbz2
From there: cd cd kernel/kernel-5.10/drivers/video/
I should have found “tegra/” (which would contain a Kconfig and Makefile, which it did contain in prior releases, and which current Kconfig still refers to), but did not. It is indeed missing.
It sounds like the Kconfig of some feature in the main kernel might be looking in the wrong place.
If I go to “Linux_for_Tegra/source/public/kernel/kernel-5.10/drivers/video”, and examine Kconfig, I see: source "drivers/video/tegra/Kconfig"
…but that is “in tree”, not “out of tree”. The “kernel/nvidia/drivers/video” is out of tree. So I think that Kconfig is wrong to search where it does rather than out of tree, unless there is another Kconfig and that particular one should not be set.
Delete your previously sources folder.
Replace Linux_for_Tegra/source_sync.sh with this one: Jetpack5.0.2 kernel compile error - #12 by ShaneCCC (I haven’t overwrited nvbuild.sh).
Then run ./source_sync.sh and type jetson_35.1 when requested.
It shall create the sources folder.
Then retry with your make commands.