Signed-off-by: Matt Madison <matt@madison.systems>
tegra-demo-distro
Reference/demo distribution for NVIDIA Jetson platforms using Yocto Project tools and the meta-tegra BSP layer.
Metadata layers are brought in as git submodules:
| Layer Repo | Branch | Description |
|---|---|---|
| poky | master | OE-Core from poky repo at yoctoproject.org |
| meta-tegra | master | L4T BSP layer - L4T R32.7.2/JetPack 4.6.2 |
| meta-tegra-community | master | OE4T layer with additions from the community |
| meta-openembedded | master | OpenEmbedded layers |
| meta-virtualization | master | Virtualization layer for docker support |
| meta-mender | * | For meta-mender-core layer used in tegrademo-mender |
| meta-mender-community | kirkstone-next | For meta-mender-tegra integration layer |
The meta-mender layer is hosted in a local fork of the upstream Mender repository. The branch
is based on upstream dunfell content, with changes applied to accommodate the overrides
syntax changes in OE-Core.
Prerequisites
See the Yocto Project Quick Build documentation for information on setting up your build host.
For burning SDcards (for the Jetson Nano or Jetson Xavier NX developer
kits), the bmap-tools package is recommended.
Setting up
-
Clone this repository:
$ git clone https://github.com/OE4T/tegra-demo-distro.git -
Switch to the appropriate branch, using the wiki page for guidance.
-
Initialize the git submodules:
$ cd tegra-demo-distro $ git submodule update --init -
Source the
setup-envscript to create a build directory, specifying the MACHINE you want to configure as the default for your builds. For example, to set up a build directory calledbuildthat is set up for the Jetson Xavier NX developer kit and the defaulttegrademodistro:$ . ./setup-env --machine jetson-xavier-nx-devkitYou can get a complete list of available options, MACHINE names, and DISTRO names with
$ . ./setup-env --help -
Optional: Install pre-commit hook for commit autosigning using $ ./scripts-setup/setup-git-hooks
Distributions
Use the --distro option with setup-env to specify a distribution for your build,
or customize the DISTRO setting in your $BUILDDIR/conf/local.conf to reference one
of the supported distributions.
Currently supported distributions are listed below:
| Distribution name | Description |
|---|---|
| tegrademo | Default distro used to demonstrate/test meta-tegra features |
| tegrademo-mender | Adds mender OTA support |
tegrademo-mender
The tegrademo-mender distro demonstrates mender OTA update support with customizations on the tegrademo distribution including:
- Dual A/B rootfs support with read-only-rootfs.
- Integration with cboot and tegra-boot-tools to support persistent systemd machine-id settings on read only rootfs.
- Boot slot and rootfs partition synchronization through boot tools and bootloader integration.
The synchronization of boot slot and root filesystem partition is more complicated to
manage and test with via u-boot (see this issue
for detail). For this reason, the tegrademo-mender distribution defaults to use the
cboot bootloader on Jetson TX2, instead of the default u-boot bootloader used by
meta-tegra. If you need to use a different bootloader you can customize the setting
of PREFERRED_PROVIDER_virtual/bootloader_tegra186 in your distro layer.
Images
The tegrademo distro includes the following image recipes, which
are dervied from the core-image-XXX recipes in OE-Core but configured
for Jetson platforms. They include some additional test tools and
demo applications.
| Recipe name | Description |
|---|---|
| demo-image-base | Basic image with no graphics |
| demo-image-egl | Base with DRM/EGL graphics, no window manager |
| demo-image-sato | X11 image with Sato UI |
| demo-image-weston | Wayland with Weston compositor |
| demo-image-full | Sato image plus nvidia-docker, openCV, multimedia API samples |
Contributing
Please see the contributor wiki page at this link. Contributions are welcome!