大家好,欢迎来到IT知识分享网。
1. 简介
OpenBMC 项目是一个 Linux 基金会协作开源项目,它生成底板管理控制器(BMC) 固件堆栈的开源实现。OpenBMC 是 BMC 的 Linux 发行版,旨在跨异构系统工作,包括企业、高性能计算(HPC)、电信和云规模数据中心。
2014 年,四名 Facebook 程序员在 Facebook 黑客马拉松活动中创建了一个名为 OpenBMC 的开源 BMC 固件堆栈原型。2015 年,IBM 与Rackspace 合作开发了开源 BMC 固件堆栈(也称为 OpenBMC)。这些项目仅在名称和概念上相似。2018 年 3 月,OpenBMC 成为 Linux 基金会项目并融合在 IBM 堆栈上。OpenBMC 项目的创始组织包括 Microsoft、Intel、IBM、Google 和 Facebook。成立了一个由五家创始公司代表组成的技术指导委员会来指导该项目。IBM 的 Brad Bishop 当选为技术指导委员会主席。2019 年 4 月,Arm Holdings 作为第六位 OpenBMC 技术指导委员会成员加入。
2. 特点
OpenBMC 使用 Yocto 项目作为底层构建和分发生成框架。固件本身基于 U-Boot。OpenBMC 使用 D-Bus 作为进程间通信(IPC)。OpenBMC 包含一个用于与固件堆栈交互的 Web 应用程序。OpenBMC 添加了 Redfish 对硬件管理的支持。
3. 示例平台构建
3.1. 安装依赖
安装相关依赖
sudo apt install git python3-distutils gcc g++ make file wget \ gawk diffstat bzip2 cpio chrpath zstd lz4 bzip2
3.2. 下载源码
下载 OpenBMC 源码包。
git clone https://github.com/openbmc/openbmc cd openbmc
🌟[注]:通过官方下载的源码包编译需要数小时之久,笔者下文中给出编译过的源码包,即已下载好了部分依赖包的工程代码,具体获取及操作见本文第 4 小节。
3.3. 构建
设置目标硬件平台
$ . setup <machine> [build_dir] Target machine must be specified. Use one of: bletchley mori s8036 dl360poc mtjade swift e3c246d4i mtmitchell tatlin-archive-x86 ethanolx nicole tiogapass evb-ast2500 olympus-nuvoton transformers evb-ast2600 on5263m5 vegman-n110 evb-npcm750 p10bmc vegman-rx20 f0b palmetto vegman-sx20 fp5280g2 qcom-dc-scm-v1 witherspoon g220a quanta-q71l witherspoon-tacoma gbs romed8hm3 x11spi greatlakes romulus yosemitev2 gsj s2600wf zaius kudo s6q lannister s7106
[注]:如上为 OpenBMC 默认所支持的硬件平台。
这选择 romulus 平台作为示例:(romulus 模拟的是 AST2500 平台)
. setup romulus
3.4. 编译
编译生成镜像
bitbake obmc-phosphor-image
[注]:该过程最好能挂梯子后再构建,否则可能会无法下载到一些软件包。并且该过程稍微有点长,耐心等待。
第一次构建的话,也许需要等待好几个小时(而往往不会一次构建成功,因为网络原因,你懂的)。但当第一次构建完成后在之后的构建过程将会相对容易,因为会从已经下载好的工程中获取。
这里笔者虽然编译过程中有一些警告但仍然还是可以运行起来系统,这是笔者编译完成的结尾部分。
编译完成后的目标目录在 build 下所对应的平台目录,其目录结构如下图。
其所生成的系统镜像以及其它平台相关文件会保存在上述目录的 tmp/deploy/images/romulus 目录中。
其中包含如下文件,我们下面将要使用到的文件就是所生成的系统镜像文件 obmc-phosphor-image-romulus.static.mtd。
3.5. 启动系统
登录到 BMC 系统,启动 BMC 系统,使用映射本地端口方式启动。
sudo qemu-system-arm -m 256 -M romulus-bmc -nographic -drive file=./tmp/deploy/images/romulus/obmc-phosphor-image-romulus.static.mtd,format=raw,if=mtd -net nic -net user,hostfwd=:127.0.0.1:2222-:22,hostfwd=:127.0.0.1:2443-:443,hostname=qemu
[注]:一般执行完上面的 bitbake 构建命令后,会自动进入所构建目标平台的目录中,此处的相对路径是在该目录中执行。
-m指定了内存的大小;-M指定机器架构;-nographic表示无图像输出,串口会输出的控制台;-driver file=xx指定了启动的系统,这里就是我们的openbmc固件系统;-net设定网络参数;
如果说上一步 bitbake obmc-phosphor-image 并没有通过的话,那么也可以下载官方编译好的镜像。
wget https://jenkins.openbmc.org/job/latest-master/label=docker-builder,target=romulus/lastSuccessfulBuild/artifact/openbmc/build/tmp/deploy/images/romulus/obmc-phosphor-image-romulus.static.mtd
然后执行如下命令,启动 BMC 系统。
sudo qemu-system-arm -m 256 -M romulus-bmc -nographic -drive file=./obmc-phosphor-image-romulus.static.mtd,format=raw,if=mtd -net nic -net user,hostfwd=:127.0.0.1:2222-:22,hostfwd=:127.0.0.1:2443-:443,hostname=qemu
BMC 的登录用户为:root
密码:0penBmc
[注]:此处的是数字 0,并非字母 o。
3.6. 访问 WebUI
若是按照本文上述中启动的 BMC 系统,那么在启动成功后便可以在当前 Linux 中使用浏览器访问 OpenBMC 的控制页面,在浏览器导航栏中输入:
https://localhost:2443/
[注]:这里的用户名和密码同样分别是 root,0penBmc。
#完
到此,恭喜你已经成功构建出示例平台的 OpenBMC。
🌟4. 使用笔者提供的 OpenBMC
笔者提供的 OpenBMC 链接:https://github.com/ImagineMiracle-wxn/OpenBMC/releases/tag/Demo-Romulus
[注]:一定要下载全哦,一共有 13 个文件。
下载所有的 openbmc-im.tar.gz.,到自己的系统中,这些是拆分后的压缩包文件,需要合并在一起才可以解压。
$ cat openbmc-im.tar.gz.* > openbmc-im.tar.gz $ tar -zxvf openbmc-im.tar.gz $ cd openbmc-im/build/romulus/conf $ vim bblayers.conf
首先需要将 openbmc-im/build/romulus/conf/bblayers.conf 文件中的项目所在路径(下图中红框部分)修改为当前项目所在的绝对路径。(根据每个人所放的位置不同修改,否则编译将找不到具体文件)
[注]:事实上还需要删除 openbmc-im/build/romulus/tmp 目录,这一步笔者已经替大家完成了,因此不必关心。
# 回到 openbmc-im 根目录 $ cd ../../../
修改完后请跳回本文第 3 小节继续完成下述步骤。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/118586.html









