当前位置: 首页 > news >正文

飞腾E2000S平台实战:从零构建OpenBMC镜像到烧录上电的全过程记录

飞腾E2000S平台实战:从零构建OpenBMC镜像到烧录上电的全过程记录

在国产化硬件开发领域,飞腾E2000S evb-pe2201开发板因其出色的性能和开放的生态,正成为越来越多工程师进行BMC开发的理想选择。OpenBMC作为开源的基础管理控制器固件,为服务器硬件提供了灵活的管理方案。本文将手把手带你完成从环境搭建到镜像烧录的全流程,特别针对E2000S平台的特性优化和常见问题提供解决方案。

1. 开发环境准备与依赖项配置

工欲善其事,必先利其器。在开始构建之前,我们需要确保开发环境完全就绪。推荐使用Ubuntu 20.04 LTS作为基础系统,这个版本在Yocto项目兼容性方面表现最为稳定。

1.1 系统基础依赖安装

执行以下命令安装必备工具链:

sudo apt update sudo apt install -y gawk git git-core diffstat unzip texinfo \ gcc-multilib build-essential chrpath socat cpio python3 \ python3-pip python3-pexpect xz-utils debianutils iputils-ping \ python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev \ pylint3 xterm python3-subunit mesa-common-dev zstd liblz4-tool

注意:如果使用代理网络环境,需要提前配置好git和apt的代理设置,否则后续软件包下载可能失败。

1.2 特别依赖项处理

针对飞腾E2000S平台,还需要额外安装一些架构相关的工具:

sudo apt install -y gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu

验证交叉编译工具链是否安装成功:

aarch64-linux-gnu-gcc --version

预期应输出类似aarch64-linux-gnu-gcc (Ubuntu 9.4.0-1ubuntu1~20.04) 9.4.0的版本信息。

2. 源码获取与初始化配置

2.1 仓库克隆与子模块初始化

首先创建工作目录并克隆官方仓库:

mkdir -p ~/openbmc && cd ~/openbmc repo init -u https://github.com/openbmc/openbmc -b master -m ft2000/evb-pe2201.xml repo sync

常见问题处理:

  • 若遇到repo: command not found,需先安装repo工具:
    mkdir -p ~/bin curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo export PATH=~/bin:$PATH
  • 同步过程中若出现网络错误,可尝试设置git参数:
    git config --global http.postBuffer 1048576000 git config --global https.postBuffer 1048576000

2.2 环境变量设置

初始化构建环境:

cd ~/openbmc . setup evb-pe2201

验证环境变量是否生效:

echo $MACHINE

正确应输出evb-pe2201

3. 构建过程详解与优化

3.1 首次构建准备

首次构建前建议执行以下优化操作:

  1. 下载缓存配置: 在build/conf/local.conf中添加:

    SSTATE_MIRRORS = "file://.* https://sstate.yoctoproject.org/all/PATH;downloadfilename=PATH"
  2. 并行编译设置: 根据CPU核心数调整:

    echo 'BB_NUMBER_THREADS = "8"' >> build/conf/local.conf echo 'PARALLEL_MAKE = "-j 8"' >> build/conf/local.conf

3.2 核心构建命令

执行完整构建:

bitbake obmc-phosphor-image

构建过程可分为几个关键阶段:

阶段耗时预估主要任务
fetch30-60分钟下载所有源码和依赖
configure10-20分钟配置各软件包
compile1-2小时实际编译过程
package20-30分钟生成最终镜像

实用技巧:

  • 可使用bitbake -c fetchall obmc-phosphor-image预先下载所有资源
  • 中断后恢复构建使用bitbake obmc-phosphor-image -c continue

3.3 常见错误排查

问题1:网络超时导致下载失败解决方案:

# 重试单个失败的任务 bitbake -c compile -f <失败的任务名>

问题2:依赖冲突典型错误示例:

ERROR: Nothing PROVIDES 'virtual/kernel'

解决方法:

bitbake -g obmc-phosphor-image cat pn-depends.dot | grep -v -e '-native' | grep -v digraph | grep -v -e '-image' | awk '{print $1}' | sort | uniq

4. 镜像烧录与上电测试

4.1 生成镜像文件

构建成功后,镜像位于:

tmp/deploy/images/evb-pe2201/obmc-phosphor-image-evb-pe2201.mtd

验证镜像完整性:

ls -lh tmp/deploy/images/evb-pe2201/ file tmp/deploy/images/evb-pe2201/obmc-phosphor-image-evb-pe2201.mtd

4.2 烧录工具准备

推荐使用flashrom进行烧录:

sudo apt install -y flashrom

连接开发板与烧录器后,检测Flash芯片:

sudo flashrom -p ft2232_spi:type=2232H -V

4.3 实际烧录步骤

  1. 擦除Flash:

    sudo flashrom -p ft2232_spi:type=2232H -E
  2. 写入镜像:

    sudo flashrom -p ft2232_spi:type=2232H -w \ tmp/deploy/images/evb-pe2201/obmc-phosphor-image-evb-pe2201.mtd
  3. 验证写入:

    sudo flashrom -p ft2232_spi:type=2232H -v \ tmp/deploy/images/evb-pe2201/obmc-phosphor-image-evb-pe2201.mtd

4.4 上电与功能测试

成功烧录后,通过串口连接开发板:

sudo picocom -b 115200 /dev/ttyUSB0

预期启动日志应包含:

[ OK ] Started OpenBMC Phosphor State Manager [ OK ] Reached target Multi-User System.

基础功能测试命令:

ipmitool mc info ipmitool sensor list

5. 开发进阶:使用devtool进行定制开发

5.1 创建开发工作区

以修改phosphor-host-ipmi为例:

devtool modify phosphor-host-ipmi cd workspace/sources/phosphor-host-ipmi-*

5.2 典型开发流程

  1. 修改代码后测试:

    devtool build phosphor-host-ipmi devtool deploy-target phosphor-host-ipmi root@bmc-ip
  2. 生成补丁:

    devtool finish phosphor-host-ipmi meta-<layer>
  3. 重新构建完整镜像:

    bitbake obmc-phosphor-image

5.3 调试技巧

实时日志监控

journalctl -f -u phosphor-ipmi-host

GDB远程调试

devtool build -c install -f phosphor-host-ipmi gdbserver :1234 /usr/bin/phosphor-ipmi-host

在开发机上连接:

gdb-multiarch target remote bmc-ip:1234
http://www.jsqmd.com/news/936457/

相关文章:

  • 三步解密微信聊天记录:WechatDecrypt终极指南
  • 行业乱象排查,2026重庆包包回收排名划定避坑红线 - 奢侈品回收测评
  • 分期乐九州旅游通卡回收价格表更新,83折极速到账实况 - 猎卡网
  • 佛罗里达州首诉 OpenAI:ChatGPT 被指多次协助犯罪,OpenAI 坚称无责
  • 基于树莓派与HX711传感器的智能唤醒床:物联网硬件实践
  • 用树莓派改造传统音箱为蓝牙音箱:低成本DIY智能音频方案
  • 2026同样克重黄金,无锡为何价差几百?靠谱回收榜单出炉 - 合扬奢侈品交易中心
  • 如何快速配置开源游戏自动化工具:鸣潮全功能智能操作指南
  • 惠普OMEN游戏本性能控制完整指南:OmenSuperHub深度解析与实战技巧
  • 基于ESP32的物联网智能门禁系统:RFID、红外测温与自动消毒集成方案
  • 从Pikachu靶场看SQL注入:除了‘万能密码’,黑客还能怎么玩?
  • 2026年最新靠谱厂区余热能源回收公司排行榜,技术资质与工程实效三维度评估 - 品牌2026
  • 如何快速实现文档下载自动化:开源浏览器脚本的终极解决方案
  • 2026 南京 GEO 优化公司深度测评:技术落地与 AI 引用实效对比 - 小艾信息发布
  • 2026年西安商业空间设计师怎么选?工装全案、酒店民宿、连锁门店深度评测指南 - 企业名录优选推荐
  • 基于SLG88104的微功耗锁相放大器设计:从原理到温度测量实践
  • Cursor Free VIP终极指南:5步免费解锁Cursor Pro永久使用权限
  • Cocos2d-x 4.0塔防游戏实战:从加载界面到地图关卡,手把手教你避开新手常踩的5个坑
  • 太阳能热水工程哪家可靠?2026年5家厂商真实对比
  • 如何快速解决Windows无法查看iPhone照片的难题:HEIF Utility完整指南
  • 2026 年 4 月南昌高好评大排档专业测评:三家优质门店权威梳理 - 讲清楚了
  • 掌握构建高效AI智能体的秘诀:简单模式打造强大系统(收藏版)
  • 江苏人力资源外包公司排名推荐:常亮智禾、英格玛、上海外服、中智等品牌怎么选 - 博客万
  • 从RNN到Mamba:深入浅出图解‘选择性状态空间’如何解决长文本建模难题
  • 多网盘直链解析工具的技术实现与应用分析
  • 无锡考消防设施操作员常见问题解答(2026最新版) - 资讯速览
  • 基于Arduino的自行车转向指示系统:从I2C通信到嵌入式状态机实践
  • 飞书文档批量导出终极指南:告别手动迁移的烦恼
  • 从手机到汽车:聊聊那些年我们追过的‘高像素’,在ADAS感知上为啥不灵了?
  • 投票小程序免费制作投票活动 - 微信投票小程序