Skip to content

aws4embeddedlinux/meta-aws-demos

Repository files navigation

Demonstrations for the meta-aws project

meta-aws is a Yocto Project Bitbake Metadata Layer. It accelerates building Amazon Web Services (AWS) software you can install to Embedded Linux. You can use this to build IoT solutions on AWS.

In this repository, you will find meta-aws demonstrations. These demos are based on both Poky (the Yocto Project reference implementation) and real hardware. Many times, the hardware will be representative of actual uses of hardware listed in the AWS Device Catalog.

The number of demonstrations will increase over time and your contributions are very welcome!

Demonstration environments

The DEMOs consist of a combination of a DEVICE, which represent a hardware and an IMAGE showcasing a use-case.

Device

Select your desired target environment. These are listed below in alphabetical order for ease of selection, no preference should be inferred.

Images

Generally you can build all images for all "Devices", but some combinations do not work or do not make sense!

Important

Be careful some of the images require additional local.conf entries, those config.conf files are located in the respective image. They are automatically included if the correct environment variables (IMAGE + DEVICE) are set!

Quick Start

To try out this project in QEMU (default device is qemuarm64), run the following commands:

git submodule update --init --recursive
. init-build-env
export IMAGE=aws-demo-image
bitbake $IMAGE
runqemu slirp nographic

Build requirements

Please also consider these build host requirements. -> At least 100GB of free hard disk space is required!

Ubuntu 24.04

  • sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0 is needed for bitbake

Setup

This repository uses submodules and a simple wrapper script to set the default TEMPLATECONF that allows users to select the device they want to build. The first step is to clone down the submodules:

git submodule update --init --recursive

Building

Next, initialize the build environment, and optionally specify the build directory:

. init-build-env [BUILDDIR]

Finally, the images can be built - details in linked readme for each DEMO. Default device is qemuarm64:

export DEVICE=[DEVICE]
export IMAGE=[IMAGE]
bitbake $IMAGE

To build for a different device, set the DEVICE (see here) and IMAGE environment variable, like this:

export DEVICE=aws-c2-arm64
export IMAGE=aws-demo-image
bitbake $IMAGE

For a list of all possible devices, see meta-aws-demos/conf/devices.

The init-build-env script adds a helper function called get_devices which will list all devices that can be configured. This can be used to build all devices with:

for d in $(get_devices); do for i in $(get_images); do DEVICE=$d IMAGE=$i && echo $DEVICE && echo $IMAGE && bitbake $i; done; done

Adding new images, devices

New platforms can be added by adding a new directory under meta-aws-demos/conf/devices. This directory should contain 2 files:

layers.conf: This is the file that will be required in bblayers.conf when the device is selected

config.conf: This is the file that will be required in local.conf when the device is selected

New images can be added by adding a new directory under meta-aws-demos/recipes-core/images/. This directory can contain 2 files:

layers.conf: This is the file that will be optionally included in bblayers.conf when the image is selected

config.conf: This is the file that will be optionally included in local.conf when the image is selected

Updating submodules to latest version of specified branch is easy.

The following will update upstream submodule changes recursively:

git submodule update --remote --init --recursive

About

No description, website, or topics provided.

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published