virtualbox의 킥스타트 파일이 부팅에 실패함

virtualbox의 킥스타트 파일이 부팅에 실패함

사용자 지정 kickstart 파일을 사용하여 Scientific Linux 7.2 iso를 생성하고, 새 VirtualBox VM을 생성하고, 해당 VM에 iso를 설치하는 bash 스크립트를 작성하고 싶습니다.

installBaseOS.sh두 개의 스크립트 가 있고 createKSISO.sh. 다음은 둘 다입니다.

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 

그리고 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

그리고 마지막으로 내 킥스타트 파일은 다음과 같습니다 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

sed부팅 프로세스 에서 createKSISO.cfg킥스타트 파일을 찾지 않도록 명령 을 주석 처리하면 VM이 문제 없이 라이브 CD로 부팅되므로 ISO를 올바르게(대부분) 생성하고 있다고 확신할 수 있습니다.

ks=/ks.cfg를 부팅에 추가하면 부팅 로그에 3줄이 표시됩니다.

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

그런 다음 시간 초과 경고가 표시되기 시작하기 전에 몇 분 동안 멈춥니다 dracut-initqueue. 그런 다음 dracut콘솔에 도달하면 /run/initramfs/rdsosreport.txt. 해당 파일을 VM에서 가져올 수 있는 방법이 없으며 길이가 수백 줄이지만 경고가 시작되기 직전에 몇 줄을 복사했습니다 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)

마지막 SIGRTMIN은 약 3초에 걸쳐 4번 나타나고 약 1.5분 후에 시간 초과 경고가 나타납니다.

내 문제는 킥스타트 파일이 잘못되었거나 파일을 제대로 찾을 수 없기 때문에 발생한 것 같습니다. 이것이 첫 번째 문제인지 알아보기 위해 웹에서 여러 예제 RHEL 7 킥스타트 파일을 시도했지만 아무런 행운도 얻지 못했습니다. 제가 알고 싶은 것은 VM의 킥스타트가 실패하는 이유를 디버깅하기 위한 다음 단계 또는 내 문제가 무엇인지입니다. 작업이 완료되면 실제로 원하는 시스템이 되도록 킥스타트 파일을 편집할 계획이지만 먼저 작업을 수행해야 합니다.

답변1

그것은 다소 단순한(어리석은) 실수로 밝혀졌습니다. 파일 내부 의 명령 isolinux.cfg으로 수정된 동일한 줄에 키/값 쌍이 있습니다 . 킥스타트 ISO 생성에 관해 온라인에서 찾은 튜토리얼의 약 절반에서 명령 에는 옵션 이나 이와 유사한 옵션이 포함되어 있었지만 이 옵션의 중요성에 대한 설명은 없었습니다. 내 CD가 임시 CD였기 때문에 이름이 무엇인지 신경쓰지 않았기 때문에 무시했습니다.sedcreateKSISO.shroot=live:CDLABEL=SL-72-x86_64-LiveCDmkisofs-V "Your CD Name Here"

그러나 생성된 ISO가 부팅 가능하려면 레이블 root과 CD 이름이 일치해야 합니다. 그렇지 않은 경우 isolinux 부팅은 라이브 CD에서 부팅할 OS를 찾을 수 없습니다. 이에 대한 빠른 수정은 스크립트 의 옵션 isolinux.cfg에 이미 이름을 제공하는 것이었습니다 . 더 적절한 대답은 사용자 정의 이름을 만든 다음 이를 사용하여 .-VcreateKSISOsedisolinux.cfg

이를 변경하면 새로 생성된 ISO가 부팅되고 스크립트의 다른 곳에서 수정된 내용이 파일 시스템에 표시됩니다.

관련 정보