3

字节跳动首发云固件,成功实现服务器 LinuxBoot 产品化落地

 2 years ago
source link: https://www.infoq.cn/article/xdj0T5ZBzVL2uuOZJYYw
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

字节跳动首发云固件,成功实现服务器 LinuxBoot 产品化落地





字节跳动首发云固件,成功实现服务器 LinuxBoot 产品化落地

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

划线
评论
复制

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK