문제 해결

보이는 증상이나 오류 메시지를 찾은 뒤 그 아래의 해결 방법을 따르세요. 네트워크 문제는 네트워크를 참고하세요.

가상 머신이 열리기 전에 vphone-vm이 종료됨

  1. 호스트 사전 점검을 실행합니다.

    vphone-cli host preflight

    CLI에는 권한이 없으므로 계속 실행되며, 서명된 짝 프로그램 vphone-vm을 AMFI가 거부한 이유를 설명할 수 있습니다.

  2. 번들을 다시 빌드했다면 cdhash가 바뀐 것입니다. 호스트 설정에 설명된 대로 번들에 포함된 도우미로 새 바이너리를 허용하세요.

Virtualization is not available on this hardware

PV=3 게스트는 중첩할 수 없습니다. 다른 macOS 가상 머신 안이 아니라 Apple Silicon Mac에서 실행하세요.

vm create가 vphoned 성공을 출력했지만 실행 중인 가상 머신이 없음

정상입니다. 생성 과정은 임시 GUI 부팅을 시작해 실제 ping을 보낸 뒤, 반환하기 전에 그 부팅을 중지합니다. 사용하려면 가상 머신을 시작하세요.

vphone-cli vm launch <name>

"Press home to continue"에서 멈춤

가상 머신 창의 제목 막대에 있는 홈 버튼을 클릭하세요. 현재 JB 작업 흐름은 VNC 서버를 설치하지 않습니다.

앱이 EXC_GUARD / GUARD_TYPE_MACH_PORT로 종료됨

커널 패치 kernel-boot-thread_guard_violation은 치명적인 Mach 포트 가드 전달을 막습니다. 이 패치는 부팅에 필요한 iOS 18 기반에서만 적용되며, 그곳에서는 모든 프리셋이 이를 켭니다. 다른 기반에서는 선택할 수 없으므로, 26.x 기반에서 이 가드에 걸리는 앱은 여전히 종료됩니다. 이슈 #291을 참고하세요.

복원 또는 첫 부팅 실패

  • 수동 흐름에서는 restore가 끝날 때까지 가상 머신을 DFU 상태로 유지하세요.
  • 온라인 티켓 요청이 Apple에 도달할 수 있는지 확인하세요.
  • 전체 파이프라인은 새 이름과 도구 세부 정보를 위한 -v로 vm create를 다시 실행하세요.
  • 메모리나 디스크가 부족하면 가상 머신을 동시에 여러 개 만들지 마세요.
  • iPhone IPSW와 PCC 이미지를 조합하기 전에 펌웨어 호환성을 확인하세요.

게스트는 부팅되지만 생성 중에 vphoned가 응답하지 않음

첫 부팅 확인은 300초 후 시간 초과됩니다. 새로 복원한 게스트는 첫 헤드리스 부팅에서 vphoned를 띄우지 못할 수 있으므로, 생성 과정에서는 GUI 부팅을 사용합니다. 성공 표시가 무엇을 확인하는지는 생성 및 실행을 참고하세요.

Xcode나 Instruments에서 게스트가 오프라인으로 표시됨

CoreDevice는 게스트를 유선 기기로 페어링하지만, 어떤 프로그램이 터널을 붙잡고 있는 동안에만 터널을 유지합니다. 터널이 없으면 xcrun xctrace list devices는 게스트를 "Devices Offline" 아래에 표시하고, xctrace record --device <UDID>는 기기가 부팅되기를 기다리다가 약 30초 후 포기합니다. Instruments는 네트워크 기기에만 연결을 제안하며 유선 기기에는 제안하지 않습니다.

게스트가 실행되는 동안 vphone-vm이 터널을 열어 두게 하세요.

  • 가상 머신 창에서 Diagnostics > Keep Developer Tunnel Open을 선택합니다. 바로 적용되며 머신에 저장됩니다.

  • 또는 터미널에서 다음을 실행합니다.

    vphone-cli vm config <name> --developer-tunnel on

    다음 시작부터 적용됩니다. vm info는 이 설정을 developer tunnel로 표시합니다.

vphoned가 응답하면 vphone-vm이 게스트를 대상으로 /usr/bin/devicectl을 실행하고, 종료될 때마다 다시 시작합니다. /usr/bin/devicectl이 없는 Mac에서는 가상 머신 로그에 [developer-tunnel] 줄이 한 번 표시되고 터널은 유지되지 않습니다.

이 설정이 없는 bundle에서는 대신 터미널에서 터널을 유지할 수 있습니다. vphone-cli vm info <name>에서 게스트의 UDID를 확인한 뒤 다음 명령을 계속 실행해 두세요.

/usr/bin/devicectl device notification observe --device <UDID> \
  --name com.vphone.keepalive --session-timeout 3500 --timeout 3600

--session-timeout은 --timeout보다 작아야 합니다. 명령은 한 시간 후 종료되므로 그때 다시 실행하세요.

터널이 연결된 뒤 1분 정도는 xctrace record --attach가 Cannot find process matching name 또는 Cannot find process for provided pid로 실패할 수 있습니다. 잠시 기다린 뒤 다시 시도하세요.

함께 보기