Bringup 产品定义
bringup
产品是开发的最小可行目标。它是一个最小特性集合产品,侧重于变得非常简单、非常高效。
bringup 产品至少满足以下用途:
- 适配工作(bringup):当新平台由于所有必需的部分尚未完成或可靠工作(例如网络、存储器或 fx 设备发现所需配置和包管理),而无法运行 Fuchsia 时(
core
或更高级产品配置)。 - 内核和低级(low level)驱动开发:开发需要正常运作的甚至是在
core
产品中运行的功能需要 bringup 产品。这应用于内核开发和在core
中需要的驱动(如网络和存储器)。注意,当 core 所需的驱动尚未就绪时,例如音频的高级驱动也能从 bringup 构建中获益。
bringup 构建拥有这些基本特性:
- 启用了串行输出:这包括来自驱动的调试日志记录(比如通过 zxlogf)。这必须保证适配新平台的开发人员能够根据需要进行 printf 调试。
- 可加载到内存(RAM):必须可以按照优先次序将 bringup 构建加载到内存中。
- 对于支持“fastboot 引导”的平台,必须能够直接从引导加载器(bootloader)实现内存直接引导 ZBI 文件(例如使用 bootshim 机制)。
- 对于不支持“fastboot 引导”的平台,必须能够通过诸如 netsvc(用于网络引导)或 overnet(用于通过串行示例)的机制使用现有 zedboot 进行引导(例如加载到 U 盘中或事先刷入)。
- 对于不支持“fastboot 引导”的平台(比如无法控制引导加载器时),也必须能够从引导加载器实现内存直接引导 ZBI 文件(例如通过为特定引导加载器创建 bootshim 的方式)。
- 不依赖于早期 bringup 中不可用的驱动:早期 bringup 中可用的驱动有中断控制器、串行端口等。早期 bringup 中不可用的的驱动有网络和存储器等。
- 总体上对 Fuchsia 的依赖性最小,其中它:
- 拥有通过串行链接驱动的工作流程。
- 考虑了在构建中除了内核另外的(即在 bootfs 中)所有需要加载的内容。
- 不依赖于 Fuchsia 的特性,例如 paving 需要存储器。
- 不支持 fx 命令,诸如 fx serve 和 fx shell。因此,bringup 构建不能在运行时添加新软件,也不能自我升级。
- 考虑了简单地包括附加驱动或二进制文件:在 bringup 构建中必须能够包括附加二进制文件和驱动。例如通过 GN 添加包含项到 bootfs 中以向构建添加开发中的驱动。
注意,这些特性不能阻止为改善的工作流考虑而将 bringup 构建的最小化配置扩展成其他更加完善配置的可能。