Jump to content

NVIDIA Jetson Security with Yocto: Integration and Validation

From RidgeRun Developer Wiki

Follow us on: YouTube Twitter LinkedIn Email Share this page

Share This Page

NVIDIA partner logo NXP partner logo



To enable and test security features on NVIDIA Jetson using Yocto, first build, flash, and verify a working reference image with OE4T meta-tegra. Then follow the security-specific procedures to integrate Secure Boot, Trusted Execution Environment (TEE), disk encryption, or over-the-air (OTA) update controls into the Yocto workflow, rebuild the affected artifacts, and validate the resulting behavior on Jetson hardware. This guide supplies the verified build-and-boot starting point and links to the implementation and test procedures for individual security features.

The baseline described here uses tegra-demo-distro on wrynose, Jetson Linux R39.2.1, and Jetson Orin Nano and AGX Orin developer kits. The baseline does not itself activate security protections: enablement and enforcement must be verified for each security mechanism separately.


Info
This is the Yocto/OE4T security integration path. For the standard NVIDIA JetPack/L4T workflow, see NVIDIA Jetson JetPack Build Process.


The following sections describe how to configure, build, integrate, and validate each security mechanism within the Yocto build process. These procedures use the NVIDIA Jetson security capabilities together with the Yocto build system, allowing the required security configuration to become part of a reproducible product image.


Security features and validation guides

Feature What the Yocto workflow must address Where to find enablement and validation steps
SoC and UEFI Secure Boot Signing, boot artifacts, trust material, firmware configuration and verification of boot-chain enforcement Secure Boot; see its SoC Secure Boot and UEFI Secure Boot subpages
Trusted Execution Environment (TEE) Trusted firmware and secure-world component integration, according to the supported Jetson release Trusted Execution Environment (TEE)
Disk encryption Root filesystem encryption, boot-time unlocking and encryption-key provisioning Disk Encryption on NVIDIA Jetson with Yocto
Over-the-air updates Update payloads, bootloader integration and recovery/rollback verification Over-the-Air Updates

The linked procedures contain the feature-specific implementation detail.

Each procedure identifies the required configuration, build integration, tools, commands, validation steps, and relevant limitations.

The developer should first confirm that the baseline Yocto image builds, boots, and operates correctly on the target Jetson platform before enabling security-specific configurations. This provides a known-good baseline that can be used to distinguish build or platform issues from problems introduced by the security configuration.

What changes when security is integrated with Yocto?

The security objective is independent of the build system used by the product. For example, Secure Boot still provides a mechanism for authenticating software before execution whether the product is developed using the standard JetPack/L4T workflow or Yocto.

What changes is how the security configuration is integrated into the software build and deployment process.

In a Yocto-based product, the required security configuration should become part of the reproducible build wherever possible. Depending on the security mechanism, this may include:

  • Yocto configuration variables.
  • Recipes and classes.
  • NVIDIA-specific Yocto layers.
  • Signing configuration and cryptographic keys.
  • Boot image generation.
  • Root filesystem configuration.
  • Trusted firmware or TEE components.
  • Image deployment and flashing procedures.

The resulting images should be validated on the target hardware before production security settings are applied.


Warning

Security procedures can depend on the Jetson module, BSP/L4T release, Yocto release, boot configuration, and security state of the device. Verify that the procedure matches the hardware and software baseline used by the product before applying production security

settings.


Validated NVIDIA Jetson Yocto Environment

The Yocto-based Jetson security workflow should start from a validated build, flash, and boot baseline before enabling Secure Boot, disk encryption, OTA, or other security features.

The validation baseline used for this workflow was:

Item Validated Configuration
Yocto BSP OE4T meta-tegra
Reference distribution tegra-demo-distro
Yocto branch wrynose
Jetson Linux release R39.2.1
Kernel Linux 6.8.12-l4t-r39.2.1
Base image demo-image-base

The validation covered:

  • Yocto environment setup.
  • Jetson machine configuration.
  • Base image build.
  • Tegra flashing package generation.
  • NVMe and eMMC flashing.
  • Hardware boot validation.
  • Bootloader A/B validation.
  • Initial UEFI Secure Boot state verification.

Secure Boot keys, SBK configuration, and fuse programming are intentionally not part of this baseline stage. They should be added only after the base Yocto image can be built, flashed, and booted reproducibly.

Validated Jetson Platforms

Platform Yocto Machine Root Filesystem Notes
Jetson Orin Nano Developer Kit Super jetson-orin-nano-devkit-nvme NVMe Validated with Tegra234, module P3767-0005, carrier P3768-0000.
Jetson AGX Orin Developer Kit jetson-agx-orin-devkit Internal eMMC Validated with Tegra234, board P3701, carrier P3737.


Environment Setup Summary

A reproducible Jetson Yocto environment can be initialized from the OE4T demonstration distribution:

mkdir -p ~/jetson-yocto
cd ~/jetson-yocto

git clone \
    --branch wrynose \
    --single-branch \
    --recursive \
    https://github.com/OE4T/tegra-demo-distro.git

cd tegra-demo-distro

For Jetson Orin Nano with NVMe root filesystem:

. ./setup-env \
    --machine jetson-orin-nano-devkit-nvme

For Jetson AGX Orin with internal eMMC:

. ./setup-env \
    --machine jetson-agx-orin-devkit \
    build-agx-orin

Using separate build directories keeps platform-specific configuration and artifacts isolated.

The active layers can be inspected with:

bitbake-layers show-layers

Build the base image with:

bitbake demo-image-base

On hosts with limited memory, reduce build parallelism if large recipes such as LLVM cause OOM failures:

BB_NUMBER_THREADS = "10"
PARALLEL_MAKE = "-j10"


Known Build Issue: EDK2 Standalone MM

During validation, the first AGX Orin image build failed while building the NVIDIA EDK2 Standalone Management Mode firmware recipe: edk2-nvidia-standalone-mm.

The failure was resolved by rebuilding the affected recipe from a clean state:

bitbake -c cleansstate edk2-nvidia-standalone-mm
bitbake edk2-nvidia-standalone-mm
bitbake demo-image-base

For a more deterministic first build, build the EDK2 firmware before the complete image:

bitbake edk2-nvidia-standalone-mm
bitbake demo-image-base


Flashing and Boot Validation Notes

After a successful Yocto build, the generated Tegra flashing package is available under the deploy directory for the selected machine.

Examples:

build/tmp/deploy/images/jetson-orin-nano-devkit-nvme/
build-agx-orin/tmp/deploy/images/jetson-agx-orin-devkit/

Important generated artifacts include:

Artifact Purpose
demo-image-base-*.rootfs.ext4 Yocto root filesystem.
demo-image-base-*.tegraflash-tar.zst Self-contained Jetson flashing package.
Image / Image.gz Linux kernel.
Device Tree files Platform hardware description.
tegra-espimage-*.esp EFI System Partition image.
uefi_t23x_general.bin Main UEFI firmware.
uefi_t23x_rcmboot.bin Recovery Mode UEFI firmware.

During initrd flashing, Jetson storage may be exposed to the host as a USB mass-storage device. On Ubuntu hosts, udisks2 can automatically mount the exported storage and interfere with partitioning or flashing.

Before flashing, stop automatic host mounting:

sudo systemctl stop udisks2.service

After flashing completes, restore the service:

sudo systemctl start udisks2.service

Validate the booted system before enabling security features:

cat /etc/os-release
uname -a
findmnt /

FAQ

How do I enable security features on NVIDIA Jetson with Yocto?
First build and boot the OE4T meta-tegra baseline for the matching Jetson machine. Then use the feature-specific Yocto procedure to configure, build, and deploy Secure Boot, TEE, disk encryption, or OTA components. Verify the intended enforcement separately on the target hardware; the baseline build alone does not enable those controls.
How do I test NVIDIA Jetson Secure Boot after building with Yocto?
Follow the Yocto Secure Boot guide for signed boot artifacts and UEFI policy. Verify that signed payloads boot and that unauthorized payloads are rejected as appropriate to the configured security state. Hardware-enforced SoC Secure Boot additionally requires verified production trust provisioning; signing alone is not equivalent.
Can I validate a Yocto Secure Boot workflow without burning Jetson fuses?
Yes, some build-time signing and UEFI Secure Boot behavior can be tested on development boards without irreversible SoC fuse programming. That does not establish BootROM-rooted PKC enforcement. See the development validation boundary in the Secure Boot documentation.
Which NVIDIA Jetson security features does this Yocto guide cover?
It provides a shared build-and-boot baseline and directs engineers to dedicated procedures for Secure Boot, TEE, disk encryption, and OTA updates. Feature support and validation depend on the target hardware and release.
Which Yocto BSP and Jetson boards were validated for the baseline?
The published baseline uses OE4T meta-tegra with tegra-demo-distro branch wrynose, Jetson Linux R39.2.1, and kernel 6.8.12-l4t-r39.2.1. It documents the Orin Nano Developer Kit Super with NVMe and AGX Orin Developer Kit with eMMC.
What command builds the reference Yocto image before security integration?
After initializing setup-env for the correct machine, run bitbake demo-image-base. Build success is only the first step; flash and confirm a successful hardware boot before modifying the security configuration.
What if edk2-nvidia-standalone-mm fails in the Jetson Yocto build?
In the documented AGX Orin validation, cleaning and rebuilding edk2-nvidia-standalone-mm, then rebuilding demo-image-base, resolved a first-build failure. Inspect the recipe task log before applying that workaround to another failure.
How do I confirm that the Jetson is running the correct Yocto baseline?
Run cat /etc/os-release, uname -a and findmnt / on the target. Compare the resulting distribution, kernel and root filesystem with the expected image and storage medium; also record boot and security state using release-appropriate tools.

Related Documentation and References

For engineering support with Yocto-based Jetson security integration, validation, or production provisioning, contact RidgeRun.



Cookies help us deliver our services. By using our services, you agree to our use of cookies.