mirror of
https://github.com/johndoe6345789/SparkOS.git
synced 2026-04-24 13:34:56 +00:00
Add Docker-based disk image building for releases
Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com>
This commit is contained in:
67
scripts/build-image.sh
Executable file
67
scripts/build-image.sh
Executable file
@@ -0,0 +1,67 @@
|
||||
#!/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"
|
||||
Reference in New Issue
Block a user