commit bf11a3aeb4f9fb5bef58ec7313ec44d75b19f020 Author: thug0bin Date: Tue May 19 18:11:26 2026 +0900 Initial: PVE VM 원격 제어 가이드 + VirtIO 마이그레이션 함정 분석 - GUIDE.ko.md: VM 원격 제어 (화면 캡처, QGA, qm sendkey, vhd 임포트, DR 이전, 트러블슈팅) - JOURNEY.md: SATA→VirtIO-SCSI 마이그레이션 실패 연대기 15단계 - 핵심 발견: vioscsi START_TYPE=BOOT_START(0) 승격 필수 (pnputil만으론 부족) - screenshots: 부팅 검증 화면 검증 환경: PVE 8.1, Win10 Pro 19045, virtio-win 0.1.285 diff --git a/GUIDE.ko.md b/GUIDE.ko.md new file mode 100644 index 0000000..7b677ca --- /dev/null +++ b/GUIDE.ko.md @@ -0,0 +1,391 @@ +# VM 원격 제어 가이드 (PVE + QEMU) + +> Claude Code 환경에서 Proxmox 위의 Windows/Linux VM을 화면 캡처 + 명령 실행 + GUI 조작까지 원격으로 다루는 방법. +> +> 작성일: 2026-05-18 / 검증 환경: Windows 10 Pro VM on Proxmox VE 8.1, virtio-scsi-single + iothread + discard + +## 표기 규약 + +- `` ``: Proxmox 노드 IP +- `` ``: 각 노드 root 비밀번호 (또는 SSH key 사용 권장) +- `` `` ``: SMB/CIFS 파일 서버 접속 정보 +- ``: Windows 게스트 로그인 사용자 +- VMID 예시는 `101`, zvol 예시는 `vm-101-disk-N` — 본인 환경 값으로 치환 + +--- + +## 1. 인프라 개요 + +### Proxmox 호스트 +| 호스트 | IP | SSH | 비고 | +|---|---|---|---| +| pve5 | `` | `root` / `` | 메인 VM 호스트 (운영) | +| pve7 | `` | `root` / `` | 보조 / 백업 호스트 | + +### SMB 파일 서버 +- 주소: `` +- 인증: `` / `` +- 주요 공유: `vhd` (VHD 디스크 이미지 보관) + +### 접속 패턴 +```bash +# pve5 SSH (모든 VM 작업은 여기서) +sshpass -p "$PVE_PASSWORD" ssh -o StrictHostKeyChecking=no root@ '<명령>' + +# SMB 마운트 (pve5 또는 작업 VM에서) +mkdir -p /mnt/vhd-src +mount -t cifs ///vhd /mnt/vhd-src \ + -o username=,password=$SMB_PASSWORD,ro,vers=3.0,iocharset=utf8,file_mode=0444,dir_mode=0555 +``` + +--- + +## 2. VM 화면 캡처 (보기) + +PVE 8.x에는 `qm screendump` 명령이 **없음**. QEMU monitor에 직접 명령 보내야 함. + +### 한 줄 캡처 (pve5에서) +```bash +echo "screendump /tmp/vm101.ppm" | qm monitor 101 +``` + +결과는 PPM(Netpbm raw bitmap) 형식. 일반 뷰어가 못 읽으므로 PNG로 변환 필요. + +### Claude 환경에서 보기까지 풀 흐름 +```bash +# 1) pve5에서 screendump +sshpass -p "$PVE_PASSWORD" ssh root@ \ + 'echo "screendump /tmp/vm101.ppm" | qm monitor 101' + +# 2) PPM 가져오기 +sshpass -p "$PVE_PASSWORD" scp root@:/tmp/vm101.ppm /tmp/vm101.ppm + +# 3) PNG 변환 (ffmpeg는 작업 VM에 설치돼있음, pve5에는 없음) +ffmpeg -y -i /tmp/vm101.ppm /tmp/vm101.png + +# 4) Read 툴로 열기 → 멀티모달 모델이 이미지 인식 +``` + +### PVE API 방식 (대안) +```bash +pvesh get /nodes/pve5/qemu/101/screenshot > /tmp/vm101.png +``` +*이 엔드포인트는 PNG 직접 반환. 단 PVE 권한 토큰 설정에 따라 동작 여부 다름.* + +--- + +## 3. QGA (QEMU Guest Agent)로 명령 실행 + +### 전제 조건 +- VM config에 `agent: 1` +- 게스트 OS에 qemu-ga 서비스 설치/실행 중 +- 확인: `qm agent ping` (응답 없으면 = OK) + +### 핵심 명령 +```bash +# 상태 확인 +qm agent 101 ping +qm agent 101 get-osinfo +qm agent 101 get-host-name +qm agent 101 get-users + +# 명령 실행 (동기 / 결과 회수) +qm guest exec 101 --timeout 30 -- cmd.exe /c whoami +qm guest exec 101 --timeout 30 -- powershell.exe -NoProfile -Command "