From 51e426e9bf8459c7c40e07b067db2c2f7af5b60a Mon Sep 17 00:00:00 2001 From: macmpi Date: Tue, 16 May 2023 14:36:41 +0200 Subject: [PATCH] preserve original config files better this would allow to also use apkovl to rescue existing disk-based setup --- headless.apkovl.tar.gz | Bin 5242 -> 5644 bytes overlay/etc/local.d/headless.start | 84 ++++++++++++++++++++++------- 2 files changed, 65 insertions(+), 19 deletions(-) diff --git a/headless.apkovl.tar.gz b/headless.apkovl.tar.gz index faed1ed7cabfeedcb39336fc306c3bdd3b93c9e0..13cfcfdd675e468d3b5abcd21241d9394da2ef7a 100644 GIT binary patch literal 5644 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 A(f|Me diff --git a/overlay/etc/local.d/headless.start b/overlay/etc/local.d/headless.start index b68e546..847d3f7 100755 --- a/overlay/etc/local.d/headless.start +++ b/overlay/etc/local.d/headless.start @@ -5,6 +5,43 @@ VERSION="0.7" + +_apk() { + local cmd="$1" + local pkg="$2" + + case $cmd in + add) # install only if not already present + if ! apk info | grep -wq "${pkg}"; then + apk add "$pkg" && printf "${pkg} " >> /tmp/.trash/installed + fi + ;; + del) # delete only if previously installed + if grep -wq "$pkg" /tmp/.trash/installed; then + apk del "$pkg" && sed -i 's/\b'"${pkg}"'\b//' /tmp/.trash/installed + fi + ;; + *) + echo "only add/del: wrong usage"; exit + ;; + esac +} + +_preserve() { + [ -f "$1" ] && cp "$1" "${1}.orig" +} + +_restore() { + if [ -f "${1}.orig" ]; then + mv -- "${1}.orig" "${1}" + else + rm -rf "${1}" + fi +} + +##### End of part to be dupplicated into post-cleanup (do not alter!) + + # Redirect stdout and errors to console as rc.local does not log anything exec 1>/dev/console 2>&1 @@ -22,12 +59,14 @@ rc-service seedrng start ## Setup Network interfaces if [ -f "${ovlpath}/wpa_supplicant.conf" ]; then logger -st ${0##*/} "Wifi setup found !" - apk add wpa_supplicant + _apk add wpa_supplicant + _preserve "/etc/wpa_supplicant/wpa_supplicant.conf" install -m600 "${ovlpath}/wpa_supplicant.conf" /etc/wpa_supplicant/wpa_supplicant.conf else logger -st ${0##*/} "Wifi setup not found !" fi +_preserve "/etc/network/interfaces" if ! install -m644 "${ovlpath}/interfaces" /etc/network/interfaces; then # set default interfaces if not specified by interface file on boot storage logger -st ${0##*/} "No interfaces file supplied, building default interfaces..." @@ -77,18 +116,21 @@ fi echo "Using following network interfaces:" cat /etc/network/interfaces +_preserve "/etc/hostname" echo "alpine-headless" > /etc/hostname hostname -F /etc/hostname -grep -q "wlan" /etc/network/interfaces && [ -f /etc/wpa_supplicant/wpa_supplicant.conf ] && rc-service wpa_supplicant start +grep -q "wlan" /etc/network/interfaces && \ + [ -f /etc/wpa_supplicant/wpa_supplicant.conf ] && \ + rc-service wpa_supplicant start rc-service networking start ## Setup temporary SSH server (root login, no password) -## we use some bundled or optionaly provided keys to avoid generation at startup and save time -apk add openssh -cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig -cp /etc/conf.d/sshd /etc/conf.d/sshd.orig +## We use some bundled (or optionaly provided) keys to avoid generation at startup and save time +_apk add openssh +_preserve "/etc/ssh/sshd_config" +_preserve "/etc/conf.d/sshd" cat <<-EOF >> /etc/ssh/sshd_config AuthenticationMethods none @@ -100,26 +142,27 @@ cat <<-EOF >> /etc/ssh/sshd_config # Banner file warn="" grep -q "${ovlpath}.*[[:space:]]ro[[:space:],]" /proc/mounts; RO=$? -[ "$RO" -eq "0" ] && warn="(remount partition read-write!)" +[ "$RO" -eq "0" ] && warn="(remount partition rw!)" cat <<-EOF > /tmp/.trash/banner Alpine Linux headless bootstrap v$VERSION by macmpi -You may want to delete/rename overlay before next reboot ${warn}: +You may want to delete/rename .apkovl file before reboot ${warn}: $ovl (can be done automatically with unattended script - see sample snippet) + EOF # Bundled temporary keys are moved in RAM /tmp so they won't be stored -# within permanent config later (new ones will then be generated) +# within permanent config later (new ones will then be generated at reboot) KEYGEN_STANCE="sshd_disable_keygen=yes" mv /etc/ssh/ssh_host_*_key* /tmp/.trash/. # Inject optional custom keys (those might be stored) if install -m600 "${ovlpath}"/ssh_host_*_key* /etc/ssh/; then - # check for empty key within injected ones: generate new keys if found + # check for empty key within injected ones: if found, generate new keys if find /etc/ssh/ -maxdepth 1 -type f -name 'ssh_host_*_key*' -empty | grep -q .; then rm /etc/ssh/ssh_host_*_key* KEYGEN_STANCE="" @@ -141,16 +184,19 @@ rc-service sshd start ## Prep for final post-cleanup ## clears any installed packages and settings -cat <<-EOF > /tmp/.trash/post-cleanup - #!/bin/sh +# copy begininng of this file to keep functions +sed -n '/^#* End .*alter!)$/q;p' /etc/local.d/headless.start > /tmp/.trash/post-cleanup + +cat <<-EOF >> /tmp/.trash/post-cleanup + logger -st ${0##*/} "Cleaning-up..." - mv /etc/ssh/sshd_config.orig /etc/ssh/sshd_config - mv /etc/conf.d/sshd.orig /etc/conf.d/sshd - apk del openssh - apk del wpa_supplicant - rm -rf /etc/wpa_supplicant - rm /etc/network/interfaces - rm /etc/hostname + _restore "/etc/ssh/sshd_config" + _restore "/etc/conf.d/sshd" + _apk del openssh + _restore "/etc/wpa_supplicant/wpa_supplicant.conf" + _apk del wpa_supplicant + _restore "/etc/network/interfaces" + _restore "/etc/hostname" rm /etc/modules-load.d/g_ether.conf rm /etc/modprobe.d/g_ether.conf rc-update del local default