9 月 15 日,字节跳动宣布开发出第一代云固件 (Cloud Firmware)。
该云固件引入 LinuxBoot,并顺利投入业务应用,是全球第一个在服务器中产品化 LinuxBoot 的固件方案。
本文将和大家分享字节跳动 STE 团队,在开发第一代云固件上,是如何思考和一一落地的。
服务器固件生态问题众多
固件是系统上最先启动的软件,其主要目的是初始化硬件,启动操作系统。固件存在于各种电子设备中,小到手表,大到数据中心服务器,今天我们重点聊聊服务器固件。
目前服务器均采用 UEFI/Tiano(uefi.org/tianocore.org) 方案。UEFI/Tiano 是开源的固件方案,代码繁重,社区活跃度低,几乎没有厂商能基于 UEFI/Tiano 的开源方案直接产品化。
绝大部分系统厂商采用的是 BIOS 厂商的方案,固件工程师也大多从事主板适配、平台功能开发等工作。这使得众多功能/核心模块掌控在 BIOS 厂商手里,系统厂商和用户无法高效迅速地解决问题。
综上所述,目前固件生态存在的主要问题包括:
1. 与 Linux 社区相比,UEFI 社区活跃度低,较难招聘到合适人才;
2. 服务器固件与 SOC、板卡固件软件生态不同 (UEFI vs. Linux),人才无法灵活复用;
3. UEFI 固件很多功能模块由 BIOS 厂商把控,线上问题无法快速解决;
4. 使用方、芯片厂商和系统厂商无法保持代码同步,影响迭代和解决问题的速度。
当前的合作模式为芯片厂商发布相关的芯片代码到 BIOS 厂商,BIOS 厂商整合后,再给到系统厂商同步开发。云固件的合作方式则是以字节为中心,系统代码和芯片厂商、系统厂商同源。
不同方案的合作模式
显然,云固件的合作方式更能快速迭代同步芯片、系统平台问题。
寻找适合服务器固件的 Bootloader
在服务器固件领域,目前可行的固件方案有 UEFI/Tiano、Min Platform、LinuxBoot 及 Coreboot,目前生态比较成熟正在被采用的是 UEFI,但是其在社区活跃度、启动速度和开发难易度上都存在问题。
Min Platform、LinuxBoot 和 CoreBoot 都是近几年针对 UEFI 缺点推出的固件方案,LinuxBoot 和 CoreBoot 直接引入了 Linux 生态,特点尤为突出,但是生态上有待共建。
通过收集比较,我们得出以下结论:
适配服务器固件的各种 Bootloader 状态对比图
固件 Boot 基本流程图:
落地 LinuxBoot,构建简单易用的新固件生态
路线选择
Linux 是当下最活跃的技术社区之一,字节跳动 STE 团队也开发了稳定可靠的 veLinux 操作系统。
能否将 Linux 下沉到固件,利用 Linux 良好的生态来快速解决固件问题?LinuxBoot 正好符合我们的想法。
固件的芯片和平台部分,我们选择用 CoreBoot/U-Boot (Universal Boot Loader) 完全替换 UEFI/Tiano。这样可以直接打通服务器和各自板卡、嵌入式的固件生态,人力也可以灵活复用。
固件方案的改造推进,离不开生态以及各厂商的支持。根据目前固件生态情况,我们制定了以下路线图:
1. 云固件 1.0:基于 Minimun Platform 和 LinuxBoot,精简传统固件方案,将一些功能移至生态更佳的 LinuxBoot 里实现;重点适配,迭代 LinuxBoot,使其达到产品化质量。
2. 云固件 2.0:基于 CoreBoot 和 LinuxBoot,与社区和厂商共同打造 CoreBoot 生态和环境,使 LinuxBoot 和 CoreBoot 均迭代到产品化程度。
3. 云固件 3.0:基于不同的 Platform 和架构迭代,使其适配于不同架构的平台。
开发方式
精简 UEFI 平台 (Minimum Platform) 开发:
• 在 Minimum Platform 开发上,我们制定了非常明确高效的合作方式:芯片部分与芯片厂商 Intel 直接合作开发测试,Platform 部分则与系统厂商浪潮直接合作开发测试。最终我们在人力和时间均一半的情况下,高效可靠地完成了 Minimum Platform 开发。
LinuxBoot 开发:
• 基于字节跳动系统部 veLinux 开发团队研发的稳定内核,快速裁剪出适用的 LinuxBoot 模块。
成果梳理
第一代云固件首批 200+ 服务器已顺利完成生产上线,并稳定支持了字节跳动部分业务的持续运行。
此外,我们和社区厂商也在紧密合作开发第二代云固件。目前 CoreBoot 已经完成开机,其他相关工作也在有序推进中。
云固件的顺利运行,同样离不开 Intel、浪潮的共建参与和支持,我们期待在后继开发中,继续推进技术创新合作,同时也期待更多有志之士、公司参与到整个生态的建设中来,携手打造简单易用的新固件生态。
参考资料
1. UEFI: https://uefi.org/
2. Tiano: https://www.tianocore.org/
3. LinuxBoot: https://www.linuxboot.org/
4. CoreBoot: https://www.coreboot.com/
5. Minimum Platform: https://software.intel.com/content/www/us/en/develop/articles/minimum-platform-architecture-open-source-uefi-firmware-for-intel-based-platforms.html
评论