Core Bundle 与本地构建
每台 Launchpad 虚拟机都使用一个已安装的 VPhone.bundle 版本运行,即它的 Core Bundle。本页介绍如何安装本地构建、把虚拟机迁移到该构建,以及如何并排比较两个构建。
测试 VPhone.bundle 构建
-
在仓库根目录构建 bundle:
-
安装。它会以
<version>-local.<hash>安装并成为默认版本,获得执行策略例外,新的vphone-vmcdhash 会被允许,然后运行宿主机预检:确切的版本号见安装结果和
bundle list。 -
把现有虚拟机迁移到该版本。
--update-environment还会重新部署新的 vphoned 和 hook dylib,并要求虚拟机处于停止状态: -
启动虚拟机并检查:
辅助程序的授权有效期为五分钟。授权过期后,第一个需要辅助程序的步骤会像窗口中一样,在 Mac 上要求输入管理员密码。
要为现有虚拟机进行一次性的内核和客户机更新以启用持久着色器缓存,请参阅持久着色器缓存。
比较两个构建
安装两个构建但不改变默认版本,然后分别为它们创建虚拟机:
这样创建的虚拟机在全部三层上都不同(见下文)。如果只想在同一条启动链上比较宿主机程序和客户机环境,请在窗口中克隆一台虚拟机,然后重新绑定副本:
vm list 会显示每一层来自哪个 bundle。有虚拟机绑定到某个版本时,bundle remove 会拒绝删除该版本;请先重新绑定或删除这些虚拟机。
虚拟机如何绑定到 bundle
每台虚拟机都绑定到一个已安装的版本,在创建时选定,并保存在虚拟机文件夹的 launchpad.json 中。安装 bundle 永远不会改变虚拟机的绑定。
一台虚拟机由三层组成,每一层在不同时间取自 bundle:
之后更改启动链补丁
vphone-cli fw set-patches 更改补丁选择,vphone-cli fw patches <vm> 列出尚未应用到客户机的补丁。Launchpad 会在检查器中显示数量。每类补丁应用到客户机的方式不同:
默认 bundle
默认 bundle(以前称为“active”)只决定:
- 未指定
--bundle时,vm create绑定哪个版本; exec和作用于整个资料库的命令使用哪个版本运行。
新安装的版本会成为默认版本,除非传入 --keep-default。在一个 Launchpad 会话中首次启动某台虚拟机时,会检查一次它的 bundle(执行策略例外、AMFI、宿主机预检)。
版本名称
本地构建以 <version>-local.<hash> 安装,哈希取自 bundle 的代码签名封印,因此同一版本的两个构建可以并存。较旧的存储中可能仍有 <version>-local 或 <version>-ci.<commit>。