mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-08-01 21:23:51 -09:00
As the mender_x86_64_efi_defconfig does not build the xz package, creating a boostrap image with a lzma compression results in the following error on boot: ``` Error while handling bootstrap Artifact, continuing: invalid bootstrap Artifact: readHeaderV3: handleHeaderReads: readHeader: readNext: Failed to get next header: reader: error reading archive: unexpected EOF ``` This also results in the same error for the generated mender image, as it's also created with lzma compression unconditionally. Set the compression to none to resolve the above error. Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com> Signed-off-by: Julien Olivain <ju.o@free.fr>
93 lines
2.3 KiB
Bash
Executable File
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 "${@}"
|