arch scripts

It took a moment to work out that there is actually no way of
bootstrapping an arch environment without permanently installing things
to the host system! So we just download a live image and unpack it.

Then after that, getting erlang to work was very easy, just install it,
install zx, run. No R26 incompatibility problems, life is good!
This commit is contained in:
Jarvis Carroll
2025-06-04 17:07:45 +10:00
parent a60bcf941b
commit c2fcde0f26
9 changed files with 241 additions and 0 deletions
Executable
+102
View File
@@ -0,0 +1,102 @@
#!/bin/sh
if test `id -u` -ne 0
then
echo "$0 must be run as root."
return
fi
set -e
FRESH=clean_environment
ROOT=test_environment
add_mount() {
if mountpoint -q "$ROOT$1"
then
echo "$ROOT$1 already mounted."
else
echo "Mounting $2$1 to $ROOT$1"
mkdir -p "$ROOT$1"
mount -o bind "$2$1" "$ROOT$1"
fi
}
remove_mount() {
if mountpoint -q "$ROOT$1"
then
echo "Unmounting $ROOT$1"
umount -l "$ROOT$1"
fi
}
add_mounts() {
add_mount / "$ROOT"
add_mount /proc
add_mount /sys
add_mount /dev
add_mount /dev/pts
add_mount /tmp/.X11-unix
}
remove_mounts() {
remove_mount /tmp/.X11-unix
remove_mount /dev/pts
remove_mount /dev
remove_mount /sys
remove_mount /proc
remove_mount /
}
remove_environment() {
if test -d "$ROOT"
then
# Call this script that automatically unmounts the mount points too.
remove_mounts
echo "Removing $ROOT"
rm -r "$ROOT"
else
echo "No environment found at $ROOT. Doing nothing."
fi
}
remove_everything() {
if test -d "$ROOT"
then
# Call this script that automatically unmounts the mount points too.
remove_environment
fi
if test -d "$FRESH"
then
echo "Removing $FRESH"
rm -r "$FRESH"
fi
if test -d debootstrap
then
echo "Removing debootstrap"
rm -r debootstrap
fi
if test -f pkglist.x86_64.txt
then
echo "Removing pkglist.x86_64.txt"
rm pkglist.x86_64.txt
fi
if test -f archlinux-bootstrap*.tar.zst
then
echo "Removing archlinux bootstrap tarballs."
rm archlinux-bootstrap*.tar.zst
fi
}
case "$1" in
everything) remove_everything ;;
mounts) remove_mounts ;;
add_mounts) add_mounts ;;
environment) remove_environment ;;
"") remove_environment ;;
esac