概要
コマンドラインツール。Apple シリコン搭載 Mac 上で仮想 iPhone を作成、パッチ適用、起動する。IPSW のダウンロード、DFU リストア、カスタムファームウェアのインストールを自動で実行し、パッチなしから完全なジェイルブレイクまで複数のバリアントをサポートする。Apple の Virtualization.framework と PCC 研究用 VM インフラストラクチャに基づいて構築されている。
README プレビュー
🇰🇷한국어 | 🇯🇵日本語 | 🇨🇳中文 | 🇬🇧English\n\n# vphone-cli\n\nBoot a virtual iPhone via Apple's Virtualization.framework using PCC research VM infrastructure.\n\n\n\n## Prerequisites\n\n**Host:**\n\n- Apple Silicon\n- macOS 15+ (Sequoia)\n- Xcode + iOS SDK (cross-compiles the guest daemon)\n- [SIP/AMFI relaxation to allow private PV=3 entitlements with unsigned-binary](#sipamfi-relaxation)\n\n**Dependencies:**\n\n```bash\nbrew install python@3.13 aria2 wget gnu-tar openssl@3 ldid-procursus sshpass keystone cmake libusb ipsw zstd\n```\n\n## Install\n\n```bash\nbrew install zqxwce/tap/vphone-cli\n```\n\n## Build\n\n```bash\ngit clone --recurse-submodules https://github.com/Lakr233/vphone-cli.git\n\n./scripts/setup_tools.sh # install deps, build toolchain submodules, create the Python venv\n./scripts/build.sh # build + sign vphone-cli, bundle the .app, cross-compile vphoned\n\ncd .build/vphone-cli.app/Contents/MacOS/\nvphone-cli --help\n```\n\n## Quick Start\n\nOne command creates a VM end-to-end (download → patch → DFU restore → CFW install → first boot):\n\n```bash\nvphone-cli vm create myphone -V jb # -V / --variant\n\nvphone-cli vm launch myphone\n```\n\n## Commands\n\n`vphone-cli vm create` runs the whole pipeline; the individual steps below let you drive it manually or re-run one stage.\n\n### Manage\n\n```bash\nvphone-cli vm list # list VMs (--json for scripting)\nvphone-cli vm info myphone # show one VM\nvphone-cli vm new myphone # create an empty bundle (cpu/mem/disk options)\nvphone-cli vm config myphone --cpu 8 --memory 8192\nvphone-cli vm clone myphone myphone-2 # fast APFS clone, fresh device identity\nvphone-cli vm export myphone --out myphone.tzst # zstd fast by default (--max = xz -9); --out may be a dir (auto-names .tzst/.txz); skips restore dir + staging files\nvphone-cli vm import myphone.tzst --name restored\nvphone-cli vm rename myphone iphone16\nvphone-cli vm d
FAQ (5)
トラブル対応macOS 27でVPhone Cloneオプションが動作しない問題を修正する方法
**VPhone.bundle 2.9.0** にアップグレードしてください。修正はコミット 7d22444d に含まれています。macOS 27 では、/dev のデバイス番号が Int32.max を超える場合があり、クローンのコピー前チェックが、/dev/null、ディスクイメージ、SEPStorage、または nvram.bin を開いているプロセスをスキャンする際にクラッシュします。これにより、vphone-cli vm clone、スナップショット、およびリバートも使用できなくなります。2.9.0 バンドルをインストールした後、既存の各仮想マシンの **Core Bundle** 設定を **2.9.0** に更新してから、**Clone…**、スナップショット、またはリバートを再度実行してください。
トラブル対応apps.installで大きなIPAをインストールする際に「IPA: archive expands beyond one GiB」というエラーを修正するにはどうすればよいですか?
**icli 0.7.18以降**を含むビルドにアップグレードしてください。vphone-cli の main はコミット 9c9446a0 からそれを使用しています。そのバージョンでは、展開サイズの上限が**1 GiBから8 GiB**に引き上げられ、最大エントリ数も**50,000から400,000**に引き上げられました。アップグレード後に、再試行してください。
vphone-launchpad-cli guest rpc <machine> apps.install '{"path":"<guest path to .ipa>"}'
これにより、96,764エントリを含む1.89 GBのIPAが正常に展開できるようになります。古いリリースでこの上限を変更できる環境変数、plist、ランタイム設定は存在しません。1 GiBの上限はコンパイル時の定数でした。vphone-launchpad 2.8.0/icli 0.7.17のまま使用する場合は、アップグレードするか、より大きな kArchiveByteLimit を指定してカスタムicliをビルドする必要があります。新しい拒否メッセージには実際のサイズが含まれます。例: IPA: archive expands to 8.79 GiB, over the 8 GiB limit。
トラブル対応iOS 18のVPhone Launchpadで「Set up and slim system failed」エラー「service group(s) accounts need the trimmed service list」を修正する方法
これは、Launchpad 2.9.5 が "Turn off unneeded services" が有効になっている場合(デフォルト)に常に --accounts-off を渡すことが原因で発生しますが、削減されたサービスリストは iOS 26/27 向けの vphoned にのみ存在します。iOS < 26(例:iOS 18.6.2)では、セットアップ手順が失敗し、再試行しても同じ失敗する引数が繰り返されます。回避策:マシンを作成する際に、Advanced Options → Services and Apps を開き、"Turn off unneeded services" を OFF にします。すると、Launchpad は --accounts-off の代わりに --service-profile none を渡し、作成が成功します。iOS < 26 では、これらのバージョンにはそもそも削減されたサービスリストが存在しないため、何も失われません。適切な修正は、Launchpad が trimmedServiceProfileMajors([26, 27])に含まれる iOS メジャーバージョンに対してのみ --accounts-off を渡すようにすることです。
トラブル対応BarkがVPhoneで「Unknown Status」と表示され、APNsデバイストークンの取得に失敗するのはなぜですか?
これは想定された動作です。VPhoneは、Apple APNsデバイストークンの取得や、APNsによって配信されるリモート通知の受信をサポートしていません。これは、APNsの登録にはAppleデバイスのアテステーションと非公開のセキュアトークンの交換が必要であり、仮想環境ではこれを提供できないためです。修正の予定はありません。通知を有効にしたり、aps-environment: productionエンタイトルメントを付与したり、com.apple.apsdが実行されていることを確認したりしても、使用可能なトークンは生成されません。回避策として、Bulletin Boardと通信して同等の通知機能を提供するカスタムデーモンを実装してください。
トラブル対応vphone内のroothide bootstrapでSSH (OpenSSH)が動作しない問題を修正する方法
roothide bootstrap 環境の vphone 2.1.0 では、irisin パッケージマネージャーで openssh のみをインストールするだけでは不十分で、/private/var/containers/Bundle/Application/.jbroot-* 内に rootfs シンボリックリンクが依然として存在しません。解決策: irisin から base パッケージもインストールしてください。openssh と base の両方がインストールされれば、追加の手順なしで SSH が動作します。