More  

收藏本站

電腦請使用 Ctrl + D 加入最愛
手機請使用 收藏
關閉

小編的世界 優質文選 主機

字節跳動首發雲固件,成功實現服務器LinuxBoot產品化落地|Q推薦


字體大小:
2021年9月21日 -
:       
 

酷扯兒

《酷扯兒》官方帳號

「來源: |InfoQ ID:infoqchina」

9 月 15 日,字節跳動宣布開發出第一代雲固件 (Cloud Firmware)。

該雲固件引入 LinuxBoot,並順利投入業務應用,是全球第一個在服務器中產品化 LinuxBoot 的固件方案

本文將和大家分享字節跳動 STE 團隊,在開發第一代雲固件上,是如何思考和一一落地的。

1 服務器固件生態問題眾多

固件是系統上最先啟動的軟件,其主要目的是初始化硬件,啟動到操作系統。固件存在於各種電子設備中,小到手表,大到數據中心服務器,今天我們重點聊聊服務器的固件。

目前服務器均采用 UEFI/Tiano(uefi.org/tianocore.org) 方案。UEFI/Tiano 是開源的固件方案,代碼繁重,社區活躍度低,這也使得幾乎沒有廠商,能基於 UEFI/Tiano 的開源方案直接產品化。

絕大部分系統廠商采用的是 BIOS 廠商的方案,固件工程師也大多從事主板適配、平台功能開發等工作。這使得眾多功能 / 核心模塊掌控在 BIOS 廠商手裏,系統廠商和用戶無法高效迅速地解決問題。

綜上所述,目前固件生態存在的主要問題包括:

與 Linux 社區相比,UEFI 社區活躍度低,較難招聘到合適人才;服務器固件與 SOC、板卡固件軟件生態不同 (UEFI vs. Linux),人才無法靈活複用;3.UEFI 固件很多功能模塊由 BIOS 廠商把控,線上問題無法快速解決;使用方、芯片廠商和系統廠商無法保持代碼同步,影響迭代和解決問題的速度。下圖為不同方案的合作模式:當前主流的合作模式為芯片廠商發布相關的芯片代碼到 BIOS 廠商,BIOS 廠商整合後再給到系統廠商同步開發;雲固件的合作方式是以字節為中心,系統代碼和芯片廠商、系統廠商同源;顯然,雲固件的合作方式能更快速迭代同步芯片和系統平台問題。

2 尋找適合服務器固件的 Bootloader

在服務器固件領域,目前可行的固件方案有 UEFI/Tiano,Min Platform, LinuxBoot, Coreboot, 生態比較成熟正在被采用的是 UEFI,但是其在社區活躍度、啟動速度、開發難易度上都存在問題;Min Platform、LinuxBoot,、CoreBoot 均為近幾年業界為解決 UEFI 缺點推出的固件方案,LinuxBoot、CoreBoot 直接引入了 Linux 生態,特點尤為突出,但是生態上有待共建。

通過收集比較適合服務器固件的各種 Bootloader 狀態,我們得出以下結論:

固件Boot 基本流程圖:

3 落地 LinuxBoot,構建簡單易用的新固件生態

路線選擇

Linux 是當下最活躍的技術社區之一,字節跳動 STE 團隊有不少 Linux 人才,也開發了穩定可靠的 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