#!/bin/bash # Football ISO Build Script # Creates Debian 13 ISO with embedded preseed configuration # ALL work done in Docker container - no host operations set -euo pipefail BUILD_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" OUTPUT_DIR="$BUILD_DIR/output" echo "================================================" echo "Football ISO Build (Docker-only)" echo "================================================" echo "" # Create output directory only (everything else in Docker) mkdir -p "$OUTPUT_DIR" # ============================================================================ # Run entire build process in single Docker container # ============================================================================ docker run --rm \ --name football-iso-build \ -v "$BUILD_DIR:/build" \ debian:trixie \ bash -c ' set -e echo "================================================" echo "Football ISO Build" echo "================================================" echo "" # ============================================================================ # Step 1: Download Debian ISO # ============================================================================ echo "[1/5] Downloading Debian 13 Netboot ISO..." # Create temporary directory inside container ISO_DIR="/build/iso-tmp" mkdir -p "$ISO_DIR" cd "$ISO_DIR" # Install required tools echo "Installing required tools..." apt-get update -qq apt-get install -y -qq wget xorriso rsync isolinux echo "" echo "Downloading Debian 13.3.0 (trixie) Stable Netboot ISO..." # Download Debian 13.3.0 (trixie) stable ISO wget -q --show-progress \ -O debian-13.3.0-amd64-netinst.iso \ https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-13.3.0-amd64-netinst.iso echo "" echo "✅ ISO downloaded" ls -lh "$ISO_DIR"/*.iso echo "" echo "✅ Step 1 complete" echo "" # ============================================================================ # Step 2: Extract ISO # ============================================================================ echo "[2/5] Extracting ISO..." echo "Extracting ISO contents..." mkdir -p extracted cd extracted xorriso -osirrox on \ -indev "$ISO_DIR/debian-13.3.0-amd64-netinst.iso" \ -extract / ./ echo "" echo "✅ ISO extracted" echo "Files in extracted:" ls -la | head -20 echo "" echo "✅ Step 2 complete" echo "" # ============================================================================ # Step 3: Inject Preseed Configuration and Scripts # ============================================================================ echo "[3/5] Injecting preseed configuration and scripts..." echo "Copying preseed file..." cp /build/config/preseed.cfg /build/iso-tmp/extracted/preseed.cfg echo "" echo "Copying verification and configuration scripts..." # Create scripts and config directories on ISO mkdir -p scripts config # Copy scripts to ISO cp /build/scripts/verify-system.sh scripts/ cp /build/config/disable-wifi-bt.sh config/ cp /build/config/security-config.sh config/ cp /build/config/football-first-boot.service config/ # Make scripts executable chmod +x scripts/verify-system.sh chmod +x config/disable-wifi-bt.sh chmod +x config/security-config.sh echo "" echo "Modifying boot menu to use preseed..." # Create preseed-enabled boot entry if [ -f isolinux/isolinux.cfg ]; then echo "Updating isolinux.cfg..." # Back up original cp isolinux/isolinux.cfg isolinux/isolinux.cfg.bak # Add auto-install with preseed entry at top cat > isolinux/isolinux-auto.cfg < boot/grub/grub-preseed.cfg <