Build a Yocto Linux Image (MAPIO OS)

The MAPIO OS distribution is build using Yocto (more information on https://yoctoproject.org).

System Requirements

To build your own distribution you will need a build machine with the following requirements:

Get project and configure the build

Clone the build repository

$ git clone git@github.com:pcurt/yocto-build.git
$ cd yocto-build

Build the build docker image

$ cqfd init

Build MAPIO OS

Start MAPIO OS build

$ cqfd init

The build may takes several hours depending on your build machine characteristics. Only the first build is very long, next builds will be very fast (for example less than 2 minutes if you change an applicative package).

The output image is located here

$ yocto-build/build/tmp/deploy/images/mapio-cm4-64/mapio-image-mapio-cm4-64.wic.bz2

Build MAPIO OS bundle

MAPIO OS can be updated using a bundle (see OS Update). Here are the steps to produce your own bundle update.

The bundle is signed using OpenSSL (signatures based on x.509 certificates). In your build directory we can execute a script to generate certificates, private and public keys

$ yocto-build/layers/meta-rauc/scripts/openssl-ca.sh

Replace the existing ca.cert.pem and private key with your own :

$ cp yocto-build/layers/meta-rauc/scripts/openssl-ca/dev/ca.cert.pem yocto-build/layers/meta-mapio-bsp/recipes-core/rauc/files/ca.cert.pem
$ cp yocto-build/layers/meta-rauc/scripts/openssl-ca/dev/development-1.cert.pem yocto-build/development-1.cert.pem
$ cp yocto-build/layers/meta-rauc/scripts/openssl-ca/dev/private/development-1.key.pem yocto-build/development-1.key.pem

Generate your bundle

$ cqfd -b bundle

The output bundle is located here

$ yocto-build/build/tmp/deploy/images/mapio-cm4-64/mapio-bundle-image-mapio-cm4-64.raucb

You can also generate a bundle containing kernel and device tree with this command

$ cqfd -b bundle-with-kernel

You can now update your MAPIO OS following these instructions OS Update