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.5.1/JetPack 4.5.1 |
meta-openembedded | master | OpenEmbedded layers |
meta-virtualization | master | Virtualization layer for docker support |
meta-mender | dunfell | For meta-mender-core layer used in tegrademo-mender |
meta-mender-community | dunfell | For meta-mender-tegra integration layer |
See the Yocto Project Quick Build
documentation for information on setting up your build host.
In addition to the packages mentioned in that documentation, you
will need gcc and g++ 8 (on Ubuntu, packages gcc-8
and g++-8
).
For burning SDcards (for the Jetson Nano or Jetson Xavier NX developer
kits), the bmap-tools
package is recommended.
-
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-env
script 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 calledbuild
that is set up for the Jetson Xavier NX developer kit and the defaulttegrademo
distro:$ . ./setup-env --machine jetson-xavier-nx-devkit
You 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
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 |
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.
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 |
Please see the contributor wiki page at this link. Contributions are welcome!