GMTC全球大前端技术大会限时9折特惠中,点击立减¥480 了解详情
写点什么

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

2021 年 9 月 18 日

字节跳动首发云固件,成功实现服务器 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

2021 年 9 月 18 日 23:292922

评论

发布
暂无评论
发现更多内容

实现元素等高: Flexbox vs. Grid

寇云

CSS css3

联邦学习与推荐系统

博文视点Broadview

人工智能 大数据 学习 推荐系统

RASP研发踩坑之agent 加载机制(1)

国服第一

Java JVM 类加载 RASP

点击劫持:无X-Frame-Options头信息(修复)

唯爱

码农远程办公指北

大伟

python实现·十大排序算法之计数排序(Counting Sort)

南风以南

Python 排序算法 计数排序

你的团队想做出什么成果?

姜戈

团队管理

使用<input>标签实现六个格子验证码输入框

brave heart

Java vue.js 前端

健身一周年:持续锻炼带来无法想象的改变

Skipper

学习 职业 专注 健身

终于,我也到了和Eclipse说再见的时候,难说再见

程序员小跃

Java eclipse IDEA

栀子花,我们应该像你一样静静绽放

小天同学

个人感想 感悟 日常思考

提升输入效率第一步——切换双拼

dongh11

效率工具 提升效率 生产力 分享 有趣

管理规划篇

姜戈

团队管理 团队组织

突破困局

Neco.W

感悟 工作 创业心态

多线程与线程安全(实例讲解)

YoungZY

Java 多线程 线程安全

假如孔乙己是程序员

顿晓

学习 程序员 孔乙己

Android原生人脸识别Camera2+FaceDetector 快速实现人脸跟踪

sar

宕机原因千千万,被雷劈了最无奈

田晓旭

你的团队是干什么的?

姜戈

团队管理 团队职能

揭秘神经拟态计算:缘何成为AI界新宠?

最新动态

好的软件工程原则

pydata

Spring Security 两种资源放行策略,千万别用错了!

江南一点雨

Java spring springboot springsecurity

一致性算法 Raft 简述

架构精进之路

raft 一致性算法

redis过期策略和内存淘汰机制

wjchenge

100天从 Python 小白到大神最良心的学习资源!

JackTian

Python GitHub 学习 Python-100-Days Python-Core-50-Courses

你为什么“啃不动”你手中的技术书?

图灵社区

Java Python 算法 HTTP R语言

你真的会用Mac中的Finder吗

Winann

macos 效率 App Mac

源码分析 | Mybatis接口没有实现类为什么可以执行增删改查

小傅哥

Java 源码分析 小傅哥 mybatis 编程思维

Vol.1 Java初探,新手必看!

pyfn2030

编程 新手指南

软件开发生产率改进之我见(二)

清水

软件工程 软件开发 技术管理

ARTS week 2

锈蠢刀

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