#!/bin/sh echo "[AUTO-INSTALL] Starting headless Ubuntu network install..." SERVER="http://192.168.x.x" # replace with your LAN IP IMG_URL="$SERVER/ubuntu/noble-preinstalled-server-arm64+raspi.img.xz" USERDATA_URL="$SERVER/ubuntu/autoinstall/user-data" METADATA_URL="$SERVER/ubuntu/autoinstall/meta-data" DEVICE="/dev/mmcblk0" echo "[AUTO-INSTALL] Waiting for network..." for i in $(seq 1 30); do ping -c1 1.1.1.1 >/dev/null 2>&1 && break sleep 2 done echo "[AUTO-INSTALL] Downloading Ubuntu image..." mkdir -p /mnt/work cd /mnt/work wget -q "$IMG_URL" -O ubuntu.img.xz echo "[AUTO-INSTALL] Writing image to SD card..." xz -d < ubuntu.img.xz | dd of=$DEVICE bs=4M status=progress conv=fsync sync sleep 3 BOOT_PART="${DEVICE}p1" mkdir -p /mnt/boot mount $BOOT_PART /mnt/boot || mount ${DEVICE}1 /mnt/boot mkdir -p /mnt/boot/autoinstall wget -q "$USERDATA_URL" -O /mnt/boot/autoinstall/user-data wget -q "$METADATA_URL" -O /mnt/boot/autoinstall/meta-data sync umount /mnt/boot echo "[AUTO-INSTALL] Install complete. Powering off." poweroff -f