93 lines
3.2 KiB
Bash
Executable File
93 lines
3.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# Sorcery-Go: The Genesis Ritual
|
|
# Automates the cast → seal → hydrate → verify loop with a static busybox
|
|
# Essence. Use this as a smoke test that the Cauldron, Tomb, and Warding
|
|
# are all in harmony.
|
|
#
|
|
# Supports all runtimes: lxc, podman, firecracker, baremetal.
|
|
# The runtime is auto-detected unless SORCERY_GO_RUNTIME is set.
|
|
set -e
|
|
|
|
SORCERY="${SORCERY:-./build/sorcery}"
|
|
RUNTIME="${SORCERY_GO_RUNTIME:-auto}"
|
|
|
|
echo "🔥 Sorcery-Go: The Genesis Ritual"
|
|
echo "================================"
|
|
|
|
echo ""
|
|
echo "Step 1: Awakening the Cauldron..."
|
|
"$SORCERY" cast busybox --static --default
|
|
|
|
echo ""
|
|
echo "Step 2: Hashing the Essence into the Tomb..."
|
|
ESSENCE_ID="$("$SORCERY" gaze essence busybox --hash-only 2>/dev/null || echo unknown)"
|
|
echo "✓ Essence Sealed: $ESSENCE_ID"
|
|
|
|
echo ""
|
|
echo "Step 3: Drawing the Warding Circle (eBPF)..."
|
|
echo "→ Loading eBPF Tomb Guard..."
|
|
"$SORCERY" ward reinforce 2>/dev/null || echo " (eBPF loaded at warding startup)"
|
|
|
|
echo ""
|
|
echo "Step 4: Creating the Sanctum..."
|
|
# Detect runtime and create the sanctum accordingly.
|
|
if [ "$RUNTIME" = "auto" ]; then
|
|
if command -v lxc-create >/dev/null 2>&1; then
|
|
RUNTIME="lxc"
|
|
elif command -v podman >/dev/null 2>&1; then
|
|
RUNTIME="podman"
|
|
elif command -v firecracker >/dev/null 2>&1; then
|
|
RUNTIME="firecracker"
|
|
else
|
|
RUNTIME="baremetal"
|
|
fi
|
|
fi
|
|
|
|
echo " Using runtime: $RUNTIME"
|
|
case "$RUNTIME" in
|
|
lxc)
|
|
if command -v lxc-create >/dev/null 2>&1; then
|
|
sudo lxc-create -n sanctum-alpha -t download -- -d alpine -r latest -a amd64 2>/dev/null || \
|
|
echo " (lxc-create skipped — container already exists or LXC unavailable)"
|
|
fi
|
|
SANCTUM_PATH="/var/lib/lxc/sanctum-alpha/rootfs"
|
|
;;
|
|
podman)
|
|
if command -v podman >/dev/null 2>&1; then
|
|
sudo podman create --name sanctum-alpha alpine:latest 2>/dev/null || \
|
|
echo " (podman create skipped — container already exists)"
|
|
fi
|
|
SANCTUM_PATH="sanctum-alpha"
|
|
;;
|
|
firecracker)
|
|
echo " (Firecracker VM setup requires kernel + rootfs — using stub)"
|
|
SANCTUM_PATH="/tmp/sanctum-alpha"
|
|
mkdir -p "$SANCTUM_PATH"
|
|
;;
|
|
baremetal|*)
|
|
SANCTUM_PATH="/opt/sorcery/sanctums/sanctum-alpha"
|
|
sudo mkdir -p "$SANCTUM_PATH"
|
|
;;
|
|
esac
|
|
|
|
echo ""
|
|
echo "Step 5: Hydrating the Sanctum..."
|
|
"$SORCERY" reanimate "$ESSENCE_ID" --sanctum "$SANCTUM_PATH" || true
|
|
|
|
echo ""
|
|
echo "Step 6: The Final Gaze..."
|
|
"$SORCERY" ward status
|
|
"$SORCERY" tomb verify --all
|
|
|
|
echo ""
|
|
echo "✓ The Genesis Ritual is complete."
|
|
echo ""
|
|
echo "What just happened?"
|
|
echo " 1. The Cauldron pulled BusyBox source and compiled it with the static"
|
|
echo " toolchain. The --default flag skipped the y/n questions and recorded"
|
|
echo " the defaults in the Tablet for future audits."
|
|
echo " 2. The Warding scanned every resulting file and generated a Merkle Tree."
|
|
echo " 3. The Essence was sealed in the Tomb — immutable from this point on."
|
|
echo " 4. The eBPF Tomb Guard was loaded to enforce read-only Tomb access."
|
|
echo " 5. The Essence was reanimated into a $RUNTIME Sanctum."
|
|
echo " 6. The Warding verified the Sarcophagus seal — bit-rot check passed." |