iPadOS ゲスト
vphone のマシンで iOS の代わりに iPadOS を実行する方法です。iPad のユーザランド、画面サイズ、マルチタスク機能が必要な場合に使います。
仮想ハードウェアは変わりません。ブートチェーン、カーネル、SEP、デバイスツリーは引き続き PCC の cloudOS IPSW(vresearch101ap / vphone600ap)から取得します。ユーザランドだけが iPhone17,3 ではなく iPad の復元用 IPSW から取得され、ユーザランドから iPad に見えるようにデバイスツリーが書き換えられます。

作成する
Launchpad で
- New Machine を選びます。
- Device で iPad を、iPadOS でリリースを選びます。推奨される cloudOS も一緒に選ばれます。
- カタログにない IPSW を使う場合は、Source を Custom IPSWs にし、iPhone IPSW 欄に iPad の IPSW を、もう一方の欄に cloudOS の IPSW を入力します。
Device メニューは、カタログに iPad が含まれる Core Bundle の場合にだけ表示されます。ターミナルからは、vphone-launchpad-cli vm create <name> --device iPad16,1 で同じことができます。
vphone-cli で
iPhone の IPSW を渡す場所に、iPad の復元用 IPSW を渡します。cloudOS は、同じリリースの iPhone ゲストが使うものと同じです。
リリースを探すには:
--device を指定してソースを指定しない場合、vm create はその iPad のリリースを選択肢として表示します。
共有 IPSW でモデルを選ぶ
ほとんどの iPad の IPSW は複数のモデルに対応しています。iPad Air と iPad Pro の IPSW には両方のサイズが含まれます。--device を指定しないと、fw prepare は IPSW に最初に記載されたモデル(11 インチ)を選びます。13 インチにするには、fw prepare または vm create に --device iPad17,3 を渡します。Launchpad の New Machine は Device で選んだモデルを渡します。Custom IPSWs の場合は最初のモデルを選びます。
手動の段階
手動の段階は iPhone ゲストと同じです:vm new、fw prepare、fw patch、DFU と restore、cfw install、vm launch。iPad で動作が異なるのは fw prepare と fw patch だけで、DFU、restore、cfw install はそのまま実行されます。
サポートされるデバイス
セルラーモデル(iPad16,2、iPad15,4、iPad15,6、iPad16,4、iPad16,6、iPad17,2、iPad17,4)は、対応する Wi-Fi モデルと IPSW を共有し、そのモデルとして動作します。仮想マシンにはベースバンドがありません。iPad15,8 は Wi-Fi モデルのボードを含まない独自の IPSW で配布されており、サポートされていません。
テスト済みの組み合わせは互換性にあります。
iPad で変わること
-
fw prepareはSupportedProductTypesから IPSW を認識し、ゲストのボードに対応する消去用アイデンティティとDeviceMapのエントリを選び(iPad の IPSW は複数のボードに対応しています)、製品タイプと iPad のディスプレイをマシンのconfig.plist(guestProductType、screenConfig)に記録します。復元ツリーの名前はiPhoneOS_iPad16,1_<version>_<build>_Restoreになります。iPhoneという接頭辞は、復元ツリーを読み取るすべての処理が照合する命名規則であり、デバイスを表すものではありません。 -
2 つのデバイスツリー。 ハイブリッドなマニフェストでは、通常
DeviceTreeとRestoreDeviceTreeが同じ vphone600 のファイルを指します。iPad の場合、DeviceTreeはコピーであるFirmware/all_flash/DeviceTree.vphone600ap.guest.im4pを指します。復元時は、restored_externalがマニフェストと照合する未変更のアイデンティティ(iPhone99,11)で起動し、ゲストはコピーで起動します。 -
fw patchは、そのコピーに iPad のアイデンティティと表示を与えます(パッチセットdevicetree、エントリdevicetree-cfw-ipad_*)。- ルートの
model、target-type、target-sub-typeをボードと同じ値にし(iPad mini の場合はiPad16,1、J410、J410AP)、compatibleはボードを先頭にしてVPHONE600APを 2 番目に残します。 /product:ボードのアートワークのイディオム、サブタイプ、スケール、製品名、外観、カメラとボタンの配置、マルチタスク機能(medusa-overlay-app-capability、ui-floating-live-app、ui-overlay-app、ui-pinned-app、そしてステージマネージャのないボードではdisable-chamois)、製品タイプと固有のモデル。これらはすべて、復元ツリーに残っているボードのDeviceTree.<board>.im4pから読み取ります。- iPhone 専用の
syscfgのプレースホルダ(Dynamic Island、簡易アクセス、着信/サイレントスイッチ、音量ボタンの配置、CarPlay、Apple Watch のペアリング)は削除されます。
仮想ハードウェアは vphone600 の記述のままです:GPU の機能セット、フレームバッファ、メモリクラス、ブートフラグ。
- ルートの
-
LLB には、iPad ゲストの場合にもう 1 つのパッチ
llb-cfw-display_scaleが適用されます。LLB は準仮想化ディスプレイのブートビデオのワードから/chosen/display-scaleを設定しますが、この値は常に 3x を示します。MobileGestalt はこのプロパティを画面のスケールとして使うため、iPad では 496x755 ポイントのキャンバスになってしまいます。このパッチで、LLB が iPad 本来のスケール(iPad mini の場合は 2x、744x1133 ポイント)を書き込むようにします。 -
cfw installは、インストールされたデバイスツリーに手を加えません。iPhone17,3 の復元後のアイデンティティ書き換え(preboot-exp-devicetree_identity)は、iPad ゲストでは省かれます。 -
マシンのウィンドウは
screenConfigに従うため、iPad の縦横比で開きます。
iPad を追加する
iPad のモデルを追加するには、VPhoneGuestDevice に製品タイプ、ボード、パネルの 1 行を加えるだけです。デバイスツリーに必要な情報は、すべて IPSW 内のボード自身の DeviceTree.<board>.im4p から読み取られます。