설치가 끝나면 Windows ISO(4.8GB)는 쓸모가 없어 지운다. 그런데 없는 파일을 -drive 로 넘기면 qemu 가 기동 자체에 실패해서, 재부팅 후 러너 호스트가 조용히 사라진다. cdrom 은 있을 때만 붙인다.
This commit is contained in:
@@ -18,6 +18,24 @@ fi
|
||||
|
||||
rm -f "$D/qmp.sock"
|
||||
|
||||
# 설치가 끝나면 Windows ISO(4.8GB)는 필요 없어서 지운다. 그래도 유닛이 뜨도록
|
||||
# 없는 ISO 는 그냥 건너뛴다. 없는 파일을 -drive 로 주면 qemu 가 기동에 실패해
|
||||
# 재부팅 후 러너 호스트가 조용히 사라진다.
|
||||
CDROMS=()
|
||||
add_cd() { # 파일 버스 [bootindex]
|
||||
[ -f "$1" ] || { echo "cdrom 건너뜀 (없음): $1" >&2; return; }
|
||||
local id="cd$(basename "$1" | tr -cd 'a-z0-9')"
|
||||
CDROMS+=( -drive "file=$1,if=none,id=$id,media=cdrom,readonly=on" )
|
||||
if [ -n "${3:-}" ]; then
|
||||
CDROMS+=( -device "ide-cd,drive=$id,bus=$2,bootindex=$3" )
|
||||
else
|
||||
CDROMS+=( -device "ide-cd,drive=$id,bus=$2" )
|
||||
fi
|
||||
}
|
||||
add_cd "$D/iso/win11-ltsc.iso" ide.1 1
|
||||
add_cd "$D/iso/virtio-win.iso" ide.2
|
||||
add_cd "$D/unattend.iso" ide.3
|
||||
|
||||
exec qemu-system-x86_64 \
|
||||
-name win-ci,process=win-ci \
|
||||
-machine q35,smm=on,vmport=off \
|
||||
@@ -43,12 +61,7 @@ exec qemu-system-x86_64 \
|
||||
-device usb-kbd -device usb-tablet \
|
||||
-drive "file=$D/win-ci.qcow2,if=none,id=sysdisk,format=qcow2,cache=writeback,discard=unmap,aio=threads" \
|
||||
-device ide-hd,drive=sysdisk,bus=ide.0,bootindex=2 \
|
||||
-drive "file=$D/iso/win11-ltsc.iso,if=none,id=cdwin,media=cdrom,readonly=on" \
|
||||
-device ide-cd,drive=cdwin,bus=ide.1,bootindex=1 \
|
||||
-drive "file=$D/iso/virtio-win.iso,if=none,id=cdvirtio,media=cdrom,readonly=on" \
|
||||
-device ide-cd,drive=cdvirtio,bus=ide.2 \
|
||||
-drive "file=$D/unattend.iso,if=none,id=cdunattend,media=cdrom,readonly=on" \
|
||||
-device ide-cd,drive=cdunattend,bus=ide.3 \
|
||||
"${CDROMS[@]}" \
|
||||
-serial "file:$D/serial.log" \
|
||||
-qmp "unix:$D/qmp.sock,server=on,wait=off" \
|
||||
-vnc 127.0.0.1:19 \
|
||||
|
||||
Reference in New Issue
Block a user