2022
我们一起努力

字节跳动的内部流程框架,云服务器是固件吗

作者 | 字节跳动 STE 团队

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 生态,特点尤为突出,但是生态上有待共建。

通过收集比较,我们得出以下结论:

UEFI/Tiano

Min Platform

LinuxBoot

CoreBoot

当前生态

社区活跃度

启动速度

字节跳动的内部流程框架,云服务器是固件吗

开发难度

适配服务器固件的各种 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.htm

赞(0)
文章名称:《字节跳动的内部流程框架,云服务器是固件吗》
文章链接:https://www.fzvps.com/49089.html
本站文章来源于互联网,如有侵权,请联系管理删除,本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
图片版权归属各自创作者所有,图片水印出于防止被无耻之徒盗取劳动成果的目的。

评论 抢沙发

评论前必须登录!