23779690d6
d-i finish-install/reboot_in_background doesn't suppress the 'Installation complete, click Continue' dialog in Trixie. Instead, fork a background reboot from late_command that fires 3s after setup completes, killing the dialog before it can block. Also removes the redundant reboot_in_background setting. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
75 lines
4.4 KiB
INI
75 lines
4.4 KiB
INI
# Debian Preseed — SeniorNet Kiosk
|
|
# 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 / keyboard ──────────────────────────────────────────────
|
|
d-i debian-installer/locale string en_US.UTF-8
|
|
d-i keyboard-configuration/xkb-keymap select us
|
|
|
|
# ── Network ────────────────────────────────────────────────────────
|
|
# Auto, but early_command will pin to the first wired (eth/en) interface
|
|
# if one exists — prevents installer from defaulting to WiFi and asking
|
|
# for a WPA passphrase. Ethernet must be plugged in during install.
|
|
d-i netcfg/choose_interface select auto
|
|
d-i netcfg/get_hostname string kiosk
|
|
d-i netcfg/get_domain string local
|
|
|
|
# ── 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
|
|
|
|
# ── Clock / timezone ───────────────────────────────────────────────
|
|
d-i time/zone string UTC
|
|
d-i clock-setup/utc boolean true
|
|
d-i clock-setup/ntp boolean true
|
|
|
|
# ── 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
|
|
|
|
# ── 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" || true; \
|
|
debconf-set grub-installer/bootdev "/dev/$DISK" || true; \
|
|
ETH=$(ls /sys/class/net/ 2>/dev/null | grep -E '^(eth|en)' | head -1 || true); \
|
|
if [ -n "$ETH" ]; then debconf-set netcfg/choose_interface "$ETH" || true; fi; \
|
|
true
|
|
|
|
d-i partman-auto/method string regular
|
|
d-i partman-auto/choose_recipe select atomic
|
|
d-i partman-partitioning/confirm_write_new_label boolean true
|
|
d-i partman/choose_partition select finish
|
|
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 ──────────────────────────────────────────────
|
|
tasksel tasksel/first multiselect standard, ssh-server
|
|
d-i pkgsel/include string curl git
|
|
|
|
# ── Bootloader ─────────────────────────────────────────────────────
|
|
d-i grub-installer/only boolean true
|
|
d-i grub-installer/bootdev string default
|
|
|
|
# ── 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/branch/master/preseed-bootstrap.sh | bash' ; \
|
|
(sleep 3 && reboot) &
|
|
|
|
# ── Finish ─────────────────────────────────────────────────────────
|
|
# reboot is triggered by late_command background job, bypassing the final dialog
|