kumquat-buildroot/board/mender/x86_64/post-image-efi.sh

73 lines
1.6 KiB
Bash
Raw Normal View History

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 82d1e8c628cc (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 3efb5e31fc05 (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-01-06 15:43:01 +01:00
#!/usr/bin/env bash
set -e
BOARD_DIR="$(realpath "$(dirname "$0")")"
DATA_PART_SIZE="32M"
DEVICE_TYPE="buildroot-x86_64"
ARTIFACT_NAME="1.0"
# Parse arguments.
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)
DATA_PART_SIZE="${2}"; shift 2
;;
(-d|--device-type)
DEVICE_TYPE="${2}"; shift 2
;;
(-a|--artifact-name)
ARTIFACT_NAME="${2}"; shift 2
;;
(--)
shift; break
;;
esac
done
}
# Create the data partition
function make_data_partition {
"${HOST_DIR}/sbin/mkfs.ext4" \
-F \
-r 1 \
-N 0 \
-m 5 \
-L "data" \
"${BINARIES_DIR}/data-part.ext4" "${DATA_PART_SIZE}"
}
# Create a mender image.
function generate_mender_image {
echo "Creating ${BINARIES_DIR}/${DEVICE_TYPE}-${ARTIFACT_NAME}.mender"
"${HOST_DIR}/bin/mender-artifact" \
--compression lzma \
write rootfs-image \
-t "${DEVICE_TYPE}" \
-n "${BR2_VERSION}" \
-f "${BINARIES_DIR}/rootfs.ext2" \
-o "${BINARIES_DIR}/${DEVICE_TYPE}-${ARTIFACT_NAME}.mender"
}
function generate_image {
sh support/scripts/genimage.sh -c "${BOARD_DIR}/genimage-efi.cfg"
}
# Main function.
function main {
parse_args "${@}"
make_data_partition
generate_image
generate_mender_image
exit $?
}
main "${@}"