固件准备
在为固件打补丁之前,vm create 和 fw prepare 会如何处理两个 IPSW,以及不含 vphone600 组件的 cloudOS 还需要哪些额外步骤。手动运行各个阶段、复用 GPU 驱动,或者用研究主板组合创建虚拟机时,请参阅本页。
GPU 驱动
fw prepare 需要先从 cloudOS 中取得半虚拟化 GPU 驱动,才能构建混合的 iPhone 恢复包。获取方式如下:
- 创建一台没有网络设备的临时 vphone 虚拟机,并以 DFU 模式启动。
- 用 vphone 自己的恢复后端把所选的 cloudOS IPSW 恢复到这台虚拟机中。
- 以只读方式装载恢复后的 System 宗卷,提取 GPU bundle。
- 删除临时虚拟机。
提取出的 bundle 按 cloudOS 构建版本缓存在 ~/.vphone/gpu-drivers/ 中,因此之后使用同一 cloudOS 的虚拟机会跳过临时恢复。
要复用之前提取的 bundle,请把它传给 vm create 或 fw prepare:
CLI 会把该 bundle 的 iPhoneOS 平台版本与所选 cloudOS 版本进行核对。每次恢复都会在线获取自己的票据。
bundle 中还附带一个 arm64e GPU 编译器插件。fw prepare 会在打补丁和安装之前把它拷贝到准备好的 GPU bundle 中。
研究主板组合
26.4 beta 之后的 cloudOS 不含 vphone600 组件,因此由研究主板代替(见兼容性)。它的 kernelcache 会用 vphone600 的虚拟化 kext 重新构建。KDK 提取以你的身份原生运行;只有 kmutil 链接需要 root 权限。
-
照常运行
fw prepare。 -
以你自己的身份准备组合:
-
以 root 身份链接:
-
继续运行
fw patch,它会从缓存中取用组合。
fw kernelcache 旧的 --ipsw 参数仍可传入,但会被忽略。
在另一台 Mac 上链接
内核只能以 Apple 链接时所用的布局启动,而 kmutil 会采用它所运行的 Mac 的布局:
如果这台 Mac 的布局不符,可以由另一台 Mac 或 macOS 虚拟机通过 ssh 链接组合。为 fw kernelcache 或创建流程设置以下变量:
准备好的宗卷会上传到那台 Mac 的 /private/var/tmp,在那里以 root 身份链接,然后删除。这台 Mac 上不需要任何 root 权限。另一台 Mac 必须打开“远程登录”,并且该用户必须能够使用 sudo。