#!/bin/bash # lorax-based build (EL8+) EFIBOOTPATH=images/efiboot.img # livecd-creator build (EL7) #EFIBOOTPATH=isolinux/efiboot.img if [ -z "$2" ]; then echo "Usage: $0 fdi-bootable-x.y.z.iso 'proxy.url=https://192.168.9.1:443 proxy.type=foreman fdi.xyz=abc...' [output.iso]" exit 2 fi REQ_CMDS="guestmount dd mkisofs isohybrid implantisomd5 mcopy" if ! which $REQ_CMDS >/dev/null; then echo "Install required tools: $REQ_CMDS" exit 3 fi function cleanup() { echo "Cleaning up temporary directory..." [ -d $TMP_NEW ] && rm -rf $TMP_NEW } TMP_NEW=$(mktemp -d) trap cleanup EXIT TIMESTAMP=$(date +%y%m%d_%H%M%S) OUT_ISO=${1/.iso/-$TIMESTAMP}.iso [ ! -z "$3" ] && OUT_ISO=$3 echo "Copying contents to temporary directory..." export LIBGUESTFS_BACKEND=direct guestfish --ro -a "$1" -m /dev/sda copy-out / $TMP_NEW chmod +w -R $TMP_NEW find $TMP_NEW -name TRANS.TBL -exec rm -f {} \; echo "Making hardlinks so inodes can be cached to save space..." pushd $TMP_NEW ln -f isolinux/initrd.img images/pxeboot/initrd.img ln -f isolinux/vmlinuz images/pxeboot/vmlinuz popd echo "Configuring bootloaders..." cat >$TMP_NEW/isolinux/isolinux.cfg <$TMP_NEW/EFI/BOOT/grub.cfg <