De la mano de Red Hat Enterprise Linux, ya hay una solución para recrear una ISO según nuestras necesidades.
En primer lugar, descargaremos la ISO (v9.4) de la web oficial.
En una VM, instalaremos el software necesario:
yum install -y genisoimage syslinux pykickstart isomd5sum
Podemos generar un fichero kickstart de forma guiada o coger y adaptar alguna template (opción preferida).
El formato del fichero kickstart debe ser UTF-8 por lo que validamos y forzamos que tenga dicha codificación:
file ks.cfg
iconv -f ISO-8859-1 -t UTF-8 ks_demo.cfg > ks.cfg
En este punto crearemos un directorio temporal donde crearemos un fichero, copiaremos la ISO y su contenido:
cd /tmp
rm -rf /tmp/RHEL9
mkdir -p /tmp/RHEL9
mount -o loop /tmp/rhel-9.4-x86_64-dvd.iso /mnt
shopt -s dotglob
cp -avRf /mnt/* /tmp/RHEL9
umount /mnt
El fichero kickstart, lo dejamos en RHEL9/ks.cfg
Es útil y necesario validar que el fichero kickstart sea válido y que obtenemos el Volume ID:
ksvalidator -v RHEL9 RHEL9/ks.cfg
blkid rhel-9.4-x86_64-dvd.iso | awk '{print $4}' | sed 's/.*"\(.*\)"[^"]*$/\1/'
isoinfo -d -i rhel-9.4-x86_64-dvd.iso | grep "^Volume id" | awk '{print $NF}'
Una vez realizados los puntos anteriores, editaremos el fichero RHEL9/isolinux/isolinux.cfg para añadir la siguiente información:
label kickstart
menu label 'Install Kickstart Install Red Hat Enterprise Linux 9.4'
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=RHEL-9-4-0-BaseOS-x86_64 inst.ks=cdrom:/ks.cfg
También añadiremos la siguiente información en el fichero RHEL9/EFI/BOOT/grub.cfg:
menuentry 'Install Kickstart Red Hat Enterprise Linux 9.4' --class fedora --class gnu-linux --class gnu --class os {
linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=RHEL-9-4-0-BaseOS-x86_64 quiet inst.ks=cdrom:/ks.cfg
initrdefi /images/pxeboot/initrd.img
}
Llegados a este punto, generaremos la ISO
cd /tmp/RHEL9
mkisofs -o /tmp/DEMO-rhel-9.4-x86_64-dvd.iso -b isolinux/isolinux.bin -J -R -l -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e images/efiboot.img -no-emul-boot -graft-points -joliet-long -input-charset UTF-8 -V "RHEL-9-4-0-BaseOS-x86_64" -volset "RHEL-9-4-0-BaseOS-x86_64" -A "RHEL-9-3-0-BaseOS-x86_64" .
isohybrid --uefi /tmp/DEMO-rhel-9.4-x86_64-dvd.iso
implantisomd5 /tmp/DEMO-rhel-9.4-x86_64-dvd.iso
Si tenemos acceso a algun Datastore de nuestro ESX, lo podemos copiar directamente para agilizar tiempos de download/upload:
scp -rp /tmp/DEMO-rhel-9.4-x86_64-dvd.iso [email protected]:/vmfs/volumes/5ea43138-1e1afa01-1ec7-08f1eaf1ac0a/ISOs/
Ya tenemos una ISO para instalar el sistema operativo de forma desatendida y bajo una configuración especifica.