From 3a7abbc1a075c692b354ed2be40d5b4131724baf Mon Sep 17 00:00:00 2001 From: Damien Date: Wed, 27 May 2026 11:01:41 +0200 Subject: [PATCH] chore(gitea-runner): fix tty1 autologin on Alpine LXC MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Port the working autologin block from openbao/install.sh so both Proxmox installers behave identically. The previous version assumed agetty was already installed and relied on a sed pattern that no-ops on fresh Alpine images; it also never told PID 1 to re-read /etc/inittab, so the change required a reboot. - Install agetty (with util-linux fallback) via apk. - Drop any existing tty1 line and append the autologin line (robust against inittab layout drift across Alpine releases). - SIGHUP PID 1 and kill any stale getty so init respawns the new line immediately — no reboot needed, no first-login "type exit once" wart. --- gitea-runner/install.sh | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/gitea-runner/install.sh b/gitea-runner/install.sh index 050c9ac..906485d 100644 --- a/gitea-runner/install.sh +++ b/gitea-runner/install.sh @@ -216,12 +216,24 @@ LOGROTATE ln -sf /usr/sbin/logrotate /etc/periodic/daily/logrotate 2>/dev/null || true - log_info "Enabling console auto-login..." - mkdir -p /etc/conf.d - cat <<'EOF' > /etc/conf.d/agetty -agetty_options="--autologin root --noclear" -EOF - sed -i 's|^tty1::respawn:/sbin/getty.*|tty1::respawn:/sbin/agetty --autologin root --noclear 38400 tty1|' /etc/inittab + log_info "Enabling console auto-login on tty1..." + # Alpine ships busybox getty by default; agetty (from util-linux) is what + # supports --autologin. + apk add --no-cache agetty >/dev/null 2>&1 || apk add --no-cache util-linux >/dev/null + + # Replace any existing tty1 entry, then append our autologin line. Doing it + # in two steps (delete + append) is more robust than an in-place sed against + # a pattern that may drift across Alpine releases. + sed -i '/^tty1::/d' /etc/inittab + echo 'tty1::respawn:/sbin/agetty --autologin root --noclear 38400 tty1' >> /etc/inittab + + # Tell PID 1 to re-read /etc/inittab so the change takes effect without a reboot. + kill -HUP 1 2>/dev/null || true + + # Kick any getty/agetty still attached to tty1 so init respawns it *now* with + # the new line — otherwise the first web-console session lands on the stale + # process and the operator has to type `exit` once before autologin kicks in. + pkill -KILL -f '(getty|agetty).*tty1' 2>/dev/null || true log_info "Cleaning up..." rm -rf /var/cache/apk/*