mirror of
https://git.valherun.com/valherun/pxe_boot_alma.git
synced 2026-10-15 19:42:03 -04:00
77 lines
1.4 KiB
Bash
Executable File
77 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
|
|
ISO_PATH=""
|
|
HTTP_ROOT=""
|
|
MOUNT_DIR=""
|
|
|
|
usage() {
|
|
cat <<'EOF'
|
|
Usage: sync_alma_tree.sh --iso FILE --http-root DIR [--mount-dir DIR]
|
|
|
|
Mount an AlmaLinux ISO read-only and copy its contents into an HTTP-served
|
|
install tree for PXE/Kickstart use.
|
|
EOF
|
|
}
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--iso)
|
|
ISO_PATH="$2"
|
|
shift 2
|
|
;;
|
|
--http-root)
|
|
HTTP_ROOT="$2"
|
|
shift 2
|
|
;;
|
|
--mount-dir)
|
|
MOUNT_DIR="$2"
|
|
shift 2
|
|
;;
|
|
-h|--help)
|
|
usage
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "Unknown option: $1" >&2
|
|
usage >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [[ -z "$ISO_PATH" || -z "$HTTP_ROOT" ]]; then
|
|
usage >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ! -f "$ISO_PATH" ]]; then
|
|
echo "ISO not found: $ISO_PATH" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ $EUID -ne 0 ]]; then
|
|
echo "Re-running with sudo..."
|
|
exec sudo "$0" "$@"
|
|
fi
|
|
|
|
if [[ -z "$MOUNT_DIR" ]]; then
|
|
MOUNT_DIR="$(mktemp -d /tmp/alma-iso.XXXXXX)"
|
|
fi
|
|
|
|
cleanup() {
|
|
if mountpoint -q "$MOUNT_DIR"; then
|
|
umount "$MOUNT_DIR"
|
|
fi
|
|
rmdir "$MOUNT_DIR" 2>/dev/null || true
|
|
}
|
|
|
|
trap cleanup EXIT
|
|
|
|
mkdir -p "$HTTP_ROOT"
|
|
mount -o loop,ro "$ISO_PATH" "$MOUNT_DIR"
|
|
rsync -aH --delete "$MOUNT_DIR"/ "$HTTP_ROOT"/
|
|
|
|
echo "Synced AlmaLinux tree to $HTTP_ROOT"
|