Compare commits

...

9 Commits

Author SHA1 Message Date
Jarvis Carroll c2fcde0f26 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!
2025-06-04 17:07:45 +10:00
Jarvis Carroll a60bcf941b add xbps/kerl install scripts for Void 2025-06-03 09:09:33 +10:00
Jarvis Carroll c200c89b75 Add scripts for Void scripts 2025-06-02 23:36:08 +10:00
Jarvis Carroll b344241b33 open miner with kerl 2025-05-30 13:07:25 +10:00
Jarvis Carroll fb153a0e64 script for headless miner
This one we don't install any gtk/wx craziness, and the whole thing
becomes much faster as a result.
2025-05-30 11:42:02 +10:00
Jarvis Carroll 91d85c8ecc kerl erlang/zx/gajudesk script
This needed a 64-bit debian system to build, so I guess I'll just test
64 bit systems from now on.
2025-05-30 10:23:16 +10:00
Jarvis Carroll 4852dc3244 add --no-install-recommends
--no-install-recommends is a big help, whether we're installing all of
`erlang` or just `erlang-wx`, but `erlang-wx` is still so close in size
that we still just use `erlang`.
2025-05-29 17:00:54 +10:00
Jarvis Carroll e37622f41f Rename gajudesk script 2025-05-27 16:59:18 +10:00
Jarvis Carroll 001d337c84 Launch gajumine too
Not functionally different, zx just needs the .zrf files to find
gajumine.
2025-05-27 16:57:50 +10:00
27 changed files with 545 additions and 30 deletions
+9
View File
@@ -2,3 +2,12 @@ debian/clean_environment
debian/test_environment
debian/debootstrap
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
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
+50
View 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
View 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
View 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
View 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
Binary file not shown.
+23
View 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 "$@"
Binary file not shown.
+1 -1
View File
@@ -14,7 +14,7 @@ then
else
echo "No debian environment found at $FRESH, downloading with debootstrap."
mkdir -p $FRESH
./get_debootstrap --arch i386 sid "$FRESH" http://deb.debian.org/debian/
./get_debootstrap --arch amd64 sid "$FRESH" http://deb.debian.org/debian/
fi
if test -e "$ROOT"
-4
View File
@@ -1,4 +0,0 @@
#!/bin/sh
sudo apt -y install wget erlang
wget -q https://zxq9.com/projects/zomp/get_zx && bash get_zx
~/bin/zx run gajudesk
+17
View File
@@ -0,0 +1,17 @@
#!/bin/sh
if [ $# -eq 0 ]; then
>&2 echo "A public key must be provided."
return
fi
# Since we don't need the 238 packages required to run wx applications, we
# might as well see if a headless miner can run on just a subset of erlang.
sudo apt -y install wget erlang-tools erlang-dev erlang-eunit erlang-inets
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 uwiger-gmhive_client -gmhc pubkey "$1"
+10
View File
@@ -0,0 +1,10 @@
#!/bin/sh
sudo apt -y install wget erlang --no-install-recommends
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
+22
View File
@@ -0,0 +1,22 @@
#!/bin/sh
sudo apt update
sudo apt upgrade
sudo apt -y install \
gcc curl g++ dpkg-dev build-essential automake autoconf \
libncurses-dev libssl-dev flex xsltproc libwxgtk3.2-dev \
wget vim git
curl -O https://raw.githubusercontent.com/kerl/kerl/master/kerl
chmod a+x kerl
./kerl build 27.3.4 27.3.4
./kerl install 27.3.4 ~/.erts/27.3.4
echo '. "$HOME"/.erts/27.3.4/activate' >> .bashrc
. ~/.erts/27.3.4/activate
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
+11
View File
@@ -0,0 +1,11 @@
#!/bin/sh
# We actually only need
# erlang-base erlang-tools erlang-dev erlang-eunit erlang-inets erlang-wx
# But erlang-wx gives 238 out of the 273 dependencies of a full erlang install.
sudo apt -y install wget erlang --no-install-recommends
wget -q https://zxq9.com/projects/zomp/get_zx && bash get_zx
export PATH=$PATH:$HOME/bin
zx run gajudesk
+20
View File
@@ -0,0 +1,20 @@
#!/bin/sh
sudo apt update
sudo apt upgrade
sudo apt -y install \
gcc curl g++ dpkg-dev build-essential automake autoconf \
libncurses-dev libssl-dev flex xsltproc libwxgtk3.2-dev \
wget vim git
curl -O https://raw.githubusercontent.com/kerl/kerl/master/kerl
chmod a+x kerl
./kerl build 27.3.4 27.3.4
./kerl install 27.3.4 ~/.erts/27.3.4
echo '. "$HOME"/.erts/27.3.4/activate' >> .bashrc
. ~/.erts/27.3.4/activate
wget -q https://zxq9.com/projects/zomp/get_zx && bash get_zx
export PATH=$PATH:$HOME/bin
zx run gajudesk
BIN
View File
Binary file not shown.
Binary file not shown.
-25
View File
@@ -1,25 +0,0 @@
#!/bin/sh
if test `id -u` -ne 0
then
echo "$0 must be run as root."
return
fi
ROOT=test_environment
check_mount() {
if mountpoint "$ROOT$1" > /dev/null
then
echo "$ROOT$1 already mounted."
else
mkdir -p "$ROOT$1"
mount -o bind "$1" "$ROOT$1"
fi
}
check_mount /proc
check_mount /sys
check_mount /dev
check_mount /dev/pts
Executable
+86
View File
@@ -0,0 +1,86 @@
#!/bin/sh
if test `id -u` -ne 0
then
echo "$0 must be run as root."
return
fi
FRESH=clean_environment
ROOT=test_environment
add_mount() {
if mountpoint "$ROOT$1" -q
then
echo "$ROOT$1 already mounted."
else
echo "Mounting $1 to $ROOT$1"
mkdir -p "$ROOT$1"
mount -o bind "$1" "$ROOT$1"
fi
}
remove_mount() {
if mountpoint "$ROOT$1" -q
then
echo "Unmounting $ROOT$1"
umount "$ROOT$1"
fi
}
add_mounts() {
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_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 -f xbps-static*.tar.xz
then
echo "Removing xbps-static tarballs."
rm xbps-static*.tar.xz
fi
}
case "$1" in
everything) remove_everything ;;
mounts) remove_mounts ;;
add_mounts) add_mounts ;;
environment) remove_environment ;;
"") remove_environment ;;
esac
+63
View File
@@ -0,0 +1,63 @@
#!/bin/sh
if test `id -u` -ne 0
then
echo "$0 must be run as root."
return
fi
ROOT=test_environment
FRESH=clean_environment
TARBALL=xbps-static-static-0.59_5.x86_64-musl.tar.xz
# See https://xmirror.voidlinux.org/ for other mirrors.
REPO=https://ftp.swin.edu.au/voidlinux
if test -e "$FRESH"
then
echo "Void installation found at $FRESH. Good."
else
if test -e "$TARBALL"
then
echo "Tarball found."
else
URL="$REPO/static/$TARBALL"
echo "Fetching tarball from $URL"
curl "$URL" -O
fi
mkdir "$FRESH"
tar xf "$TARBALL" -C "$FRESH"
mkdir -p "$FRESH/etc/xbps.d"
echo "repository=$REPO/current" > "$FRESH/etc/xbps.d/00-repository-main.conf"
XBPS_ARCH=x86_64 "$FRESH/usr/bin/xbps-install.static" -r "$FRESH" -S base-system
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."
chmod 1777 "$ROOT"
chmod 1777 "$ROOT/bin"
chmod 1777 "$ROOT/tmp"
chmod 4755 "$ROOT/usr/bin/sudo"
# Add DNS configs
cp /etc/resolv.conf "$ROOT/etc/resolv.conf"
cp -r install_scripts "$ROOT/root"
./cleanup add_mounts
chroot "$ROOT" /root/install_scripts/user_setup "$@"
./cleanup mounts
+22
View 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
+21
View File
@@ -0,0 +1,21 @@
#!/bin/sh
sudo xbps-install -y curl wget git gcc autoconf make libxslt noto-fonts-ttf \
wxWidgets-gtk3-devel openssl-devel ncurses-devel glu-devel
mkdir ~/bin
ln -s /usr/bin/wx-config-gtk3 ~/bin/wx-config
export PATH=$PATH:$HOME/bin
curl -O https://raw.githubusercontent.com/kerl/kerl/master/kerl
chmod a+x kerl
./kerl build 27.3.4 27.3.4
./kerl install 27.3.4 ~/.erts/27.3.4
echo '. "$HOME"/.erts/27.3.4/activate' >> .bashrc
. ~/.erts/27.3.4/activate
wget -q https://zxq9.com/projects/zomp/get_zx && bash get_zx
zx import realm ~/install_scripts/qpq.zrf
zx import realm ~/install_scripts/uwiger.zrf
zx run qpq-gajumine
+8
View File
@@ -0,0 +1,8 @@
#!/bin/sh
sudo xbps-install wget erlang-wx noto-fonts-ttf
wget -q https://zxq9.com/projects/zomp/get_zx && bash get_zx
export PATH=$PATH:$HOME/bin
zx run gajudesk
Binary file not shown.
+19
View File
@@ -0,0 +1,19 @@
#!/bin/bash
# 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 /root/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 "$@"
Binary file not shown.