#### Debian 13 (trixie) unattended netinst preseed #### Generic base-OS bootstrap — gets a blank VM to "Debian installed, SSH + #### sudo reachable" so provision-satellite.sh can take over from there. #### Not satellite-specific beyond that; hostname/domain are passed as #### separate boot params (hostname=... domain=...), not hardcoded here, so #### this file is reusable for any future from-scratch rebuild. #### #### Usage: serve this file over HTTP reachable from the VM's network, then #### at the installer's boot menu (Tab to edit on isolinux/BIOS boot): #### auto=true priority=critical url=http://:/debian-preseed.cfg hostname= domain= ### Localization d-i debian-installer/locale string en_CA.UTF-8 d-i keyboard-configuration/xkb-keymap select us ### Network d-i netcfg/choose_interface select auto d-i netcfg/get_hostname string unassigned-hostname d-i netcfg/get_domain string unassigned-domain d-i netcfg/wireless_wep string ### 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 and time zone d-i clock-setup/utc boolean true d-i time/zone string America/Toronto d-i clock-setup/ntp boolean true ### Account setup — normal user only, root login disabled (sudo instead). ### Initial password is a dummy placeholder, overwritten in late_command to preseed-. d-i passwd/root-login boolean false d-i passwd/user-fullname string debian d-i passwd/username string debian d-i passwd/user-password password bootstrap-temp-pw d-i passwd/user-password-again password bootstrap-temp-pw d-i user-setup/allow-password-weak boolean true d-i passwd/user-default-groups string sudo ### Partitioning — dynamic first disk selection, guided layout, UEFI & BIOS safe d-i partman/early_command string debconf-set partman-auto/disk "$(list-devices disk | head -n1)" 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 boolean true d-i partman/confirm_nooverwrite boolean true ### Package selection — minimal + SSH only + ca-certificates for HTTPS key fetch tasksel tasksel/first multiselect standard, ssh-server d-i pkgsel/include string sudo ca-certificates d-i pkgsel/upgrade select safe-upgrade popularity-contest popularity-contest/participate boolean false ### Boot loader — dynamic device target for BIOS (MBR) and UEFI d-i grub-installer/only_debian boolean true d-i grub-installer/with_other_os boolean true d-i grub-installer/bootdev string default ### Post-install setup — MAC fallback hostname, MAC password, and SSH key pull d-i preseed/late_command string \ MAC=$(ip link | awk '/ether/ {print $2; exit}'); \ HN=$(cat /target/etc/hostname 2>/dev/null); \ if [ "$HN" = "unassigned-hostname" ] || [ -z "$HN" ]; then \ SHORT_MAC=$(echo "$MAC" | tr -d ':'); \ HN="vm-${SHORT_MAC: -6}"; \ echo "$HN" > /target/etc/hostname; \ sed -i "s/unassigned-hostname/$HN/g" /target/etc/hosts; \ fi; \ in-target sh -c "echo debian:preseed-$MAC | chpasswd"; \ in-target mkdir -p /home/debian/.ssh; \ in-target wget -O /home/debian/.ssh/authorized_keys https://git.ergosteur.com/ergosteur.keys; \ in-target chown -R debian:debian /home/debian/.ssh; \ in-target chmod 700 /home/debian/.ssh; \ in-target chmod 600 /home/debian/.ssh/authorized_keys ### Finish installation d-i finish-install/reboot_in_progress note d-i cdrom-detect/eject boolean true