OpenBMC:开源的下一代系统管理软件架构

https://code.facebook.com/posts/1601610310055392/introducing-openbmc-an-open-software-framework-for-next-generation-system-management/
国外博文系列

OpenBMC的诞生

在Facebook,可靠性和快速迭代是两个重要原则。这使得我们在构建基础架构时,可以快速查询特征,并且可以对自己的系统重要项目进行故障定位。最近,我们发现底板管理控制器(BMC)一系列相关的软件(Software Stack)太封闭了,无法满足这些需求,所以我们建立了自己的版本,我们是开源的。我们如何实现这个开源的软件解决方案,是对Facebook黑客文化的一个很好的研究 - 这里将介绍背后故事。

考虑应用场景,BMC是嵌入在服务器中的专用控制器。它通常以片上系统(SoC)的形式出现,具有自己的CPU,内存和存储以及大量的IO。BMC连接到许多传感器以读取环境条件并通过风扇控制温度。它还提供了其他系统管理功能,包括远程电源控制,Serial Over LAN,服务器主机CPU和内存的监视及错误记录。

直到目前,在软件方面,完整的BMC软件都是闭源的。BMC软件通常由硬件制造商在硬件开发阶段开发。由于BMC软件的闭源特性,现有硬件所开发的任何软件都无法在下一代中重复使用。BMC软件的开发周期进度直接影响到新的硬件开发。当硬件开发结束后,BMC软件开发也停止了。更进一步的错误修复或新功能则必须等待硬件制造商。

当我们开发Facebook的ToR交换机“Wedge”时,一开始是按照惯例, 由我们的合作伙伴负责开发BMC软件。然而,在项目的头几个月,BMC软件出现了许多需求,给BMC软件开发过程带来了额外的复杂性,协调性和项目延迟。

为了应对这些挑战,在Facebook举办的一个编程马拉松活动中,有四位工程师努力创建了自己的BMC软件。在24小时内,我们能够建立一个最小的BMC软件映像,其中包括一个SSH服务器,能够改变风扇的速度,启动主机CPU,闪烁一些LED。虽然这远远未达到一个生产的镜像水准,但是它给了我们一个强大的信心,我们最终可以为自己的“Wedge”开发处BMC软件。

八个月后,我们已经将代号为“OpenBMC”的解决方案与Wedge一起投入生产。今天,我们与开源社区共享OpenBMC,希望我们能够基于这个开放的软件框架进行协作,进行下一代系统管理。

底层的OpenBMC

BMC硬件本身就是一个计算机系统。与现代计算机系统相比,BMC的硬件资源非常有限。在BMC中,CPU速度较慢,闪存少于32 MB,存储空间少于256 MB都是很常见的。正因为如此,OpenBMC被设计成一个完整的Linux发行版,可灵活定制以支持不同的BMC SoC或主板。

OpenBMC映像包括引导加载程序(u-boot),Linux内核,开源软件包和特定于板卡的软件包:

  • u-boot和Linux内核都包含用于BMC SoC的各种硬件驱动程序,包括i2c驱动程序,USB驱动程序,PWM驱动程序和SPI驱动程序。
  • 开源软件包包括常用的应用程序,例如BusyBox,i2c-tools,lm-sensors,OpenSSH和Python。
  • 特定于电路板的软件包包括用于特定电路板的初始化脚本和工具。例如,它包含一个工具来转储来自EEPROM的告警信息和一个风扇控制器守护进程,以根据环境读数控制风扇速度。

下图展示了在“Wedge”内BMC上运行的“OpenBMC”软件包。
bmc-software-packages

OpenBMC中的所有软件包都是使用源码通过Yocto构建的。通过Yocto,软件包被组合在一起成为recipes,然后不同的recipes被组合成不同图层。

在OpenBMC中,有三组图层:

  1. 通用层,包含可用于不同电路板和BMC SoC的软件包。
  2. SoC层,包含特定于BMC SoC的软件包,例如由Aspeed贡献的用于AST2300/ AST2400 SoC的代码,以及来自Facebook的增强功能。u-boot和kernel都在SoC层中定义。
  3. 电路板层,包括不同电路板的软件包。具体来说,例如我们正在发布的特定于Wedge的硬件配置,初始化脚本和工具。


    bmc-source-dir

为特定的电路板构建定制的OpenBMC映像需要将公共层,用于电路板中使用的BMC SoC的SoC层以及电路板特定的电路板层相结合。

我们通过GitHub 发布了OpenBMC库。

下一阶段

OpenBMC目前处于早期阶段,但我们旨在建立一个强大的OpenBMC生态系统,所以我们已经提前并分享了这个早期的工作代码。

我们最近重构了代码以更好地支持不同的SoC和电路板。有一些为“Wedge”开发的应用程序可以用于其他板子。为此,我们需要在应用程序和硬件之间添加一个硬件抽象。

随着Wedge发布于OCP,应用程序开发人员可以使用开放硬件作为OpenBMC的开发平台。我们可以在OpenBMC的所有不同层面上做出贡献:

  1. 系统管理应用程序的创新可以发布于通用层。例如,一个可以改变系统管理方向的新应用程序可能会被贡献给公用层,从而使所有由OpenBMC驱动的电路板受益。
  2. BMC SoC供应商可以通过SoC层发布自己的SoC支持,这有助于采用BMC SoC。
  3. 通过电路板层,板卡制造商可以与社区合作,不断完善板卡上运行的BMC软件。

Wedge是第一个由OpenBMC驱动的硬件,6-pack将是第二个。我们很高兴与社区分享OpenBMC并致力于下一代系统管理。

许多人为这个项目的工作做出了贡献。Credit should go to: Kevin Lahey, Sai Dasari, Aaron Miller, Adam Simpkins, and Tian Fang.

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,464评论 25 707
  • 在这里,每天早晨6点半他的手机闹铃准时响起,他马上起床为我打豆浆。过一会儿,窗外的起床号也响起,新的一天开始! 喜...
    紫藤姑娘阅读 164评论 1 0
  • 我天生性格孤僻,与大多数人八字不合,虽然没有严重到病态,但是女票还是时常提醒我,别太不合群,多交点朋友,对你以后也...
    peter_yuan_93阅读 266评论 0 4
  • 能看懂的可以来我们这里生活了哈! 场景一 一位外地学生来永州市读书,第一次:搭公交,他就感觉到了国外/或者说原始...
    梁木纯阅读 180评论 7 1
  • 一路劳累人憔悴,天涯海角追寻你; 一路眼泪过不去,南北东西呼喊她。 郑源有歌,“算了吧,忘了吧,让过去成为过...
    尘渺凡阅读 226评论 0 1