윈도우 패키지 자동 테스트 하니스 (win-test) — Intel Mac(i9) QEMU+HVF
개요
cowork.crowny.org 윈도우 패키지(.exe/.zip/.msi,
대부분 x86)를
같은 맥(i9 Intel) 안에서 QEMU+HVF로 Windows 11 x64 VM을 띄워 자동 설치·실행·검증하는 하니스를 구축했다. 한선씨 오케스트레이터가 정본. 앞선 가상화 연구(2026-06-29 문서) 결론을 실제 도구로 구현.
결정 근거 (Intel i9 + x86 → 네이티브 경로)
- i9 Intel은 x86_64라 x86 Windows를 HVF 하드웨어 가속으로 네이티브 구동. Apple Silicon(M2)은 Prism/TCG 에뮬레이션이라 느리고 커널드라이버·셸확장 제약 → 테스트는 i9에서.
- Docker는 맥에서 윈도우 게스트 불가(Linux 컨테이너 전용) → 가상화 필수.
- 사용자 선택: 가상화 도구=QEMU+HVF+한선씨 오케스트레이터, 우선순위=자동 테스트 하니스부터.
무엇을 했는지
윈테스트.한선(정본 오케스트레이터) + 동봉 .toau: 오버레이(clean state)→헤드리스 부팅→SSH대기→scp 전송→게스트테스트.ps1 실행→셀코어 3진 판정(WT_PASS=참/WT_FAIL=거짓/그외=모름)→VM 종료. M2에서 컴파일+런타임 제어흐름 검증(가드 단발 실행, 스트레이 qemu 없음).
- 가장 견고한 설계 선택: 디스크=AHCI·NIC=e1000e(둘 다 Windows 인박스 드라이버 → virtio 주입 불필요, stock 설치+SSH 즉시) · TPM 체크 우회(LabConfig, 정품키 활성화엔 무영향) · clean state=qcow2 오버레이(HVF는 내부 savevm 불안정) · 제어=OpenSSH+PowerShell(게스트 로직 .ps1 분리로 중첩따옴표 회피).
- 지원 파일:
실행.sh(crownyc 탐색+1회 실행) · 부트스트랩.sh/.한선(호스트 1회: qemu·OVMF·SSH키·골든·unattend ISO) · 게스트초기화.ps1(VM 1회: sshd+공개키+C:\test) · 게스트테스트.ps1(매회 설치/실행 검증) · Autounattend.xml(선택 무인설치) · README.md.
- 학습: 패턴
윈도우VM자동테스트_오케스트레이터_오버레이부팅SSH판정 등록.
발견한 한선씨 함정 (메모리+CLAUDE.md 기록)
시도=예약어(try) / 파일존재=1(존재)·-1(없음), 0 아님 / 문자열 내 ${} 금지("$VAR" 사용) / 최상위 반환=무한루프 → 주() 함수로 감싸 1회 호출 / 체계()=stdout 반환(종료코드 아님).
관련 파일
/Users/ef/crowny-cowork/win-test/ (전체 10파일)
- 정본:
win-test/윈테스트.한선 + 윈테스트.toau
- cowork
CLAUDE.md "윈도우 패키지 자동 테스트 하니스" 섹션
- 연구 배경:
2026-06-29-윈도우-가상화-테스트환경-연구.md
사용법 (i9에서)
bash 부트스트랩.sh /경로/Win11_x64.iso — 호스트 세팅
- 출력 명령으로 Win11 x64 설치(GUI 1회), 계정 tester, 정품키는 설정>활성화(리테일, OEM 금지)
- VM 안:
powershell -ExecutionPolicy Bypass -File D:\게스트초기화.ps1 → 호스트서 ssh -p 2222 ... echo OK
- 골든 보존
- 이후 매 테스트:
WT_PKG=/경로/패키지.exe bash 실행.sh → 결과 ~/win-test-work/result.log
잔여 이슈 (i9 실측 필요)
- Windows 설치/SSH/x86 앱 네이티브 실행·속도, Autounattend 무인설치 흐름 (M2는 x86 HVF 불가라 실측 불가)
- 정품 리테일 x86 키 → x64 Win11 활성화 실측(예상: 정상)
- swtpm 충실도 모드(실제 vTPM)는 선택 확장. cowork /setup 통합(원격 pull)은 추후 옵션.