A few stability improvements. Added Fenrir ssh announcement script.

This commit is contained in:
Storm Dragon
2025-12-18 14:02:45 -05:00
parent f4e91f7ee2
commit fbd1c3f671
4 changed files with 230 additions and 9 deletions

View File

@@ -25,16 +25,24 @@ set -e # Don't want to destroy stuff if this goes majorly wrong.
trap cleanup EXIT # make sure the script cleans up after itself before closing.
# shellcheck disable=SC2329 # cleanup is invoked via trap EXIT
cleanup() {
status=$? # capture original exit status so failures propagate
if [[ $mounted -eq 0 ]]; then
umount -R /mnt
partx -d "${loopdev}"
losetup --detach "${loopdev}"
umount -R /mnt || true
fi
if [[ -n "${imageFileName}" ]]; then
if [[ -n "${loopdev:-}" ]]; then
partx -d "${loopdev}" || true
losetup --detach "${loopdev}" || true
fi
if [[ -n "${imageFileName:-}" ]]; then
rm "${imageFileName}"
fi
exit 0
exit "$status"
}
help() {
@@ -122,7 +130,7 @@ imageUrl="http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-aarch64-latest.tar.gz"
fallocate -l "$imageSize" "$imageName"
loopdev="$(losetup --find --show "${imageName}")"
parted --script "${loopdev}" mklabel msdos mkpart primary fat32 0% 200M mkpart primary ext4 200M 100%
parted --script "${loopdev}" mklabel msdos mkpart primary fat32 0% 512M mkpart primary ext4 512M 100%
mkfs.vfat -F32 -n STRMX_BOOT "${loopdev}p1"
mkfs.ext4 -F -L STRMX_ROOT "${loopdev}p2"
mount "${loopdev}p2" /mnt
@@ -130,7 +138,7 @@ mkdir /mnt/boot
mount "${loopdev}p1" /mnt/boot
# Things are mounted now, so set mounted to 0 (bash true)
mounted=0
imageFileName=$(mktemp)
imageFileName=$(mktemp -p . ArchLinuxARM-rpi-aarch64-XXXXXX.tar.gz)
wget "${imageUrl}" -O "${imageFileName}"
bsdtar -xpf "${imageFileName}" -C /mnt
@@ -143,6 +151,7 @@ find ../files/etc -mindepth 1 -maxdepth 1 ! -name skel -exec cp -rv {} /mnt/etc/
PS1="(Chroot) [\u@\h \W] \$" arch-chroot /mnt << EOF
echo "Chroot started."
set -euo pipefail
# set up pacman
pacman-key --init
pacman-key --populate archlinuxarm
@@ -301,6 +310,7 @@ services=(
log-to-ram-sync.timer
log-to-ram-shutdown.service
NetworkManager.service
ssh-login-monitor.service
)
for service in "\${services[@]}"; do
@@ -311,8 +321,7 @@ for service in "\${services[@]}"; do
echo " \$service: FAILED"
fi
done
# Cleanup packages
pacman -Runcds libx11 --noconfirm
pacman -Sc --noconfirm
EOF
@@ -320,5 +329,8 @@ EOF
# Copy skel files to stormux user home (after user rename in chroot)
find ../files/etc/skel/ -mindepth 1 -exec cp -rv "{}" /mnt/home/stormux/ \;
# Copy boot files again to ensure custom config overrides any package changes
cp -rv ../files/boot/* /mnt/boot
# Exiting calls the cleanup function to unmount.
exit 0