#!/bin/bash # ========================================== # AdaptiveOS Builder v6 (16GB RAM Disk Edition) # ========================================== # 1. Setup 16GB RAM Disk (tmpfs) on the HOST for the build process RAMDISK="/tmp/adaptive-build" echo "[0/8] Creating 16GB RAM disk at $RAMDISK..." sudo mkdir -p "$RAMDISK" sudo umount "$RAMDISK" 2>/dev/null # Mount 16GB of RAM as a filesystem sudo mount -t tmpfs -o size=16G tmpfs "$RAMDISK" cd "$RAMDISK" set -e ALPINE_VERSION="3.19.1" ISO_NAME="alpine-virt-${ALPINE_VERSION}-x86_64.iso" ISO_URL="https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/x86_64/${ISO_NAME}" echo "[1/8] Downloading Alpine..." wget -nc "$ISO_URL" echo "[2/8] Extracting ISO..." mkdir -p alpine-custom alpine-initrd sudo mount -o loop "${ISO_NAME}" /mnt cp -a /mnt/. alpine-custom/ sudo umount /mnt echo "[3/8] Unpacking initramfs..." cd alpine-initrd zcat ../alpine-custom/boot/initramfs-virt | sudo cpio -idm > /dev/null 2>&1 echo "[4/8] Injecting Learning Loop & 16GB RAM Workspace..." sudo mkdir -p etc/profile.d sudo tee etc/profile.d/adaptive-loop.sh > /dev/null << 'EOF' #!/bin/sh # 1. Create a 16GB RAM workspace inside the booted OS mkdir -p /mnt/ramdisk mount -t tmpfs -o size=16G tmpfs /mnt/ramdisk 2>/dev/null f() { # 2. Store learned fixes in the RAM disk for maximum speed touch /mnt/ramdisk/.f FIX=$(awk -v k="$*" 'substr($0, 1, length(k)+1) == k"=" {print substr($0, length(k)+2); exit}' /mnt/ramdisk/.f) until { eval "$FIX" 2>/dev/null; "$@"; }; do printf "\n[ADAPTIVE LOOP] Command failed. Enter fix: " read n if [ -n "$n" ]; then echo "$*=$n" >> /mnt/ramdisk/.f FIX="$n" eval "$FIX" else return 1 fi done } echo "=========================================" echo " Welcome to the Adaptive Governance OS " echo " 16GB RAM Disk Mounted: /mnt/ramdisk " echo " Persistent Learning Loop Initialized. " echo " Usage: f " echo "=========================================" EOF sudo chmod +x etc/profile.d/adaptive-loop.sh echo "[5/8] Repacking initramfs..." sudo find . | sudo cpio -o -H newc > ../alpine-custom/boot/initramfs-virt.tmp 2>/dev/null gzip -9 < ../alpine-custom/boot/initramfs-virt.tmp > ../alpine-custom/boot/initramfs-virt rm ../alpine-custom/boot/initramfs-virt.tmp cd .. echo "[6/8] Ensuring Bootloader Paths Exist..." # Dynamically find the bootloader so xorriso doesn't fail on hardcoded paths ISOLINUX_BIN=$(find alpine-custom/boot -name "isolinux.bin" | head -n 1) ISOLINUX_BIN_REL=${ISOLINUX_BIN#alpine-custom/} BOOT_DIR_REL=$(dirname "$ISOLINUX_BIN_REL") mkdir -p alpine-custom/boot/syslinux if [ "$BOOT_DIR_REL" != "boot/syslinux" ]; then # Create a symlink so xorriso's hardcoded -c boot/syslinux/boot.cat works ln -sfn $(basename "$BOOT_DIR_REL") alpine-custom/boot/syslinux fi echo "[7/8] Compiling Bootable ISO..." wget -q "https://repo.or.cz/syslinux.git/blob_plain/HEAD:/mbr/isohdpfx.bin" -O isohdpfx.bin || true XORRISO_CMD=(xorriso -as mkisofs -o adaptive-os.iso -V "AdaptiveOS" -c boot/syslinux/boot.cat -b "$ISOLINUX_BIN_REL" -no-emul-boot -boot-load-size 4 -boot-info-table) if [ -f "isohdpfx.bin" ]; then XORRISO_CMD+=(-isohybrid-mbr "isohdpfx.bin") fi XORRISO_CMD+=(alpine-custom) "${XORRISO_CMD[@]}" echo "[8/8] Moving ISO to Host and Cleaning Up..." cp adaptive-os.iso ~/ cd ~ sudo umount "$RAMDISK" sudo rmdir "$RAMDISK" echo "" echo "=========================================" echo " SUCCESS: Bootable ISO created in RAM!" echo " File: ~/adaptive-os.iso" echo "=========================================" echo "" echo "To boot the VM and allocate 16GB of RAM to the OS, run:" echo "qemu-system-x86_64 -cdrom ~/adaptive-os.iso -m 16G"