Pratham Patel
15c5e5afcb
Some SBCs, like the Raspberry Pi (at least up-to RPi4) lineup needs MBR partitioned disks, while other, more newer SBCs, like the Orange Pi 5, needs GPT partitioned disks. So create two disk images.
56 lines
1.7 KiB
Bash
Executable File
56 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -x
|
|
KICKSTART_BASE="Rocky"
|
|
TODAY="$(TZ='UTC' date +%Y.%m.%d)"
|
|
APPLIANCE_BASE="${KICKSTART_BASE}-$(dnf config-manager --dump-variables | grep releasever | awk '{print $3}')-$(uname -m)-minimal-${TODAY}"
|
|
PARTITION_TYPES=('GPT' 'MBR')
|
|
|
|
for P_LAYOUT in "${PARTITION_TYPES[@]}"; do
|
|
KICKSTART_FILE="${KICKSTART_BASE}-${P_LAYOUT}.ks"
|
|
APPLIANCE_NAME="${APPLIANCE_BASE}-${P_LAYOUT}"
|
|
IMAGE_NAME="${APPLIANCE_NAME}.raw"
|
|
COMMANDS_TO_CHECK=('appliance-creator' 'shasum' 'zstd')
|
|
|
|
for COMMAND in "${COMMANDS_TO_CHECK[@]}"; do
|
|
if ! command -v "${COMMAND}" > /dev/null; then
|
|
>&2 echo "$0: ERROR: unable to find command '${COMMAND}' in PATH"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
appliance-creator \
|
|
--config "${KICKSTART_FILE}" \
|
|
--name "${APPLIANCE_NAME}" \
|
|
--format raw \
|
|
--outdir "${PWD}" \
|
|
--no-compress \
|
|
--debug \
|
|
--cache /root/cache \
|
|
--verbose 2>&1 | tee "${APPLIANCE_NAME}.log" || exit 1
|
|
|
|
if [[ -d "${APPLIANCE_NAME}" ]]; then
|
|
pushd "${APPLIANCE_NAME}" || exit 1
|
|
mv "${APPLIANCE_NAME}-sda.raw" "${IMAGE_NAME}"
|
|
zstd --compress -9 "${IMAGE_NAME}"
|
|
popd || exit 0
|
|
else
|
|
>&2 echo "$0: ERROR: unable to find the appliance output directory"
|
|
>&2 echo "$0: ${APPLIANCE_NAME}"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
rm -rf "${APPLIANCE_BASE}" && mkdir "${APPLIANCE_BASE}"
|
|
find . -type f \( -name "*.log" -o -name "*.raw*" \) -exec mv {} "${APPLIANCE_BASE}/" \;
|
|
rm -rf "${APPLIANCE_BASE}"-{GPT,MBR}
|
|
|
|
pushd "${APPLIANCE_BASE}" || exit 1
|
|
sha512sum -- *.raw > SHA512SUMS
|
|
sha256sum -- *.raw > SHA256SUMS
|
|
popd || exit 1
|
|
|
|
if [[ -n "$1" ]]; then
|
|
chown "$1":"$1" -vR "${APPLIANCE_BASE}"
|
|
fi
|