40 lines
1.5 KiB
Executable File

#!/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;
# 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/
# Remove the extracted (temporary) files and the preseed with the plaintext password
sudo rm -rf isofiles preseed.cfg