feat: generic user, dynamic paths, simplified ISO build pipeline

This commit is contained in:
2026-05-23 14:26:25 +00:00
parent 312db58775
commit cb5bf7ff94
5 changed files with 319 additions and 260 deletions
+33 -26
View File
@@ -1,58 +1,65 @@
# Debian Preseed — SeniorNet Kiosk
# Silent/unattended installer configuration
# Silent unattended Debian base install.
# After install, downloads preseed-bootstrap.sh which installs a first-boot
# setup wizard. On first reboot the wizard prompts for username/name,
# installs the kiosk, then reboots into kiosk mode.
# Locale and keyboard
# ── Locale / keyboard ──────────────────────────────────────────────
d-i debian-installer/locale string en_US.UTF-8
d-i keyboard-configuration/xkb-keymap select us
# Network
# ── Network ────────────────────────────────────────────────────────
d-i netcfg/choose_interface select auto
d-i netcfg/get_hostname string kiosk
d-i netcfg/get_domain string local
d-i netcfg/hostname string kiosk
# Mirror
# ── Mirror ─────────────────────────────────────────────────────────
d-i mirror/country string manual
d-i mirror/http/hostname string deb.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string
# Partitioning — use entire disk
d-i partman-auto/method string lvm
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-auto/purge_lvm_confirmation boolean true
d-i partman-auto/disk string /dev/sda
d-i partman-auto/choose_recipe select atomic
d-i partman/confirm_write_new_label boolean true
d-i partman/confirm boolean true
# Clock/timezone
# ── Clock / timezone ───────────────────────────────────────────────
d-i time/zone string UTC
d-i clock-setup/utc boolean true
d-i clock-setup/ntp boolean true
# Account setup — root with no password
# ── Accounts ───────────────────────────────────────────────────────
# Root only — install-kiosk.sh creates the kiosk user interactively.
d-i passwd/root-login boolean true
d-i passwd/make-user boolean false
d-i passwd/root-password password kiosk
d-i passwd/root-password-again password kiosk
# APT
# ── Disk — auto-detect first real disk ─────────────────────────────
# Handles /dev/sda, /dev/nvme0n1, /dev/vda, etc.
d-i preseed/early_command string \
DISK=$(ls /sys/block/ | grep -Ev '^(loop|sr|fd|ram)' | head -1); \
debconf-set partman-auto/disk "/dev/$DISK"; \
debconf-set grub-installer/bootdev "/dev/$DISK"
d-i partman-auto/method string regular
d-i partman-auto/choose_recipe select atomic
d-i partman/confirm_write_new_label boolean true
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
# ── APT ────────────────────────────────────────────────────────────
d-i apt-setup/services-select multiselect security, updates
d-i apt-setup/security_host string security.debian.org
# Package selection
# ── Package selection ──────────────────────────────────────────────
tasksel tasksel/first multiselect standard, ssh-server
d-i pkgsel/include string openssh-server build-essential git curl wget
d-i pkgsel/include string curl git
# Grub bootloader
# ── Bootloader ─────────────────────────────────────────────────────
d-i grub-installer/only boolean true
d-i grub-installer/bootdev string default
# Finish installation
d-i finish-install/reboot_in_background boolean true
# Run post-install script
# ── Post-install bootstrap ─────────────────────────────────────────
# Downloads preseed-bootstrap.sh which installs the first-boot setup service.
d-i preseed/late_command string \
in-target bash -c 'curl -fsSL https://gitea.jgitta.com/jgitta/senior-kiosk/raw/master/install-kiosk.sh | bash' || \
in-target bash -c 'cd /root && git clone https://gitea.jgitta.com/jgitta/senior-kiosk.git && bash senior-kiosk/install-kiosk.sh'
in-target bash -c 'curl -fsSL https://gitea.jgitta.com/jgitta/senior-kiosk/raw/branch/master/preseed-bootstrap.sh | bash'
# ── Finish ─────────────────────────────────────────────────────────
d-i finish-install/reboot_in_background boolean true