Skip to content

Instantly share code, notes, and snippets.

@olivierlambert
Last active March 4, 2024 15:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save olivierlambert/31201e9b205eca8cdd2863dfd2240505 to your computer and use it in GitHub Desktop.
Save olivierlambert/31201e9b205eca8cdd2863dfd2240505 to your computer and use it in GitHub Desktop.
Debian 12 preseed file
# Locale Setup
d-i debian-installer/language string en
d-i debian-installer/country string US
d-i debian-installer/locale string en_US.UTF-8
# Keyboard Setup
d-i keyboard-configuration/xkb-keymap select us
# Clock Setup
d-i time/zone string US/Eastern
# Configure hardware clock
d-i clock-setup/utc boolean true
d-i clock-setup/utc-auto boolean true
# set above to false if making a bootable USB to run on same system as Windows
# User Setup
d-i passwd/root-login boolean true
d-i passwd/root-password-again password debian
d-i passwd/root-password password debian
d-i passwd/user-fullname string debian
d-i passwd/user-uid string 1000
d-i passwd/user-password password debian
d-i passwd/user-password-again password debian
d-i passwd/username string debian
# Package Setup
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
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
tasksel tasksel/first multiselect ssh-server, standard
popularity-contest popularity-contest/participate boolean false
d-i pkgsel/include string sudo, unattended-upgrades, dpkg, cloud-init, cloud-guest-utils, cloud-initramfs-growroot, cloud-image-utils, cloud-utils
# Whether to upgrade packages after debootstrap
d-i pkgsel/upgrade select full-upgrade
# Disk configuration
d-i partman-basicfilesystems/choose_label string gpt
d-i partman-basicfilesystems/default_label string gpt
d-i partman-partitioning/choose_label string gpt
d-i partman-partitioning/default_label string gpt
d-i partman/choose_label string gpt
d-i partman/default_label string gpt
partman-partitioning partman-partitioning/choose_label select gpt
d-i partman-auto/disk string /dev/xvda
d-i partman-auto/method string regular
d-i partman-auto/expert_recipe string \
root-swap :: \
1000 1000 0 linux-swap \
$primary{ } \
method{ swap } format{ } . \
1000 20000 -1 ext4 \
$primary{ } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ / } . \
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
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean true
d-i grub-installer/bootdev string /dev/xvda
# install tools + fix cloudconfig
d-i preseed/late_command string \
in-target /bin/sh -c "echo 'manage_etc_hosts: true' >> /etc/cloud/cloud.cfg"; \
in-target wget https://gitlab.com/xen-project/xen-guest-agent/-/jobs/6041608357/artifacts/raw/target/release/xen-guest-agent_0.4.0_amd64.deb; in-target export RUNLEVEL=1; in-target dpkg -i xen-guest-agent_0.4.0_amd64.deb
# Final Setup
d-i finish-install/reboot_in_progress note
@tbalthazar
Copy link

Thanks for sharing this.
I think cloud-guest- should be cloud-guest-utils on line 38.

@olivierlambert
Copy link
Author

That's very likely, thanks for hunting our typos, and sorry 😨

@tbalthazar
Copy link

No worries at all.
I started playing with XCP-ng and I stumbled across this article which I find very useful to get started.

@nullstream
Copy link

The late_command no longer works, the URI gives a 404. Here is a patch which uses a repo instead. This probably best handled in a provisioner section rather than the pre-seed but regardless this is what I got working for me:
preeseed.cfg:

# install tools + fix cloudconfig
d-i preseed/late_command string \
in-target /bin/sh -c "echo 'manage_etc_hosts: true' >> /etc/cloud/cloud.cfg"; \
in-target /bin/sh -c "echo 'deb [trusted=yes] https://gitlab.com/api/v4/projects/xen-project%252Fxen-guest-agent/packages/generic/deb-amd64/ release/' > /etc/apt/sources.list.d/xen-guest-agent.list"; \
in-target /bin/sh -c "grep -v cdrom /etc/apt/sources.list > /tmp/sources.list && mv /tmp/sources.list /etc/apt/"; \
in-target /bin/sh -c "apt update && apt install xen-guest-agent"
# Final Setup
d-i finish-install/reboot_in_progress note

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment