Kickstart-Datei in Virtualbox kann nicht gestartet werden

Kickstart-Datei in Virtualbox kann nicht gestartet werden

Ich möchte ein Bash-Skript schreiben, das ein Scientific Linux 7.2-ISO mit einer benutzerdefinierten Kickstart-Datei erstellt, eine neue VirtualBox-VM erstellt und das ISO auf dieser VM installiert.

Ich habe zwei Skripte, installBaseOS.shund createKSISO.sh. Hier sind beide:

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 

Und 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

Und schließlich meine Kickstart-Datei 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

sedWenn ich den Befehl auskommentiere createKSISO.cfg, sodass der Startvorgang nicht nach einer Kickstart-Datei sucht, startet die VM ohne Probleme in die Live-CD. Daher bin ich ziemlich sicher, dass ich das ISO (größtenteils) richtig erstelle.

Wenn ich ks=/ks.cfg zum Booten hinzufüge, erscheinen im Boot-Protokoll drei Zeilen:

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

Dann hängt es ein paar Minuten, bevor ich Timeout-Warnungen bekomme dracut-initqueue. Danach gelange ich zu einer dracutKonsole und sie sagt mir, ich solle mir Folgendes ansehen . Ich habe keine Möglichkeit, diese Datei von der VM zu holen, und sie ist mehrere hundert Zeilen lang, aber ich habe die paar Zeilen direkt vor dem Auftreten der Warnungen /run/initramfs/rdsosreport.txtkopiert :dracut-initqueue

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)

Dieses letzte SIGRTMIN wird viermal im Verlauf von etwa 3 Sekunden angezeigt, dann erscheinen die Timeout-Warnungen etwa 1,5 Minuten später.

Ich denke, mein Problem wird entweder durch eine fehlerhafte Kickstart-Datei verursacht oder die Datei wird nicht richtig gefunden. Ich habe eine Reihe von Beispiel-RHEL-7-Kickstart-Dateien aus dem Internet ausprobiert, um herauszufinden, ob es das erste Problem ist, aber ich hatte kein Glück. Was ich wissen möchte, ist entweder der nächste Schritt zum Debuggen, warum der Kickstart der VM fehlschlägt, oder was mein Problem ist. Sobald ich etwas zum Laufen gebracht habe, habe ich vor, die Kickstart-Datei zu bearbeiten, um das System zu erhalten, das ich eigentlich haben möchte, aber zuerst muss ich etwas zum Laufen bringen.

Antwort1

Es stellte sich heraus, dass es sich um einen ziemlich einfachen (dummer) Fehler handelte. In der Datei gibt es isolinux.cfgin derselben Zeile, die durch den sedBefehl in geändert wurde, ein Schlüssel/Wert-Paar . In etwa der Hälfte der Tutorials, die ich online zum Erstellen eines Kickstart-ISO gefunden habe, enthielt der Befehl die Optionen oder etwas Ähnliches, ohne dass die Bedeutung dieser Option erklärt wurde. Da es sich um eine temporäre CD handelte, war mir der Name egal, also habe ich dies ignoriert.createKSISO.shroot=live:CDLABEL=SL-72-x86_64-LiveCDmkisofs-V "Your CD Name Here"

Damit das erstellte ISO jedoch bootfähig ist, rootmüssen Label und CD-Name übereinstimmen. Andernfalls kann der Isolinux-Boot das Betriebssystem nicht finden, um von der Live-CD zu booten. Die schnelle Lösung hierfür war, dass ich einfach den Namen, der bereits in der isolinux.cfgOption -Vin meinem createKSISOSkript enthalten war, angegeben habe. Eine passendere Lösung wäre, einen benutzerdefinierten Namen zu erstellen und sedihn dann in der zu ersetzen isolinux.cfg.

Wenn Sie dies ändern, wird das neu erstellte ISO gebootet und die an anderer Stelle in den Skripten vorgenommenen Änderungen werden im Dateisystem angezeigt.

verwandte Informationen