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:
parent
a60bcf941b
commit
c2fcde0f26
5
.gitignore
vendored
5
.gitignore
vendored
@ -6,3 +6,8 @@ debian/debootstrap.tar.gz
|
||||
void/clean_environment
|
||||
void/test_environment
|
||||
void/xbps-static*.tar.xz
|
||||
|
||||
arch/archlinux-bootstrap*.tar.zst
|
||||
arch/clean_environment
|
||||
arch/test_environment
|
||||
arch/pkglist.x86_64.txt
|
||||
|
102
arch/cleanup
Executable file
102
arch/cleanup
Executable 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
|
||||
|
50
arch/create_environment
Executable file
50
arch/create_environment
Executable file
@ -0,0 +1,50 @@
|
||||
#!/bin/sh
|
||||
|
||||
if test `id -u` -ne 0
|
||||
then
|
||||
echo "$0 must be run as root."
|
||||
return
|
||||
fi
|
||||
|
||||
set -e
|
||||
|
||||
ROOT=test_environment
|
||||
FRESH=clean_environment
|
||||
|
||||
TARBALL=archlinux-bootstrap-x86_64.tar.zst
|
||||
REPO="https://geo.mirror.pkgbuild.com"
|
||||
|
||||
if test -e "$FRESH"
|
||||
then
|
||||
echo "Clean arch environment found at $FRESH. Good."
|
||||
else
|
||||
echo "No arch environment found at $FRESH, downloading from $REPO"
|
||||
curl -O "$REPO/iso/latest/$TARBALL"
|
||||
tar -xf "$TARBALL"
|
||||
mv root.x86_64 "$FRESH"
|
||||
fi
|
||||
|
||||
if test -e "$ROOT"
|
||||
then
|
||||
echo "Existing installation found at $ROOT, removing."
|
||||
./cleanup
|
||||
fi
|
||||
|
||||
echo "Copying $FRESH to $ROOT."
|
||||
cp -r "$FRESH" "$ROOT"
|
||||
|
||||
echo "Initializing $ROOT."
|
||||
|
||||
./cleanup add_mounts
|
||||
|
||||
chmod 1777 "$ROOT/tmp"
|
||||
|
||||
echo 'Server = http://ftp.swin.edu.au/archlinux/$repo/os/$arch' > "$ROOT/etc/pacman.d/mirrorlist"
|
||||
cp /etc/resolv.conf "$ROOT/etc/resolv.conf"
|
||||
|
||||
|
||||
cp -r install_scripts "$ROOT/root"
|
||||
|
||||
chroot "$ROOT" /root/install_scripts/user_setup "$@" || echo Script failed.
|
||||
|
||||
./cleanup mounts
|
22
arch/enter_environment
Executable file
22
arch/enter_environment
Executable file
@ -0,0 +1,22 @@
|
||||
#!/bin/sh
|
||||
|
||||
if test `id -u` -ne 0
|
||||
then
|
||||
echo "$0 must be run as root."
|
||||
return
|
||||
fi
|
||||
|
||||
ROOT=test_environment
|
||||
|
||||
if test -e "$ROOT"
|
||||
then
|
||||
echo "Using existing environment in $ROOT."
|
||||
else
|
||||
./create_environment
|
||||
fi
|
||||
|
||||
./cleanup add_mounts
|
||||
|
||||
chroot "$ROOT" sudo -iu user "$@"
|
||||
|
||||
./cleanup mounts
|
29
arch/get_pacstrap
Executable file
29
arch/get_pacstrap
Executable file
@ -0,0 +1,29 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Finds pacstrap in $PATH, or download some version of it if not found.
|
||||
# This script prefers to use local copies that are already downloaded, over
|
||||
# system-wide installations, in case you want to test on some specific
|
||||
# outdated version of pacstrap.
|
||||
|
||||
LOCALDIR=`pwd`/arch-install-scripts
|
||||
if test -e "$LOCALDIR/pacstrap"
|
||||
then
|
||||
echo "Found $LOCALDIR/pacstrap in current directory"
|
||||
|
||||
# Run pacstrap without installing it to the system.
|
||||
bash "$LOCALDIR/pacstrap" "$@"
|
||||
elif IT=`command -v pacstrap`
|
||||
then
|
||||
echo "Found $IT in PATH"
|
||||
|
||||
# Use the version of pacstrap that was already installed.
|
||||
pacstrap "$@"
|
||||
else
|
||||
echo "pacstrap not found. Downloading to $LOCALDIR."
|
||||
git clone https://gitlab.archlinux.org/archlinux/arch-install-scripts
|
||||
make -C arch-install-scripts pacstrap
|
||||
|
||||
# Run pacstrap without installing it to the system.
|
||||
bash "$LOCALDIR/pacstrap" "$@"
|
||||
fi
|
||||
|
10
arch/install_scripts/install_miner_pacman
Executable file
10
arch/install_scripts/install_miner_pacman
Executable file
@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
|
||||
sudo pacman -S wget erlang erlang-wx --noconfirm
|
||||
|
||||
wget -q https://zxq9.com/projects/zomp/get_zx && bash get_zx
|
||||
export PATH=$PATH:$HOME/bin
|
||||
|
||||
zx import realm install_scripts/qpq.zrf
|
||||
zx import realm install_scripts/uwiger.zrf
|
||||
zx run qpq-gajumine
|
BIN
arch/install_scripts/qpq.zrf
Normal file
BIN
arch/install_scripts/qpq.zrf
Normal file
Binary file not shown.
23
arch/install_scripts/user_setup
Executable file
23
arch/install_scripts/user_setup
Executable file
@ -0,0 +1,23 @@
|
||||
#!/bin/bash
|
||||
|
||||
pacman-key --init
|
||||
pacman-key --populate archlinux
|
||||
pacman -Sy sudo --noconfirm
|
||||
|
||||
# Overwrite locale setting specified before the chroot
|
||||
export LANG=C
|
||||
export LC_ALL=C
|
||||
|
||||
# Add a passwordless sudoer
|
||||
useradd -m -s /bin/bash -G wheel user
|
||||
passwd -d user
|
||||
echo "user ALL=(ALL) NOPASSWD:ALL" > "/etc/sudoers.d/user"
|
||||
chmod 0440 "/etc/sudoers.d/user"
|
||||
|
||||
# Copy the install scripts into their home directory
|
||||
cp -r ~/install_scripts /home/user
|
||||
chown -R user:user /home/user/install_scripts
|
||||
|
||||
# su to this new user... Or sudo -iu, since we want to pass in arguments too.
|
||||
cd /home/user
|
||||
sudo -iu user "$@"
|
BIN
arch/install_scripts/uwiger.zrf
Normal file
BIN
arch/install_scripts/uwiger.zrf
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user