archy/image-recipe/scripts/convert-iso-to-disk.sh

66 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
# Convert ISO image to bootable disk image
# Creates a raw disk image that can be flashed directly
set -e
OUTPUT_DIR="${1:-../results}"
ARCHIPELAGO_VERSION="${ARCHIPELAGO_VERSION:-0.1.0}"
ARCH="${ARCH:-x86_64}"
echo "💾 Converting ISO to disk image..."
# Find ISO file
ISO_FILE=$(ls "$OUTPUT_DIR"/*.iso 2>/dev/null | head -1)
if [ -z "$ISO_FILE" ]; then
echo "❌ No ISO file found in $OUTPUT_DIR"
exit 1
fi
echo " Source ISO: $ISO_FILE"
# Create disk image (4GB minimum)
DISK_SIZE=4096 # 4GB in MB
DISK_IMG="$OUTPUT_DIR/archipelago-${ARCHIPELAGO_VERSION}-${ARCH}.img"
echo " Creating disk image: $DISK_IMG"
# Check if we have required tools
if ! command -v dd >/dev/null 2>&1; then
echo "❌ dd not found"
exit 1
fi
# Create empty disk image
dd if=/dev/zero of="$DISK_IMG" bs=1M count=$DISK_SIZE 2>/dev/null || {
echo "❌ Failed to create disk image"
exit 1
}
# Note: Full disk image creation with partitions requires:
# - parted or fdisk
# - mkfs.vfat, mkfs.ext4
# - losetup (Linux only)
# - grub-install
# For now, we'll create a simple approach:
# The ISO can be used directly, or users can use tools like:
# - balenaEtcher (macOS/Linux GUI)
# - Rufus (Windows)
# - dd (command line)
echo "⚠️ Full disk image conversion requires additional tools"
echo " For now, use the ISO file directly with:"
echo " - balenaEtcher (recommended)"
echo " - dd command (see docs)"
echo ""
echo " ISO file: $ISO_FILE"
echo " Size: $(du -h "$ISO_FILE" | cut -f1)"
# Clean up empty image file
rm -f "$DISK_IMG"
echo ""
echo "💡 Tip: Use the ISO file with a USB flashing tool"
echo " The ISO is bootable and can be flashed directly"