cross/armhf-linux-musl/buildroot/buildroot-2025.05/board/mender/x86_64/post-image-efi.sh

93 lines
2.3 KiB
Bash
Executable File

#!/usr/bin/env bash
set -e
BOARD_DIR="$(realpath "$(dirname "$0")")"
DATA_PART="${BINARIES_DIR}"/data-part
DATA_PART_SIZE="32M"
DEVICE_TYPE="buildroot-x86_64"
ARTIFACT_NAME="1.0"
# Parse arguments.
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
make_data_partition() {
"${HOST_DIR}/sbin/mkfs.ext4" \
-d "${DATA_PART}" \
-F \
-r 1 \
-N 0 \
-m 5 \
-L "data" \
"${BINARIES_DIR}/data-part.ext4" "${DATA_PART_SIZE}"
}
# Generate a mender bootstrap artifact.
# See https://github.com/mendersoftware/mender/blob/3.5.3/Documentation/automatic-bootstrap-artifact.md
generate_mender_bootstrap_artifact() {
rm -rf "${DATA_PART}"
mkdir -p "${DATA_PART}"
img_checksum=$(sha256sum "${BINARIES_DIR}"/rootfs.ext4 |awk '{print $1}')
"${HOST_DIR}"/bin/mender-artifact \
write bootstrap-artifact \
--compression none \
--artifact-name "${ARTIFACT_NAME}" \
--device-type "${DEVICE_TYPE}" \
--provides "rootfs-image.version:${ARTIFACT_NAME}" \
--provides "rootfs-image.checksum:${img_checksum}" \
--clears-provides "rootfs-image.*" \
--output-path "${DATA_PART}"/bootstrap.mender \
--version 3
}
# Create a mender image.
generate_mender_image() {
echo "Creating ${BINARIES_DIR}/${DEVICE_TYPE}-${ARTIFACT_NAME}.mender"
"${HOST_DIR}/bin/mender-artifact" \
write rootfs-image \
--compression none \
-t "${DEVICE_TYPE}" \
-n "${BR2_VERSION}" \
-f "${BINARIES_DIR}/rootfs.ext2" \
-o "${BINARIES_DIR}/${DEVICE_TYPE}-${ARTIFACT_NAME}.mender"
}
generate_image() {
support/scripts/genimage.sh -c "${BOARD_DIR}/genimage-efi.cfg"
}
# Main function.
main() {
parse_args "${@}"
generate_mender_bootstrap_artifact
make_data_partition
generate_image
generate_mender_image
exit $?
}
main "${@}"