#!/usr/bin/env bash # Get password from user prompt and set it in preseed read -sp "Enter the root password: " ROOT_PASSWORD cp -f template.cfg preseed.cfg sed -i "s/ROOT_PASSWORD/${ROOT_PASSWORD}/" preseed.cfg # Get the file name ISONAME=$(ls | grep "netinst.iso" | sort | tail -n1) # Remove an already existing unattended iso of this same version, if existing rm -f $(echo ${ISONAME} | sed 's/netinst/unattended/') # Extract iso files xorriso -osirrox on -indev ${ISONAME} -extract / isofiles # Remove the grub menu sudo sed -i '/vesamenu.c32/d' isofiles/isolinux/isolinux.cfg # Fix the grub menu if [[ $(grep timeout_style isofiles/boot/grub/grub.cfg) == "" ]]; then sudo sed -i 's/insmod play/set timeout_style=hidden\nset timeout=0\nset default=1\n\ninsmod play/' isofiles/boot/grub/grub.cfg; fi # Extract the initrd image, put the preseed file in int, and re-compress chmod +w -R isofiles/install.amd/ gunzip isofiles/install.amd/initrd.gz echo preseed.cfg | cpio -H newc -o -A -F isofiles/install.amd/initrd gzip isofiles/install.amd/initrd chmod -w -R isofiles/install.amd/ # Recreate the md5sum check file cd isofiles/ chmod a+w md5sum.txt md5sum $(find -follow -type f) > md5sum.txt chmod a-w md5sum.txt cd .. # Repackage all the iso files chmod a+w isofiles/isolinux/isolinux.bin docker run --interactive --tty --rm --volume $(pwd):/root/unattended debian:buster /root/unattended/docker.sh # Remove the extracted (temporary) files and the preseed with the plaintext password sudo rm -rf isofiles preseed.cfg