yino/iso/preseed.cfg
Michael Smith 5fa89444d7 Fix preseed late_command breaking finish-install stage
The debconf preseed parser interprets \n in string values as literal
newlines. The printf format string had its \n converted to real newlines
before the shell saw it, causing ExecStart= to be executed as a separate
command ("Illegal number: ExecStart="). Replace the single printf with
multiple echo statements that avoid \n entirely.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 00:44:21 +01:00

70 lines
2.4 KiB
INI

# Yino preseed configuration for Debian 13 (Trixie)
# Performs an unattended install, prompting only for:
# 1. LUKS encryption passphrase
# 2. Full name, username, and password
# Locale and keyboard
d-i debian-installer/locale string en_US.UTF-8
d-i keyboard-configuration/xkb-keymap select us
# Network — skip (offline DVD install)
d-i netcfg/enable boolean false
# Mirror — no network mirror
d-i apt-setup/use_mirror boolean false
# Clock
d-i clock-setup/utc boolean true
d-i time/zone string UTC
# Partitioning — encrypted LVM with btrfs root
d-i partman-auto/method string crypto
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true
d-i partman-auto-lvm/guided_size string max
d-i partman-auto-crypto/erase_disks boolean false
d-i partman/default_filesystem string btrfs
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 boolean true
d-i partman/confirm_nooverwrite boolean true
# Packages — minimal base + essentials
tasksel tasksel/first multiselect standard
d-i pkgsel/include string sudo btrfs-progs
# Don't eject CD (fails in QEMU, causes prompt loop)
d-i cdrom-detect/eject boolean false
# Skip upgrade check (offline install, nothing to upgrade)
d-i pkgsel/upgrade select none
# No security/updates services (offline)
d-i apt-setup/services-select multiselect
# No popularity contest
popularity-contest popularity-contest/participate boolean false
# GRUB
d-i grub-installer/only_debian boolean true
d-i grub-installer/bootdev string default
# Skip additional media scan
d-i apt-setup/cdrom/set-first boolean false
d-i apt-setup/cdrom/set-next boolean false
d-i apt-setup/cdrom/set-failed boolean false
# Finish
d-i finish-install/reboot_in_progress note
# Post-install: enable auto-login on tty1 for the created user
d-i preseed/late_command string \
USER=$(grep ':x:1000:' /target/etc/passwd | cut -d: -f1); \
mkdir -p /target/etc/systemd/system/getty@tty1.service.d; \
echo '[Service]' > /target/etc/systemd/system/getty@tty1.service.d/autologin.conf; \
echo 'ExecStart=' >> /target/etc/systemd/system/getty@tty1.service.d/autologin.conf; \
echo "ExecStart=-/sbin/agetty --autologin $USER --noclear %I \$TERM" >> /target/etc/systemd/system/getty@tty1.service.d/autologin.conf