You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
general: Remove SSH-ramdisk CFW install path; host-mount is the sole flow
The ramdisk-based install (build/send an SSH ramdisk, iproxy-forward, then
push CFW files over SSH and flip the boot snapshot with snaputil in-VM) has
been fully replaced by the host-mount path: cfw_install_host.sh mounts the
VM's Disk.img on the host, places every file locally, and flips the boot
snapshot offline via tools/apfs_snap_rename.py. This removes all remaining
ramdisk generation, delivery, and usage — no legacy fallback.
Deleted:
- scripts/ramdisk_build.py, scripts/ramdisk_send.sh
Renamed:
- scripts/cfw_host_mode.sh -> scripts/cfw_transport.sh (was a conditional
"host-mode override"; now the sole, unconditionally-sourced transport)
setup_machine.sh: drop the USE_RAMDISK_CFW=1 branch and every iproxy/ramdisk
helper (usbmux UDID resolution, port picking, start/stop iproxy, wait-for-
ramdisk-ssh), all RAMDISK_*/IPROXY_* vars, the cleanup() iproxy handling, and
the orphaned cfw_install_target var. Only the host-mount cfw_install_host call
remains.
cfw_install{,_dev,_jb,_exp}.sh: delete the SSH transport (SSH_* vars, SSH_OPTS,
sshpass prereq/_sshpass/_ssh_retry, ssh_cmd/scp_to/scp_from/remote_file_exists/
remote_mount, wait_for_device_ssh_ready) and the dead ramdisk-mechanism body
blocks (snaputil snapshot flip, dropbearkey host-key pre-generation, halt-over-
SSH, CFW_SKIP_HALT). The transport is now sourced unconditionally from
cfw_transport.sh. dropbear -R generates host keys at first boot; the offline
apfs_snap_rename.py does the boot-source flip. Dropped the vestigial
CFW_HOST_MODE gate.
Also: pymobiledevice3_bridge.py (ramdisk-send command already gone), Makefile
(ramdisk targets/help/IRECOVERY_ECID removed), README + ja/ko/zh (install flow
rewritten to host-mount), AGENTS.md/CLAUDE.md architecture tree, and stale
comments in vphone_jb_setup.sh, VPhoneCLI.swift, apfs_snap_rename.py,
cfw_patch_post_restore_dt.py.
Verified booting via make setup_machine.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XZVS9oqVNmHJzpb8mFtKJx
# DEV=1 for dev variant (+ TXM entitlement/debug bypasses)
@@ -182,37 +182,23 @@ make restore # flash firmware via pymobiledevice3 restore backe
182
182
183
183
## Install Custom Firmware
184
184
185
-
Stop the DFU boot in terminal 1 (Ctrl+C), then boot into DFU again for the ramdisk:
185
+
Once the restore completes, stop the DFU boot in terminal 1 (Ctrl+C) so the VM is
186
+
fully powered off. The installer mounts the VM's `Disk.img` on the host, places
187
+
all CFW files, and flips the boot snapshot offline — no DFU, ramdisk, or SSH — so
188
+
it needs exclusive access to the disk.
186
189
187
190
```bash
188
-
# terminal 1
189
-
make boot_dfu # keep running
190
-
```
191
-
192
-
```bash
193
-
# terminal 2
194
-
sudo make ramdisk_build # build signed SSH ramdisk
195
-
make ramdisk_send # send to device
196
-
```
197
-
198
-
Once the ramdisk is running (you should see `Running server` in the output), open a **third terminal** for the usbmux tunnel, then install CFW from terminal 2:
199
-
200
-
```bash
201
-
# terminal 3 — keep running
202
-
python3 -m pymobiledevice3 usbmux forward 2222 22
203
-
```
204
-
205
-
```bash
206
-
# terminal 2
191
+
# terminal 2 (re-execs under sudo automatically)
207
192
make cfw_install
193
+
# or: make cfw_install_dev # development variant
208
194
# or: make cfw_install_jb # jailbreak variant
209
195
# or: make cfw_install_exp # experimental variant (JB + research stack)
210
196
# or: SPOOF_BUILD=23F77 make cfw_install_exp # additionally rewrite ProductBuildVersion
211
197
```
212
198
213
199
## First Boot
214
200
215
-
Stop the DFU boot in terminal 1 (Ctrl+C), then:
201
+
With the DFU boot stopped and CFW installed, boot the VM normally:
터미널 1의 DFU 부팅을 중단(Ctrl+C)한 다음, 램디스크를 위해 다시 DFU로 부팅합니다:
173
+
복원이 완료되면 터미널 1의 DFU 부팅을 중단(Ctrl+C)하여 VM을 완전히 종료합니다. 설치 프로그램은 VM의 `Disk.img`를 호스트에 마운트하여 모든 CFW 파일을 배치하고 부팅 스냅샷을 오프라인으로 전환합니다(DFU / 램디스크 / SSH 불필요). 따라서 디스크에 대한 독점 액세스가 필요합니다.
174
174
175
175
```bash
176
-
# 터미널 1
177
-
make boot_dfu # 계속 실행 유지
178
-
```
179
-
180
-
```bash
181
-
# 터미널 2
182
-
sudo make ramdisk_build # 서명된 SSH 램디스크 빌드
183
-
make ramdisk_send # 장치로 전송
184
-
```
185
-
186
-
램디스크가 실행되면(출력에 `Running server`가 표시됨), **세 번째 터미널**을 열어 usbmux 터널을 시작한 후, 터미널 2에서 커스텀 펌웨어를 설치합니다:
187
-
188
-
```bash
189
-
# 터미널 3 — 계속 실행 유지
190
-
python3 -m pymobiledevice3 usbmux forward 2222 22
191
-
```
192
-
193
-
```bash
194
-
# 터미널 2
176
+
# 터미널 2 (자동으로 sudo로 재실행됨)
195
177
make cfw_install
178
+
# 또는: make cfw_install_dev # 개발 변형
196
179
# 또는: make cfw_install_jb # 탈옥 변형
197
180
# 또는: make cfw_install_exp # 실험 변형 (탈옥 + 연구 패치 스택)
198
181
# 또는: SPOOF_BUILD=23F77 make cfw_install_exp # 추가로 ProductBuildVersion 재작성
0 commit comments