El archivo Kickstart en virtualbox no arranca

El archivo Kickstart en virtualbox no arranca

Quiero escribir un script bash que cree una iso de Scientific Linux 7.2 con un archivo kickstart personalizado, cree una nueva máquina virtual VirtualBox e instale la iso en esa máquina virtual.

Tengo dos guiones installBaseOS.shy createKSISO.sh. Aquí están ambos:

installBaseOS.sh:

#!/bin/sh
set -e

../src/sh/createKSISO.sh
VM='testVM'
ISO=test/boot.iso

VBoxManage createhd --filename=test/$VM.vdi --size=16000 >> test/install.log 2>&1
VBoxManage createvm --name=$VM --ostype="Linux_64" --register >> test/install.log 2>&1

VBoxManage storagectl $VM --name "SATA Controller" --add sata --controller IntelAHCI
VBoxManage storageattach $VM --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium test/$VM.vdi

VBoxManage storagectl $VM --name "IDE Controller" --add ide
VBoxManage storageattach $VM --storagectl "IDE Controller" --port 0 --device 0 --type dvddrive --medium $ISO

VBoxManage modifyvm $VM --ioapic on
VBoxManage modifyvm $VM --boot1 dvd --boot2 disk --boot3 none --boot4 none
VBoxManage modifyvm $VM --memory 1024 --vram 128
VBoxManage modifyvm $VM --nic1 bridged --bridgeadapter1 wlo1

VBoxHeadless -s $VM >> test/install.log 2>&1 

y createKSISO.sh:

#!/bin/sh
mkdir test/bootiso
sudo mount -o loop ../bin/SL-72.iso test/bootiso

mkdir test/bootisoks
cp -r test/bootiso/* test/bootisoks/

sudo umount test/bootiso && rmdir test/bootiso

chmod -R u+w test/bootisoks
cp ../src/cfg/ks.cfg test/bootisoks/isolinux

sed -i 's/append\ initrd\=initrd0.img/append initrd=initrd0.img\ ks\=cdrom:\/ks.cfg/' test/bootisoks/isolinux/isolinux.cfg

cd test/bootisoks && mkisofs -o ../boot.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -r -J -v -T isolinux/. .
cd ../..
rm -r test/bootisoks

Y finalmente mi archivo kickstart ks.cfg:

auth --enableshadow --enablemd5
install
reboot --eject
eula --agreed
cmdline
ignoredisk --only-use=sda
keyboard --vckeymap=us --xlayouts='us'
lang en_US.UTF-8

logging --level=debug
rootpw testpass
timezone US/New_York
bootloader --location=mbr --boot-drive=sda
clearpart --all --initlabel
part pv.0 --size=1 --grow
volgroup rootvg01 pv.0
logvol / --fstype=ext4 --name=lv01 --vgname=rootvg01 --size=1 --grow

services --enable=NetworkManager,sshd

%packages
@base
@core
%end

Si comento el sedcomando createKSISO.cfgpara que el proceso de arranque no busque un archivo kickstart, la VM arranca en el CD en vivo sin problemas, por lo que estoy bastante seguro de que estoy creando la ISO correctamente (en su mayoría).

Lo que sucede si agrego ks=/ks.cfg al arranque es que aparecen 3 líneas en el registro de arranque:

[ OK ] Started Show Plymouth Boot Screen.
[ OK ] Reached target Paths.
[ OK ] Reached target Basic System.

Luego se cuelga durante un par de minutos antes de empezar a recibir dracut-initqueueadvertencias de tiempo de espera. Después de eso llego a una dracutconsola y me dice que mire /run/initramfs/rdsosreport.txt. No tengo ninguna forma de sacar ese archivo de la máquina virtual, y tiene varios cientos de líneas, pero copié las pocas líneas directamente antes de que dracut-initqueueaparezcan las advertencias:

localhost kernel: sda: unknown partition table
localhost kernel: sd 0:0:0:0: [sda] Attached SCSI disk
localhost systemd[1]: Received SIGRTMIN+20 from PID 357 (plymouthd)

Ese último SIGRTMIN aparece 4 veces durante aproximadamente 3 segundos, luego las advertencias de tiempo de espera aparecen aproximadamente 1,5 minutos después.

Creo que mi problema se debe a un archivo kickstart incorrecto o a que el archivo no se encuentra correctamente. Probé varios archivos kickstart de RHEL 7 de ejemplo de la web para intentar averiguar si es el primer problema, pero no he tenido suerte. Lo que me gustaría saber es el siguiente paso para depurar por qué falla el inicio rápido de la VM o cuál es mi problema. Una vez que tenga algo funcionando, planeo editar el archivo kickstart para terminar con el sistema que realmente quiero, pero primero tengo que hacer que algo funcione.

Respuesta1

Resultó ser un error bastante simple (estúpido). Dentro del isolinux.cfgarchivo, en la misma línea modificada por el sedcomando en createKSISO.sh, hay un par clave/valor root=live:CDLABEL=SL-72-x86_64-LiveCD. En aproximadamente la mitad de los tutoriales que encontré en línea sobre la creación de una ISO iniciada, el mkisofscomando incluía las opciones -V "Your CD Name Here"o algo similar, sin explicación sobre la importancia de esta opción. No me importaba cómo se llamara mi CD ya que era temporal, así que lo ignoré.

Sin embargo, para que la ISO creada sea de arranque, la rootetiqueta y el nombre del CD deben coincidir. De lo contrario, el arranque de isolinux no puede encontrar el sistema operativo para arrancar desde el CD en vivo. La solución rápida para esto fue que simplemente proporcioné el nombre que ya estaba en isolinux.cfgla -Vopción de mi createKSISOscript. Una respuesta más apropiada sería crear un nombre personalizado y luego usarlo sedpara reemplazarlo en el archivo isolinux.cfg.

Al cambiar esto, el ISO recién creado arranca y las modificaciones realizadas en otras partes de los scripts se ven en el sistema de archivos.

información relacionada