Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Script to build Yocto+Mender for Raspberry Pi 3
#!/bin/bash
#
if [ "$(/bin/ls -1A | wc -l)" -ne "0" ]; then
echo Please run this from an empty directory.
exit 1
fi
BASE=$(pwd -P)
###
### Install packages needed by Yocto
###
sudo apt-get update
sudo apt-get install -y gawk wget git-core diffstat unzip texinfo gcc-multilib \
build-essential chrpath socat cpio python python3 python3-pip python3-pexpect \
xz-utils debianutils iputils-ping libsdl1.2-dev xterm
###
### Clone Yocto layers
###
mkdir ${BASE}/src
git clone -b rocko git://git.yoctoproject.org/poky ${BASE}/src/poky
git clone -b rocko git://github.com/mendersoftware/meta-mender ${BASE}/src/meta-mender
git clone -b rocko git://git.openembedded.org/meta-openembedded ${BASE}/src/meta-openembedded
git clone -b rocko git://git.yoctoproject.org/meta-raspberrypi ${BASE}/src/meta-raspberrypi
###
### Create the base build directory
###
source ${BASE}/src/poky/oe-init-build-env ${BASE}/build
bitbake-layers add-layer ${BASE}/src/meta-openembedded/meta-oe
bitbake-layers add-layer ${BASE}/src/meta-openembedded/meta-python
bitbake-layers add-layer ${BASE}/src/meta-openembedded/meta-multimedia
bitbake-layers add-layer ${BASE}/src/meta-openembedded/meta-networking
bitbake-layers add-layer ${BASE}/src/meta-raspberrypi
bitbake-layers add-layer ${BASE}/src/meta-mender/meta-mender-core
bitbake-layers add-layer ${BASE}/src/meta-mender/meta-mender-raspberrypi
cat >> ${BASE}/build/conf/local.conf <<EOF
###################################################
###
### Configuration added by yocto-mender-rpi3.sh
###
###################################################
MENDER_ARTIFACT_NAME = "release-1"
INHERIT += "mender-full"
MACHINE = "raspberrypi3"
RPI_USE_U_BOOT = "1"
MENDER_PARTITION_ALIGNMENT_KB = "4096"
MENDER_BOOT_PART_SIZE_MB = "40"
IMAGE_INSTALL_append = " kernel-image kernel-devicetree"
IMAGE_FSTYPES_remove += " rpi-sdimg"
# Build for Hosted Mender
# To get your tenant token, log in to https://hosted.mender.io,
# click your email at the top right and then "My organization".
# Remember to remove the meta-mender-demo layer (if you have added it).
# We recommend Mender 1.4.0 and Yocto Project's rocko or later for Hosted Mender.
#
# MENDER_SERVER_URL = "https://hosted.mender.io"
# MENDER_TENANT_TOKEN = "<YOUR-HOSTED-MENDER-TENANT-TOKEN>"
DISTRO_FEATURES_append = " systemd"
VIRTUAL-RUNTIME_init_manager = "systemd"
DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"
VIRTUAL-RUNTIME_initscripts = ""
IMAGE_FSTYPES = "ext4"
EOF
###
### Run the build.
### This will take a long time; go for a walk, or a meal, or a nap
###
bitbake core-image-full-cmdline
###
### Cleanup
###
echo Congratulations. Your Yocto build for Raspberry Pi 3 is finished.
echo Please deploy the file:
echo ${BASE}/build/tmp/deploy/images/raspberrypi3/core-image-full-cmdline-raspberrypi3.sdimg
echo to an SDCard and boot your board.
echo To use the Mender service, fill in the MENDER_TENANT_TOKEN variable above and rerun this script.
echo You can use the file:
echo ${BASE}/build/tmp/deploy/images/raspberrypi3/core-image-full-cmdline-raspberrypi3.mender
echo as a deployment artifact.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment