Jetson nano lightweigh distro

Good afternoon, dear Nvidia! I’m going to show my students how to build and flash another distros for devboards. So, I want to use something really light weigh, but also I need CUDA to show that we didn’t loose functionality. Is this possible to run some other light distros with jetson nano now with the Cuda compatibility? I though about buildroot for the perfect, but it is any distribution will suit me. I want smth like arch, alpine or buildroot because it is possible to use this distros with the package package managers but it also light enough to use it in RAM. I also want to show my students how to RAMbooting and what is it…
I found this:
https://developer.download.nvidia.com/compute/cuda/opensource/
But I don’t know is it possible to compile this in any distros to provide Cuda in the custom distro, or it will not be working like that.
Now, how I understood it, I should install some another distro’s rootfs, but use it with the 4.9 kernel, provided by nvidia for nano specially? Or can I compile newer kernel now?

Hi,

Do you want a custom OS for the Jetson platform?
If so, please use our L4T as the base since it contains some essential drivers for the Jetson devices.

Thanks.

Thank you for your answer! I want another OS because L4T ubuntu based and it is very big. I want something small and flash to operate in RAM. So what did you mean by “use L4T as base”? I can use only kernel and lib modules but use rootfs from another OS?

Hi,

Please check our document below:

JetPack5(r35): Root File System — Jetson Linux Developer Guide documentation
JetPack4(r32): generic-no-api-public_r2

We have much more details in the r35 document so it’s recommended to upgrade your device to the Xavier or Orin series (e.g. Orin Nano?).
Below is an example from RidgeRun, they build Yocto for Jetson:

Thanks.

Thank you for your answer! It seems that that instruction is not working now. Branches with tegra support removed from yocto git:

~/work/yocto-tegra git clone -b ${BRANCH} git://git.yoctoproject.org/poky.git poky                                                                                                   
Cloning into 'poky'...
fatal: Remote branch kirkstone-l4t-r32.7.x not found in upstream origin

Being a developer working for 5 years with Jetson modules I’d strongly recommend sticking with the NVidia supplied stuff. This also means using Ubuntu and L4T. You absolutely need 1:1 binary compatibility in order to use the supplied binary libraries for GPU, Cuda, … And the flash procedure relies on having Ubuntu on both the flashing PC and the Jetson module. Using Redhat on the PC breaks the procedure due to UID/GID mismatches and other minor annoyances.

You may succeed if you have lots of time, but remember that you are going to be on your own - nobody will be able to help you.

As a (partial) sulution you could use the minimal root fs described here:
https://docs.nvidia.com/jetson/archives/r35.4.1/DeveloperGuide/text/SD/RootFileSystem.html

I’m using Manjaro and it is working good)
Then I need to build lightweght distro for nano and it is nearly impossible based on Ubuntu. I have to squeeze rootfs to 100-200 MB. Maybe 500MB-1GB maximum and I have to do it to operate in RAM. I afraid it is very hard to do such things with Ubuntu…
About minimal yes, I saw. Then I will try to prepare minimal rootfs.

I spent some time a while back trying to get Arch running with full driver support, by deriving pacman packages from the nvidia debian packages. I’d say I got about 90% there - I have a bunch of notes on my progress at GitHub - scaredyfish/arch-linux-jetson-nano: PKGBUILD files and other bits and pieces to get arch linux running on Jetson Nano

Thank you very much! I thought about arch too - one of the best option.

Hello, adcharlton! I tried to do as you wrote but I cannot boot into arch - kernel panic.
I unpacked arch to rootfs in Linux_for_Tegra, changed /boot from arch rootfs to /boot from original rootfs and also changed extlinux conf to original tegra extlinux but I receiving kernel panic. Could you tell me what it could be?

Starting log:

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.9.253-tegra (rvp@rvp-pc) (gcc version 7.3.1 20180425 [linaro-7.3-2018.05 revision d29120a424ecfbc167ef90065c0eeb7f91977701] (Linaro GCC 7.3-2018.05) ) #1 SMP PREEMPT Wed Sep 13 12:02:47 MSK 2023
[    0.000000] Boot CPU: AArch64 Processor [411fd071]
[    0.000000] OF: fdt:memory scan node memory@80000000, reg size 32,
[    0.000000] OF: fdt: - 80000000 ,  7ee00000
[    0.000000] OF: fdt: - 100000000 ,  7f200000
[    0.000000] earlycon: uart8250 at MMIO32 0x0000000070006000 (options '')
[    0.000000] bootconsole [uart8250] enabled
[    1.078763] tegradc tegradc.1: dpd enable lookup fail:-19
[    1.584692] Host read timeout at address 545c00c4
[    1.875172] tegra-asoc: sound: ASoC: CPU DAI DAP not registered
[    1.882275] tegra-asoc: sound: snd_soc_register_card failed (-517)
[    1.916697] tegra-asoc: sound: ASoC: CPU DAI DAP not registered
[    1.922693] tegra-asoc: sound: snd_soc_register_card failed (-517)
[    1.931022] tegra-asoc: sound: ASoC: CPU DAI DAP not registered
[    1.937021] tegra-asoc: sound: snd_soc_register_card failed (-517)
[    1.977792] tegra-asoc: sound: ASoC: CPU DAI DAP not registered
[    1.983769] tegra-asoc: sound: snd_soc_register_card failed (-517)
[    1.991301] tegra-asoc: sound: ASoC: CPU DAI DAP not registered
[    1.997288] tegra-asoc: sound: snd_soc_register_card failed (-517)
[    2.042458] tegra-asoc: sound: ASoC: CPU DAI DAP not registered
[    2.048452] tegra-asoc: sound: snd_soc_register_card failed (-517)
[    2.075370] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00007f00
[    2.075370] 
[    2.084495] CPU: 2 PID: 1 Comm: chroot Not tainted 4.9.253-tegra #1
[    2.090749] Hardware name: LECOR 2.1 (DT)
[    2.094749] Call trace:
[    2.097194] [<ffffff800808ba40>] dump_backtrace+0x0/0x198
[    2.098901] tegra_cec 70015000.tegra_cec: Can't find physical addresse.
[    2.098904] tegra_cec 70015000.tegra_cec: tegra_cec_init Done.
[    2.114999] [<ffffff800808c004>] show_stack+0x24/0x30
[    2.120042] [<ffffff8008f644d4>] dump_stack+0xa0/0xc4
[    2.125083] [<ffffff8008f61578>] panic+0x12c/0x2a8
[    2.129865] [<ffffff80080b8bb0>] complete_and_exit+0x0/0x30
[    2.135425] [<ffffff80080b8c40>] do_group_exit+0x40/0xa8
[    2.140726] [<ffffff80080b8cc8>] __wake_up_parent+0x0/0x40
[    2.146200] [<ffffff8008083900>] el0_svc_naked+0x34/0x38
[    2.151501] SMP: stopping secondary CPUs
[    2.155468] Kernel Offset: disabled
[    2.158949] Memory Limit: none
[    2.166917] Rebooting in 5 seconds..


I’m not sure, unfortunately. I had something like that when trying to use other kernels, but the 4.9 nvidia kernel worked for me. Beyond that, I’m out of my depth.

Unfortunately, I use the kernel and DTB from the board, which now works successfully for me on Ubuntu and everything works fine there. As soon as I copy the entire boot folder into rootfs from arch Linux and flash it like this, I get this error and I just can’t figure out what the reason is. In theory, the kernel is the same and there shouldn’t be any problems, at least until the start of rootfs for sure.

What about /lib/modules/* ?

ATAineri,

For minimizing rootfs, see this excellent resource:
Guide to Minimizing Jetson Disk Usage

For lighter weight in terms of memory usage, Jetson Linux includes LXDE option. The latest version supporting Jetson Nano is 32.7.4 (see release archive here.) Some relevant docs here and here.

As for kirkstone-l4t-r32.7.x Yocto branch, I do see it here:
GitHub - OE4T/meta-tegra at kirkstone-l4t-r32.7.x

I tried to modules too but there was no effect. Then I only unpacked Arch again and it worked. I think it was bad unpacking first time)

Good afternoon, prlawrence! Unfortunately minimizing Ubuntu is not an option because minimized ubuntu is 1.9 GB but minimized arch is 500 MB and 1 GB with cuda installed

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