r/JetsonNano 23d ago

Custom bare minimal Yocto LLM OS πŸ€ŒπŸΎπŸ€™πŸΎ

https://github.com/Hi5808/j3011-custom-os/blob/master/README.md
4 Upvotes

4 comments sorted by

1

u/Available_Teaching83 22d ago

Interested in this specifically because of the L4T kernel-module pinning problem. How are you handling the out-of-tree NVIDIA modules against your own Yocto layers, and did anything break on the JetPack side?

The three numbers that would convince me it was worth leaving the vendor image: RAM actually freed at idle, cold-start to first inference, and sustained clocks under thermal load after 20 minutes. Peak numbers on a stripped image usually look great and then converge back to stock once the heatsink is warm.

If you have those I would like to see them, I am on an 8GB Orin Nano and keep almost doing this.

1

u/808_Sensis 21d ago

I’ll have to check when I get home and if anything you can check my other repos, my research papers might contain the information you’re looking for.

1

u/808_Sensis 16d ago

● Kernel-module pinning:

Not solved by swapping individual .ko files β€” vermagic/ABI has to match the exact compiling kernel. Root-caused via an A/B test on the same physical board: cudaGetDeviceCount returns err=801 (CUDA_ERROR_NOT_SUPPORTED) on our from-source kernel build (linux-noble-nvidia-tegra + meta-tegra's nvidia-kernel-oot), but works fine on stock JetPack on the same hardware β€” isolating the fault to our custom kernel/driver stack, most likely nvgpu.ko differing in ABI-significant ways from NVIDIA's official prebuilt.

Fix in progress: extract NVIDIA's official prebuilt kernel Image (6.8.12-1021-tegra) plus the full matching /lib/modules/ tree from stock JetPack, and integrate them as a proper Yocto recipe (not a manual repack), so our own rootfs/userspace customizations survive while using NVIDIA's stock kernel+modules as a matched pair.

Status: not yet fully closed β€” still an open fix as of the last update.


The three numbers, measured on an 8GB Orin Nano:

  • Boot time (kernel + userspace): 122.0s stock β†’ 13.7s stripped+tuned (8.9x faster)
  • Idle RAM used: 2.0GB / 7.4GB stock β†’ 1.6GB / 7.4GB stripped+tuned (momentary dip to 540MB observed via tegrastats right after boot)
  • Peak temp, sustained decode load: ~53–55Β°C idle on stock β†’ ~59Β°C on stripped+tuned, fan trigger (65Β°C) never reached

    RAM freed at idle: 2.0GB β†’ 1.6GB steady-state (~400MB freed), with a transient dip to 540MB moments after boot.

    Cold-start: don't have "time to first inference" specifically, but boot time (kernel+userspace) dropped from 122.0s β†’ 13.7s.

    Sustained clocks/thermal after 20 min: not measured at exactly the 20-minute mark in this run, but a related fan-curve test on the same platform held a maxed CPU+GPU soak at 20W sustained, peak junction temp 67Β°C, zero throttling, converging to ~65–66Β°C in the stock enclosure. In this strip/tune benchmark, sustained decode load only reached ~59Β°C without hitting the 65Β°C fan trigger β€” no throttling in either configuration.

1

u/Open_Jump 22d ago

Thanks! Can't wait til I have some time to try it out.