Initial commit
This commit is contained in:
Executable
+48
@@ -0,0 +1,48 @@
|
||||
#!/usr/bin/env bash
|
||||
# REFERENCE / OPTIONAL — the normal flow uses the official Arch ISO + `git clone`
|
||||
# (see README). Kept in case a self-contained custom ISO is ever wanted.
|
||||
#
|
||||
# Build the thin custom Arch ISO by extending the official `releng` profile with:
|
||||
# - a few explicit installer packages (extra-packages.x86_64)
|
||||
# - this repo baked into /root/arch-system-th
|
||||
# - a login MOTD with install instructions (airootfs/etc/motd)
|
||||
#
|
||||
# Run on a machine with the `archiso` package installed (needs root for mkarchiso):
|
||||
# sudo ./run.sh [output_dir]
|
||||
set -euo pipefail
|
||||
cd "$(dirname "$0")"
|
||||
REPO_ROOT="$(cd .. && pwd)"
|
||||
OUTDIR="${1:-$REPO_ROOT/out}"
|
||||
RELENG=/usr/share/archiso/configs/releng
|
||||
|
||||
command -v mkarchiso >/dev/null || { echo "install archiso first: pacman -S archiso"; exit 1; }
|
||||
[ -d "$RELENG" ] || { echo "releng profile missing at $RELENG"; exit 1; }
|
||||
|
||||
WORK="$(mktemp -d)"; PROFILE="$WORK/profile"
|
||||
trap 'rm -rf "$WORK"' EXIT
|
||||
|
||||
cp -r "$RELENG" "$PROFILE"
|
||||
|
||||
# extra installer packages
|
||||
cat extra-packages.x86_64 >> "$PROFILE/packages.x86_64"
|
||||
|
||||
# our airootfs overlay (motd, etc.)
|
||||
cp -aT airootfs "$PROFILE/airootfs"
|
||||
|
||||
# bake the repo into the live root (without git history / build output)
|
||||
dest="$PROFILE/airootfs/root/arch-system-th"
|
||||
mkdir -p "$dest"
|
||||
cp -a "$REPO_ROOT/." "$dest/"
|
||||
rm -rf "$dest/.git" "$dest/out"
|
||||
|
||||
# mkarchiso copies airootfs with --no-preserve=mode, so exec bits are dropped and
|
||||
# must be declared in profiledef's file_permissions array (the same way releng's
|
||||
# own scripts get +x). We only need the bootstrap executable here; run.sh then
|
||||
# restores +x across the rest of the repo at runtime, which propagates to the
|
||||
# installed system. file_permissions+=(...) appends to the array defined in releng.
|
||||
printf '\nfile_permissions+=(["/root/arch-system-th/01-install/run.sh"]="0:0:755")\n' \
|
||||
>> "$PROFILE/profiledef.sh"
|
||||
|
||||
mkdir -p "$OUTDIR"
|
||||
mkarchiso -v -w "$WORK/work" -o "$OUTDIR" "$PROFILE"
|
||||
echo "ISO written to $OUTDIR"
|
||||
Reference in New Issue
Block a user