由于物联网设备存储空间有限,成本要求严苛,因此Bootloader需要满足占用空间小、功能安全、极速启动等需求。英特尔Slim Bootloader 就是专为物联网应用案例量身定制,是一款开源的启动固件解决方案,当系统上电时负责初始化系统的核心硬件组件,然后加载和启动所需要的操作系统。
从构建之初,Slim Bootloader就考虑了安全性、轻量级和高度优化,可以利用EDK II框架中的强大工具和库,可以根据系统的特殊需求进行隔离、配置和优化,从而达到优异的启动性能,并最大限度地减少固件所占用的空间。同时具有模块化、可扩展设计的优点,根据源版本实现产品质量参考,BSD许可证开源,实际产品可能会根据不同的许可证发布。
Intel物联网部门 Bootloader 的架构原则是通过简单灵活的架构实现快速广泛的采用,并利用内部和外部开发社区,以安全为基础进行设计和开发。
在设计中,Slim Bootloader具有几大优势:
第一, 简单快速,线性执行流程实现可预测性,通过FSP API将复杂的芯片初始化代码进行抽象,包括TempRamInit, FspMemoryInit, FspTempRamExit, FspSiliconInit, NotifyPhase;
第二, 具有灵活性,将初始化代码分成具有标准化接口的模块化阶段:– Stage1A (SRAM/Flash) => Stage1B (Flash/CAR) => Stage2 (MEM),且不同的Payload用于引导不同的OS或应用程序;
第三, 可移植性,核心代码高度模块化,通过提供不同的静态库,不同的开发板/芯片可以用过hook函数实现平台相关的初始化;配置(内置或外置)支持多种开发板;
第四, 利用经过验证的代码,FSP二进制文件,以及已被验证的BIOS中的平台库(例如:GPIO init);
第五, 编译框架,支持多种OS(Windows 和 Linux)和多种工具链;
第六, 安全性,通过Intel®BootGuard实现基于硬件的启动完整性保护的安全启动,支持verified boot和Measured boot。
下面针对初始化阶段和启动阶段分别讲述Slim Bootloader的优势。
初始化阶段
Slim Bootloader可以利用EDK2构建基础架构,支持Windows和Linux环境,支持多种平台,支持多个目标(D / R);必备工具包括VisualStudio(Windows)、GCC工具链(Linux)、NAMM、Python、iASL、OpenSSL;由pythonBuildLoader.py构建qemu,图片存放于Slimbootloader.bin中。
Slim Bootloader :https://intel.com/sbl
Slim Bootloader Repo :https://github.com/slimbootloader
Intel® FSP :https://intel.com/fsp
ACRN :https://projectacrn.org