Add unified installer build script
This commit is contained in:
parent
bdba09b3e1
commit
655da9d431
100
scripts/build.sh
Executable file
100
scripts/build.sh
Executable file
@ -0,0 +1,100 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
SOURCE_ISO="${1:-}"
|
||||||
|
|
||||||
|
REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
|
BASE_DIR="$(cd "$REPO_DIR/.." && pwd)"
|
||||||
|
BUILD_DIR="$BASE_DIR/build"
|
||||||
|
WORK_DIR="$BUILD_DIR/work"
|
||||||
|
OUTPUT_DIR="$BUILD_DIR/output"
|
||||||
|
MOUNT_DIR="/mnt/fedora-iso"
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
echo "Usage: $0 /path/to/source.iso"
|
||||||
|
}
|
||||||
|
|
||||||
|
check_input() {
|
||||||
|
if [[ -z "$SOURCE_ISO" ]]; then
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -f "$SOURCE_ISO" ]]; then
|
||||||
|
echo "Error: ISO not found: $SOURCE_ISO"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
check_dependencies() {
|
||||||
|
for cmd in rsync xorriso; do
|
||||||
|
if ! command -v "$cmd" >/dev/null 2>&1; then
|
||||||
|
echo "Error: missing dependency: $cmd"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
prepare_dirs() {
|
||||||
|
mkdir -p "$BUILD_DIR" "$OUTPUT_DIR"
|
||||||
|
rm -rf "$WORK_DIR"
|
||||||
|
mkdir -p "$WORK_DIR"
|
||||||
|
}
|
||||||
|
|
||||||
|
mount_iso() {
|
||||||
|
sudo mkdir -p "$MOUNT_DIR"
|
||||||
|
sudo mount -o loop "$SOURCE_ISO" "$MOUNT_DIR"
|
||||||
|
}
|
||||||
|
|
||||||
|
unmount_iso() {
|
||||||
|
sudo umount "$MOUNT_DIR" || true
|
||||||
|
}
|
||||||
|
|
||||||
|
extract_iso() {
|
||||||
|
echo "Extracting ISO..."
|
||||||
|
mount_iso
|
||||||
|
|
||||||
|
trap unmount_iso EXIT
|
||||||
|
|
||||||
|
sudo rsync -a "$MOUNT_DIR"/ "$WORK_DIR"/
|
||||||
|
sudo chown -R "$(id -u):$(id -g)" "$WORK_DIR"
|
||||||
|
|
||||||
|
unmount_iso
|
||||||
|
trap - EXIT
|
||||||
|
}
|
||||||
|
|
||||||
|
patch_grub() {
|
||||||
|
echo "Installing Tuxflotte GRUB configuration..."
|
||||||
|
|
||||||
|
cp "$REPO_DIR/grub/EFI-BOOT-grub.cfg" \
|
||||||
|
"$WORK_DIR/EFI/BOOT/grub.cfg"
|
||||||
|
|
||||||
|
cp "$REPO_DIR/grub/boot-grub2-grub.cfg" \
|
||||||
|
"$WORK_DIR/boot/grub2/grub.cfg"
|
||||||
|
}
|
||||||
|
|
||||||
|
verify_workdir() {
|
||||||
|
echo "Verifying workdir..."
|
||||||
|
|
||||||
|
grep -q "Tuxflotte" "$WORK_DIR/EFI/BOOT/grub.cfg"
|
||||||
|
grep -q "Tuxflotte" "$WORK_DIR/boot/grub2/grub.cfg"
|
||||||
|
|
||||||
|
echo "GRUB verification passed."
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
check_input
|
||||||
|
check_dependencies
|
||||||
|
prepare_dirs
|
||||||
|
extract_iso
|
||||||
|
patch_grub
|
||||||
|
verify_workdir
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Build preparation complete."
|
||||||
|
echo "Work dir: $WORK_DIR"
|
||||||
|
echo
|
||||||
|
echo "ISO creation will be added in the next step."
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
||||||
Loading…
x
Reference in New Issue
Block a user