#!/bin/sh -e HOSTNAME="$1" if [ -z "$HOSTNAME" ]; then echo "usage: $0 hostname" exit 1 fi cleanup() { rm -rf "$tmp" } makefile() { OWNER="$1" PERMS="$2" FILENAME="$3" cat > "$FILENAME" chown "$OWNER" "$FILENAME" chmod "$PERMS" "$FILENAME" } rc_add() { mkdir -p "$tmp"/etc/runlevels/"$2" ln -sf /etc/init.d/"$1" "$tmp"/etc/runlevels/"$2"/"$1" } tmp="$(mktemp -d)" trap cleanup EXIT mkdir -p "$tmp"/etc makefile root:root 0644 "$tmp"/etc/hostname <> "$tmp/etc/apk/repositories" echo "http://dl-cdn.alpinelinux.org/alpine/v3.16/main" >> "$tmp/etc/apk/repositories" echo "http://dl-cdn.alpinelinux.org/alpine/v3.16/community" >> "$tmp/etc/apk/repositories" echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> "$tmp/etc/apk/repositories" echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> "$tmp/etc/apk/repositories" mkdir -p "$tmp"/etc/apk makefile root:root 0644 "$tmp"/etc/apk/world <> /root/preseeded.txt EOF rc_add devfs sysinit rc_add dmesg sysinit rc_add mdev sysinit rc_add hwdrivers sysinit rc_add modloop sysinit rc_add hwclock boot rc_add modules boot rc_add sysctl boot rc_add hostname boot rc_add bootmisc boot rc_add syslog boot # we want our preseed to run & have network while at it rc_add networking boot rc_add local boot rc_add mount-ro shutdown rc_add killprocs shutdown rc_add savecache shutdown tar -c -C "$tmp" etc | gzip -9n > $HOSTNAME.apkovl.tar.gz