From 15c5e5afcbef7889d5fc1240e52371018f342556 Mon Sep 17 00:00:00 2001 From: Pratham Patel Date: Tue, 10 Oct 2023 11:06:09 +0530 Subject: [PATCH] Create GPT and MBR images 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. --- Rocky-GPT.ks | 2 + Rocky-MBR.ks | 2 + Rocky.ks | 6 --- create-image.sh | 78 ++++++++++++++++++--------------- includes/distros/rocky-base.ksi | 6 +++ 5 files changed, 52 insertions(+), 42 deletions(-) create mode 100644 Rocky-GPT.ks create mode 100644 Rocky-MBR.ks delete mode 100644 Rocky.ks create mode 100644 includes/distros/rocky-base.ksi diff --git a/Rocky-GPT.ks b/Rocky-GPT.ks new file mode 100644 index 0000000..5a056ae --- /dev/null +++ b/Rocky-GPT.ks @@ -0,0 +1,2 @@ +clearpart --drives=sda --disklabel=gpt --all +%include includes/distros/rocky-base.ksi diff --git a/Rocky-MBR.ks b/Rocky-MBR.ks new file mode 100644 index 0000000..93ffdc4 --- /dev/null +++ b/Rocky-MBR.ks @@ -0,0 +1,2 @@ +clearpart --drives=sda --all +%include includes/distros/rocky-base.ksi diff --git a/Rocky.ks b/Rocky.ks deleted file mode 100644 index c4d3ca1..0000000 --- a/Rocky.ks +++ /dev/null @@ -1,6 +0,0 @@ -# Note to self with OCD: this can be alphabetically sorted -%include includes/base-configuration.ksi -%include includes/disk-layout.ksi -%include includes/package-list.ksi -%include includes/post/post-install.ksi -%include includes/repos/repos-master.ksi diff --git a/create-image.sh b/create-image.sh index 19bb743..825265d 100755 --- a/create-image.sh +++ b/create-image.sh @@ -2,48 +2,54 @@ set -x KICKSTART_BASE="Rocky" -KICKSTART_FILE="${KICKSTART_BASE}.ks" -APPLIANCE_NAME="${KICKSTART_BASE}-$(dnf config-manager --dump-variables | grep releasever | awk '{print $3}')-$(uname -m)-minimal-$(TZ='UTC' date +%Y.%m.%d)" -IMAGE_NAME="${APPLIANCE_NAME}.raw" -Z_IMG_NAME="${IMAGE_NAME}.zst" -COMMANDS_TO_CHECK=('appliance-creator' 'shasum' 'zstd') +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 COMMAND in "${COMMANDS_TO_CHECK[@]}"; do - if ! command -v "${COMMAND}" > /dev/null; then - >&2 echo "$0: ERROR: unable to find command '${COMMAND}' in PATH" +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 -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 -mv "${APPLIANCE_NAME}.log" "${APPLIANCE_NAME}/${APPLIANCE_NAME}.log" +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} -if [[ -d "${APPLIANCE_NAME}" ]]; then - pushd "${APPLIANCE_NAME}" || exit 1 - - mv -f "${APPLIANCE_NAME}-sda.raw" "${IMAGE_NAME}" - zstd --compress -9 "${IMAGE_NAME}" - - sha512sum "${IMAGE_NAME}" > SHA512SUMS - sha512sum "${Z_IMG_NAME}" >> SHA512SUMS - sha256sum "${IMAGE_NAME}" > SHA256SUMS - sha256sum "${Z_IMG_NAME}" >> SHA256SUMS - - popd || exit 0 -else - >&2 echo "$0: ERROR: unable to find the appliance output directory" - >&2 echo "$0: ${APPLIANCE_NAME}" - exit 1 -fi +pushd "${APPLIANCE_BASE}" || exit 1 +sha512sum -- *.raw > SHA512SUMS +sha256sum -- *.raw > SHA256SUMS +popd || exit 1 if [[ -n "$1" ]]; then - chown "$1":"$1" -vR "${APPLIANCE_NAME}" + chown "$1":"$1" -vR "${APPLIANCE_BASE}" fi diff --git a/includes/distros/rocky-base.ksi b/includes/distros/rocky-base.ksi new file mode 100644 index 0000000..7ba38b0 --- /dev/null +++ b/includes/distros/rocky-base.ksi @@ -0,0 +1,6 @@ +# Note to self with OCD: this can be alphabetically sorted +%include ../base-configuration.ksi +%include ../disk-layout.ksi +%include ../package-list.ksi +%include ../post/post-install.ksi +%include ../repos/repos-master.ksi