initial
This commit is contained in:
129
isobuild/scripts/build-iso.sh
Executable file
129
isobuild/scripts/build-iso.sh
Executable file
@@ -0,0 +1,129 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# EcoOS ISO Build Script
|
||||
# Wrapper script for building the EcoOS ISO
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
ROOT_DIR="$(dirname "$SCRIPT_DIR")"
|
||||
|
||||
echo "=== EcoOS ISO Builder ==="
|
||||
echo ""
|
||||
|
||||
# Check if running as root (required for live-build)
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
echo "This script requires root privileges for live-build."
|
||||
echo "Running with sudo..."
|
||||
exec sudo "$0" "$@"
|
||||
fi
|
||||
|
||||
# Check prerequisites
|
||||
echo "[1/6] Checking prerequisites..."
|
||||
|
||||
check_command() {
|
||||
if ! command -v "$1" &> /dev/null; then
|
||||
echo "Error: $1 is not installed"
|
||||
echo "Install with: apt install $2"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
check_command lb live-build
|
||||
check_command debootstrap debootstrap
|
||||
check_command xorriso xorriso
|
||||
check_command deno deno
|
||||
|
||||
echo " All prerequisites found."
|
||||
|
||||
# Check Ubuntu version
|
||||
. /etc/os-release
|
||||
if [[ "$VERSION_ID" != "24.04" && "$VERSION_ID" != "24.10" ]]; then
|
||||
echo "Warning: This script is designed for Ubuntu 24.04+"
|
||||
echo "Current version: $VERSION_ID"
|
||||
fi
|
||||
|
||||
# Bundle the daemon
|
||||
echo ""
|
||||
echo "[2/6] Bundling ecoos_daemon..."
|
||||
|
||||
DAEMON_DIR="$(dirname "$ROOT_DIR")/ecoos_daemon"
|
||||
cd "$DAEMON_DIR"
|
||||
deno compile --allow-all --output bundle/eco-daemon mod.ts
|
||||
echo " Daemon bundled."
|
||||
|
||||
# Prepare build directory
|
||||
echo ""
|
||||
echo "[3/6] Preparing build directory..."
|
||||
|
||||
BUILD_DIR="$ROOT_DIR/build"
|
||||
rm -rf "$BUILD_DIR"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
cd "$BUILD_DIR"
|
||||
|
||||
# Configure live-build
|
||||
echo ""
|
||||
echo "[4/6] Configuring live-build..."
|
||||
|
||||
lb config \
|
||||
--architectures amd64 \
|
||||
--distribution noble \
|
||||
--archive-areas "main restricted universe multiverse" \
|
||||
--binary-images iso-hybrid \
|
||||
--debian-installer false \
|
||||
--memtest none \
|
||||
--firmware-binary true \
|
||||
--firmware-chroot true \
|
||||
--updates true \
|
||||
--security true \
|
||||
--bootloaders "grub-efi" \
|
||||
--uefi-secure-boot enable \
|
||||
--iso-application "EcoOS" \
|
||||
--iso-publisher "EcoBridge" \
|
||||
--iso-volume "EcoOS"
|
||||
|
||||
# Copy package lists
|
||||
echo ""
|
||||
echo "[5/6] Copying configuration files..."
|
||||
|
||||
cp "$ROOT_DIR/config/live-build/package-lists/"*.list.chroot config/package-lists/
|
||||
|
||||
# Prepare includes.chroot
|
||||
mkdir -p config/includes.chroot/opt/eco/bin
|
||||
mkdir -p config/includes.chroot/opt/eco/daemon
|
||||
mkdir -p config/includes.chroot/etc/systemd/system
|
||||
|
||||
# Copy daemon
|
||||
cp "$DAEMON_DIR/bundle/eco-daemon" config/includes.chroot/opt/eco/bin/
|
||||
chmod +x config/includes.chroot/opt/eco/bin/eco-daemon
|
||||
|
||||
# Copy daemon source as backup
|
||||
cp -r "$DAEMON_DIR/ts" config/includes.chroot/opt/eco/daemon/
|
||||
cp "$DAEMON_DIR/mod.ts" config/includes.chroot/opt/eco/daemon/
|
||||
cp "$DAEMON_DIR/deno.json" config/includes.chroot/opt/eco/daemon/
|
||||
|
||||
# Copy systemd service
|
||||
cp "$ROOT_DIR/config/systemd/eco-daemon.service" config/includes.chroot/etc/systemd/system/
|
||||
|
||||
# Copy autoinstall config to binary includes
|
||||
mkdir -p config/includes.binary/autoinstall
|
||||
cp "$ROOT_DIR/config/autoinstall/user-data" config/includes.binary/autoinstall/
|
||||
touch config/includes.binary/autoinstall/meta-data
|
||||
|
||||
echo " Configuration complete."
|
||||
|
||||
# Build ISO
|
||||
echo ""
|
||||
echo "[6/6] Building ISO (this may take 15-30 minutes)..."
|
||||
echo ""
|
||||
|
||||
lb build
|
||||
|
||||
# Move ISO to output
|
||||
mkdir -p "$ROOT_DIR/output"
|
||||
mv *.iso "$ROOT_DIR/output/ecoos.iso" 2>/dev/null || true
|
||||
|
||||
echo ""
|
||||
echo "=== Build Complete ==="
|
||||
echo "ISO: $ROOT_DIR/output/ecoos.iso"
|
||||
Reference in New Issue
Block a user