Yoe module providing NVIDIA Jetson BSP units and machine definitions.
Currently supported: Jetson Orin Nano Devkit (P3768 + P3767-0005) on L4T R36.5.0. Other Jetson platforms are out of scope for now.
| Unit | Role |
|---|---|
linux-tegra |
NVIDIA Jetson kernel (OE4T-patched 5.15 from linux-jammy-nvidia-tegra). Builds Image, modules, and stages a slimmed kernel build tree under /usr/src/linux-tegra/ so out-of-tree consumers can use it as KERNEL_PATH. |
nvidia-kernel-oot-dtb |
Builds Tegra234 device trees from NVIDIA's out-of-tree DTS sources (extracted from public_sources.tbz2). Applies seven OE4T build-system patches. Output: /boot/devicetree/tegra234-p3768-0000+p3767-0005-nv-super.dtb. |
tegra-bsp |
NVIDIA L4T BSP runtime firmware (/usr/lib/firmware/) and tegraflash bootloader binaries (/usr/share/tegraflash/). |
jetson-extlinux |
/boot/extlinux/extlinux.conf for UEFI to load /boot/Image + DTB. |
| Machine | Description |
|---|---|
jetson-orin-nano-devkit |
Orin Nano Devkit, single-partition ext4 SD. |
The Jetson boot chain has three stages:
- QSPI — NVIDIA's bootrom + MB1/MB2/CPU-BL/UEFI live in the module's
on-board QSPI flash. This module does not flash QSPI. We assume the
board has the stock factory flash (or a previous
tegraflashrun); the binaries are staged under/usr/share/tegraflash/for an external provisioning tool to consume. - UEFI — reads
/boot/extlinux/extlinux.conffrom the rootfs. - Kernel —
Image+ DTB loaded by extlinux, mounts ext4 rootfs frommmcblk0p1.
Result: with a stock devkit, write the rootfs image to an SD card and boot.
project(
name = "my-jetson-project",
defaults = defaults(machine = "jetson-orin-nano-devkit", image = "dev-image"),
modules = [
module("github.com/yoebuild/yoe", path = "modules/units-alpine"),
module("github.com/yoebuild/yoe", path = "modules/units-core"),
module("github.com/yoebuild/units-jetson"),
],
)Then:
yoe build dev-imageThe DTBs are built from source, not pulled prebuilt from the BSP tarball. To modify the Orin Nano device tree:
yoe dev extract nvidia-kernel-oot-dtbto get the OOT source tree as a git working copy.- Edit DTS files under
kernel-devicetree/generic-dts/dts/orhardware/nvidia/t23x/nv-public/. - Commit, then
yoe dev diff nvidia-kernel-oot-dtbto extract patches.
- No QSPI flashing. First-time setup of a new module still needs NVIDIA's
SDK Manager or a manual
tegraflashrun with the binaries from/usr/share/tegraflash/. yoe doesn't drivetegraflashyet. - No NVIDIA out-of-tree kernel modules.
nvgpu,nvmap,nvidia-drm, camera, display, WiFi modules are not built. Console + networking + storage work; GPU/CUDA/display do not. The infrastructure (kernel build tree staging, public_sources extraction, OE4T patches) is in place; adding the modules is mostly moremake modulesinvocations and additional patches from the OE4T set when they're needed for newer-kernel adaptation. - Kernel build tree lands in the rootfs apk.
linux-tegrainstalls/usr/src/linux-tegra/(~200 MB) so downstream OOT units can build against it via the sysroot. Yoe doesn't currently support split build-only subpackages; this is acceptable on Jetson where the runtime libs are multi-GB anyway, but worth revisiting. - No UEFI signing of DTBs. Stock devkit boots fine; if you provision
custom secure-boot keys, the unsigned DTB will fail validation. Add a
signing step (mirror meta-tegra's
tegra_uefi_attach_sign) if needed. - Single machine. AGX Orin, Orin NX, prior-gen Xavier and TX2 are not
modeled. Adding them is a
machines/<name>.starplus the right DTB target innvidia-kernel-oot-dtb.
- Kernel: OE4T/linux-jammy-nvidia-tegra,
branch
oe4t-patches-l4t-r36.4. - BSP firmware + bootloader:
Jetson_Linux_R36.5.0_aarch64.tbz2. - DTB sources:
public_sources.tbz2→ nestedkernel_oot_modules_src.tbz2. - DTB build-system patches: copied verbatim from
meta-tegra under
recipes-kernel/nvidia-kernel-oot/nvidia-kernel-oot/(bucket-1 only: patches 0001, 0002, 0003, 0005, 0006, 0007, 0017).