OpenBMC
OpenBMC是一种用于设备(如服务器、机架顶部交换机或RAID应用程序)中的管理控制器的Linux发行版。它使用Yocto、OpenEmbedded、systemd和D-Bus,技术和工具,以便您可以轻松定制自己的平台。
设置OpenBMC工程
1)前提条件
请参考Yocto项目的最新文档。
Ubuntu
sudo apt install git python3-distutils gcc g++ make file wget \
gawk diffstat bzip2 cpio chrpath zstd lz4 bzip2
Fedora
sudo dnf install git python3 gcc g++ gawk which bzip2 chrpath cpio \
hostname file diffutils diffstat lz4 wget zstd rpcgen patch
2) 下载源码
git clone https://github.com/openbmc/openbmc
cd openbmc
3) 构建特定的BMC卡
任何构建都需要根据目标硬件设置相应的环境。在本仓库的根目录下有一个特殊脚本,可用于按需配置环境。该脚本名为setup,需要输入目标硬件的名称作为参数。
该脚本需要在OpenBMC仓库克隆的顶级目录中运行(通过source命令执行),如果运行时不带任何参数,则会显示支持的硬件目标列表,以下是一个示例:
$ . setup <machine> [build_dir]
Target machine must be specified. Use one of:
...
更完整的机器支持列表可以在 meta-phosphor/docs 下找到。
一旦您知道了目标(例如 romulus),请按以下方式运行(通过source命令执行)设置脚本:
. setup romulus
4) 编译
bitbake obmc-phosphor-image
更多的细节可以查看文档。
OurBMC 开发
OpenBMC 社区维护了一系列教程,新用户可以通过这些教程快速了解 OpenBMC 开发。
构建验证及测试
由OpenBMC GitHub社区成员提交的Commits会通过社区的Jenkins服务器进行编译和测试。所有Commits会经过两级测试。在仓库级别,会运行makefile中的make check指令。在系统级别,Commits会被构建成一个固件镜像,并使用arm-softmmu QEMU模型针对一系列持续集成(CI)测试进行运行。
非成员提交的Commits不会自动进行CI测试。审查者在对提交进行目视检查后,可以手动执行CI测试。
社区会针对QEMU模型以及支持的系统进行自动化测试。OpenBMC项目使用Robot Framework进行所有自动化测试。社区的完整测试仓库可以在这里找到。
提交补丁
社区期待能够支持更多的硬件和软件包。提交Commits时请遵循贡献指南。提交Commits时候尽量包含测试用例。
缺陷报告
issues在GitHub上管理。建议您在提出新问题之前先搜索一下已有问题。
问题
首先,请在网上进行搜索。很有可能你的问题已经被问过了。
对于一般问题,请在Stack Overflow上使用openbmc标签。在发布任何代码之前,请查阅Stack Overflow上的关于许可的讨论。
对于技术讨论,请参阅下面的Discord和邮件列表信息以获取联系方式。请不要通过提交问题来询问。使用邮件列表或Discord会得到更快的回复。
OpenBMC能在Acme Server Corp. XYZ5000主板上运行吗?
这是一个常见问题,尤其是关于流行的COTS(商用现货)供应商,如Supermicro和ASRock的主板。你可以通过在OpenBMC源码树的根目录下运行.setup(不带其他参数)来查看支持的主板列表。OpenBMC支持的大多数平台都是由运营大型数据中心的公司所使用的专用服务器,但也有一些较为通用的COTS服务器在不同程度上得到支持。
如果你的主板没有在.setup的输出中列出,那么它目前是不被支持的。将OpenBMC移植到新的平台是一项不小的任务,理想情况下应该在制造商提供的原理图和其他文档的帮助下进行(虽然通过逆向工程在没有文档的情况下进行移植努力并非完全不可行,但难度要大得多,而且可能涉及更大的硬件损坏风险)。
然而,即使你的主板在.setup的输出中列出,也有两个重要的注意事项需要牢记。首先,并非所有移植都同样成熟——有些平台的支持程度比其他平台更好,而一些“支持”的主板上的功能可能相当有限。其次,对主板的支持并不等同于对完整系统的支持——特别是风扇控制,它不仅依赖于主板,还依赖于连接到主板的风扇以及主板和风扇所在的机箱,而这两者在使用相同主板型号的系统之间可能会有很大的差异。因此,虽然你可能能够在你的系统上编译并安装OpenBMC构建,并获得一些基本功能,但很可能会遇到一些不完美之处(例如,你的冷却风扇可能会持续以全速运转)。
具体可查看支持的机型。
OpenBMC功能
功能列表
- 主机管理:电源、散热、LED指示灯、清单(或资产)管理、事件、看门狗。
- 完全符合IPMI 2.0标准,包括DCMI
- 支持多个BMC/BIOS镜像的代码更新
- 基于Web的用户界面
- REST接口
- 基于D-Bus的接口
- 基于SSH的串行控制台重定向(SOL)
- 远程KVM(键盘、视频、鼠标)
- 硬件模拟
- 自动化测试
- 用户管理
- 虚拟介质
开发中功能
- OpenCompute Redfish合规性
- 验证启动(或安全启动验证)
已请求但需要帮助的功能
- OpenBMC性能监控
了解更多
打开文档仓库,深入了解OpenBMC。
技术委员会
技术指导委员会(TSC)负责指导该项目。成员包括:
- Benjamin Fair, Google
- Patrick Williams, Meta
- Roxanne Clarke, IBM
- Sagar Dharia, Microsoft
- Samer El-Haj-Mahmoud, Arm
- Terry Duncan, Intel