mirror of
https://github.com/johndoe6345789/SparkOS.git
synced 2026-04-24 13:34:56 +00:00
68 lines
1.9 KiB
Bash
Executable File
68 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
|
# Build SparkOS disk image using Docker
|
|
# This script builds a .img file without requiring root on the host
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
OUTPUT_DIR="$PROJECT_ROOT/release"
|
|
|
|
echo "SparkOS Disk Image Builder (Docker)"
|
|
echo "===================================="
|
|
echo ""
|
|
|
|
# Clean previous build
|
|
if [ -f "$OUTPUT_DIR/sparkos.img.gz" ]; then
|
|
echo "Cleaning previous image..."
|
|
rm -f "$OUTPUT_DIR/sparkos.img.gz"
|
|
fi
|
|
|
|
mkdir -p "$OUTPUT_DIR"
|
|
|
|
echo "Building disk image using Docker..."
|
|
echo "This may take a few minutes..."
|
|
echo ""
|
|
|
|
# Build the image builder container
|
|
cd "$PROJECT_ROOT"
|
|
docker buildx build \
|
|
--file Dockerfile.image \
|
|
--target image-builder \
|
|
--tag sparkos:image-builder \
|
|
--load \
|
|
.
|
|
|
|
# Extract the image
|
|
echo ""
|
|
echo "Extracting disk image..."
|
|
CONTAINER_ID=$(docker create sparkos:image-builder)
|
|
docker cp "$CONTAINER_ID:/output/sparkos.img.gz" "$OUTPUT_DIR/sparkos.img.gz"
|
|
docker rm "$CONTAINER_ID" > /dev/null
|
|
|
|
echo ""
|
|
echo "SUCCESS! Disk image created:"
|
|
echo " Location: $OUTPUT_DIR/sparkos.img.gz"
|
|
echo " Size: $(du -h "$OUTPUT_DIR/sparkos.img.gz" | cut -f1)"
|
|
echo ""
|
|
|
|
# Show decompressed size
|
|
echo "Decompressed size:"
|
|
DECOMPRESSED_SIZE=$(gunzip -l "$OUTPUT_DIR/sparkos.img.gz" | tail -1 | awk '{print $2}')
|
|
echo " $(numfmt --to=iec-i --suffix=B $DECOMPRESSED_SIZE)"
|
|
echo ""
|
|
|
|
echo "To write to a USB drive:"
|
|
echo " gunzip $OUTPUT_DIR/sparkos.img.gz"
|
|
echo " sudo dd if=$OUTPUT_DIR/sparkos.img of=/dev/sdX bs=4M status=progress"
|
|
echo ""
|
|
echo "WARNING: Replace /dev/sdX with your actual USB device!"
|
|
echo " This will DESTROY all data on the target drive!"
|
|
echo ""
|
|
|
|
echo "To inspect the image:"
|
|
echo " gunzip -c $OUTPUT_DIR/sparkos.img.gz > /tmp/sparkos.img"
|
|
echo " sudo mount -o loop /tmp/sparkos.img /mnt"
|
|
echo " ls -la /mnt"
|
|
echo " sudo umount /mnt"
|