From f37da0cbe21fc680e89ffff6d88dd21fd6e650ee Mon Sep 17 00:00:00 2001 From: EJClaw Date: Fri, 25 Sep 2026 23:04:28 +0900 Subject: [PATCH] =?UTF-8?q?ci:=20=EC=84=A4=EC=B9=98=20=EB=AF=B8=EB=94=94?= =?UTF-8?q?=EC=96=B4=20=EC=97=86=EC=9D=B4=EB=8F=84=20win-ci=20VM=20?= =?UTF-8?q?=EC=9D=B4=20=EB=9C=A8=EB=8F=84=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 설치가 끝나면 Windows ISO(4.8GB)는 쓸모가 없어 지운다. 그런데 없는 파일을 -drive 로 넘기면 qemu 가 기동 자체에 실패해서, 재부팅 후 러너 호스트가 조용히 사라진다. cdrom 은 있을 때만 붙인다. --- scripts/win-ci/run-vm.sh | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/scripts/win-ci/run-vm.sh b/scripts/win-ci/run-vm.sh index 4fc6cf6..9ffff58 100755 --- a/scripts/win-ci/run-vm.sh +++ b/scripts/win-ci/run-vm.sh @@ -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 \