kumquat-buildroot/board/mender/x86_64/post-build.sh
Adam Duskett 71cc399259 board/mender: add a mender board example configuration.
Buildroot currently has all of the needed packages to use Mender as the primary
update system. However, there isn't any documentation or examples now that
provide a starting point for users. This lack of documentation makes setting up
a Mender based update system difficult and time-consuming.

Provided in this patch series is a mender_x86_64_efi_defconfig of which sets up
an x86_64 EFI based build that is ready to flash to a USB pen drive or use in a
QEMU environment. The system partition schema comprises of two equally sized
root partitions and a data partition that mounts to /var/lib/mender as a
persistent data store partition.

There is a board/mender/readme.txt provided, which gives users documentation on
how to flash the built image or boot the image using QEMU as well.

The post-build and post-image-efi scripts also have four options:
-a --artifact-name:
  - The name of the artifact, this is added to /etc/mender/artifact_info
-o --data-part-size:
  - The data partition size.
-d --device-type
  - The device-type used by mender to catagorize registered devices.

Signed-off-by: Adam Duskett <Aduskett@gmail.com>
Signed-off-by: Mikael Bourhis-Cloarec <mikael.bourhis@smile.fr>
[Romain: rebase on master (01.2022)
  - update genimage-efi.cfg to use GPT partition table and genimage-15 syntax
  - bump the kernel to 5.15.13
  - Add host-libelf kernel dependency
  - Use BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI after commit 82d1e8c628
    (boot/grub2: use none platform when building for host)
  - Add regexp grub mandatory module for mender-grubenv
  - remove startup.nsh from genimage-efi.cfg after commit 3efb5e31fc
    (board, boot, package: remove usage of startup.nsh in EFI partition)]
Signed-off-by: Romain Naour <romain.naour@smile.fr>
[Arnout:
  - abbreviate sizes and partition uuids, remove implicit ones in genimage.cfg
  - change data partition uuid to Linux (instead of x86_64 rootfs)
  - fix whitespace and shellcheck errors in scripts
  - remove --generate-mender-image option, always create it
  - remove empty directory and -O ^64bit when creating data fs
  - remove redundant e2fsck
  - add -serial stdio option to qemu call
  - update kernel to current stable 5.18.14
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2022-07-24 21:04:38 +02:00

55 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
set -e
DEVICE_TYPE="buildroot-x86_64"
ARTIFACT_NAME="1.0"
function parse_args {
local o O opts
o='a:o:d:'
O='artifact-name:,data-part-size:,device-type:'
opts="$(getopt -o "${o}" -l "${O}" -- "${@}")"
eval set -- "${opts}"
while [ ${#} -gt 0 ]; do
case "${1}" in
(-o|--data-part-size)
# Ignored to have same options as other scripts
shift 2
;;
(-d|--device-type)
DEVICE_TYPE="${2}"; shift 2
;;
(-a|--artifact-name)
ARTIFACT_NAME="${2}"; shift 2
;;
(--)
shift; break
;;
esac
done
}
# Create a persistent directory to mount the data partition at.
function mender_fixup {
pushd "${TARGET_DIR}"
if [[ -L var/lib/mender ]]; then
rm var/lib/mender
mkdir -p var/lib/mender
fi
# The common paradigm is to have the persistent data volume at /data for mender.
if [[ ! -L data ]]; then
ln -s var/lib/mender data
fi
popd
}
function main {
parse_args "${@}"
mender_fixup
echo "device_type=${DEVICE_TYPE}" > "${TARGET_DIR}/etc/mender/device_type"
echo "artifact_name=${ARTIFACT_NAME}" > "${TARGET_DIR}/etc/mender/artifact_info"
}
main "${@}"