# Copyright 2019 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Configure the locale d-i debian-installer/locale string en_US.utf8 d-i debian-installer/add-kernel-opts console=ttyS0 d-i console-setup/ask_detect boolean false d-i console-setup/layout string us # Configure the clock d-i time/zone string UTC d-i clock-setup/utc-auto boolean true d-i clock-setup/utc boolean true # Configure the keyboard d-i kbd-chooser/method select American English # Configure networking d-i netcfg/wireless_wep string # Select the kernel d-i base-installer/kernel/override-image string linux-virtual # Configure a non-interactive install debconf debconf/frontend select Noninteractive # Configure the base installation d-i pkgsel/install-language-support boolean false d-i pkgsel/language-packs multiselect tasksel tasksel/first multiselect # standard, ubuntu-server # Create a single-partition with no swap space. For more information # on how partitioning is configured, please refer to # https://github.com/xobs/debian-installer/blob/master/doc/devel/partman-auto-recipe.txt. d-i partman-auto/method string regular 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-auto-lvm/guided_size string max # Again, this creates a single-partition with no swap. Kubernetes # really dislikes the idea of anyone else managing memory. d-i partman-auto/expert_recipe string \ slash :: \ 0 0 -1 ext4 \ $primary{ } $bootable{ } \ 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 partman-basicfilesystems/no_swap boolean false d-i partman-md/confirm boolean true 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 partman-md/confirm_nooverwrite boolean true d-i partman-lvm/confirm_nooverwrite boolean true d-i partman-partitioning/no_bootable_gpt_biosgrub boolean true d-i partman-partitioning/no_bootable_gpt_efi boolean false d-i partman-efi/non_efi_system boolean false # Create the default user. d-i passwd/user-fullname string builder d-i passwd/username string builder d-i passwd/user-password password builder d-i passwd/user-password-again password builder d-i user-setup/encrypt-home boolean false d-i user-setup/allow-password-weak boolean true # Disable upgrading packages upon installation. d-i pkgsel/upgrade select none d-i grub-installer/only_debian boolean true d-i grub-installer/with_other_os boolean true d-i finish-install/reboot_in_progress note d-i pkgsel/update-policy select none # Disable use of the apt mirror during base install # This means only packages available in the ISO can be installed d-i apt-setup/use_mirror boolean false # Disable the security repo as well (it's on by default) d-i apt-setup/services-select multiselect none # Customize the list of packages installed. d-i pkgsel/include string openssh-server open-vm-tools # Ensure questions about these packages do not bother the installer. libssl1.1 libssl1.1/restart-without-asking boolean true libssl1.1:amd64 libssl1.1/restart-without-asking boolean true libssl1.1 libssl1.1/restart-services string libssl1.1:amd64 libssl1.1/restart-services string # This command runs after all other steps; it: # 1. Ensures the "builder" user doesn't require a password to use sudo # 2. Cleans up any packages that are no longer required # 3. Cleans the package cache # 4. Removes the cached list of packages # 5. Disables swapfiles # 6. Removes the existing swapfile # 7. Removes the swapfile entry from /etc/fstab d-i preseed/late_command string \ echo 'builder ALL=(ALL) NOPASSWD: ALL' >/target/etc/sudoers.d/builder ; \ in-target chmod 440 /etc/sudoers.d/builder ; \ in-target swapoff -a ; \ in-target rm -f /swapfile ; \ in-target sed -ri '/\sswap\s/s/^#?/#/' /etc/fstab ; \ in-target rm -f /etc/udev/rules.d/70-persistent-net.rules ; \ in-target apt-get purge --auto-remove -y ; \ in-target rm -rf /var/lib/apt/lists/*