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

OpenBMC + QEMU 仿真环境搭建

OpenBMC QEMU 仿真环境搭建手册

适用系统:Ubuntu 20.04 LTS / Ubuntu 22.04 LTS(推荐,兼容性最佳)

搭建目标:在 x86 架构电脑上,通过 OpenBMC 定制版 QEMU 仿真 BMC 硬件,实现 OpenBMC 完整功能(SSH、IPMI、Web UI、Redfish、传感器仿真等),用于开发、测试及学习。

推荐仿真机型:romulus-bmc(基于 Aspeed AST2500 芯片,兼容性最好,报错率最低)

一、环境概述

1.1 核心组件说明

  • OpenBMC:开源基板管理控制器(BMC)固件,提供标准化的硬件管理功能,支持 IPMI、Redfish 等协议。

  • QEMU(OpenBMC 定制版):专门适配 Aspeed AST2500/AST2600 等 BMC 芯片的模拟器,区别于上游 QEMU,可完整仿真 BMC 硬件逻辑。

1.2 仿真功能清单

  • 串口控制台(直接登录 BMC)

  • SSH 远程登录(默认端口 22)

  • Web UI / Redfish 管理(默认端口 443)

  • IPMI 远程管理(默认端口 623,支持 RMCP+ 加密)

  • 传感器、FRU 信息、电源状态仿真

二、系统依赖安装(必做步骤)

执行以下命令,一键安装所有必备依赖(含之前报错缺失的工具、locale 相关依赖),避免后续编译/启动报错。

sudo apt update && sudo apt install -y \
git wget curl qemu-kvm bridge-utils uml-utilities libslirp-dev \
locales \
bunzip2 bzip2 chrpath cpio cpp diffstat g++ gcc make pzstd rpcgen unzstd zstd

三、修复 locale 问题

OpenBMC 编译/运行依赖 en_US.UTF-8 字符集,若缺失会报“Please make sure locale 'en_US.UTF-8' is available”错误,按以下步骤修复:

# 生成 en_US.UTF-8 字符集
sudo locale-gen en_US.UTF-8
# 设置为系统默认 locale
sudo update-locale LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8
# 临时生效(避免重启系统)
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

验证:执行 locale 命令,输出中包含 “LANG=en_US.UTF-8” 和 “LC_ALL=en_US.UTF-8” 即为生效。

四、快速搭建(推荐,稳定高效)

此方式无需源码编译,直接下载 OpenBMC 官方预编译的 QEMU 和镜像,适合新手和快速测试。

4.1 创建工作目录

创建独立工作目录,避免文件混乱,命令如下:

mkdir -p ~/openbmc-sim && cd ~/openbmc-sim

4.2 下载 OpenBMC 定制版 QEMU

使用官方 Jenkins 构建的预编译 QEMU(确保支持 romulus-bmc 机型),命令如下:

# 下载 qemu-system-arm(x86 架构可运行)
wget https://jenkins.openbmc.org/job/latest-qemu-x86/lastSuccessfulBuild/artifact/qemu/build/qemu-system-arm
# 赋予执行权限
chmod +x qemu-system-arm

验证:执行 ./qemu-system-arm -version,无报错即下载成功;执行 ./qemu-system-arm -M help | grep romulus,能看到 “romulus-bmc” 即为可用。

4.3 下载 OpenBMC 仿真镜像

下载 romulus 机型的稳定版镜像(MTD 格式,适配 QEMU 启动),命令如下:

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

说明:镜像大小约 200MB,下载速度取决于网络,若下载失败,可重复执行上述命令。

五、启动 OpenBMC 仿真(核心步骤)

在工作目录(~/openbmc-sim)下,执行以下核心命令启动仿真,命令可直接复制,无需修改:

./qemu-system-arm \-m 512 \-M romulus-bmc \-nographic \-drive file=obmc-phosphor-image-romulus.static.mtd,format=raw,if=mtd \-net nic \-net user,hostfwd=tcp::2222-:22,hostfwd=tcp::2443-:443,hostfwd=udp::2623-:623

5.1 启动参数说明(关键,避免修改错误)

  • -m 512:给仿真 BMC 分配 512MB 内存,足够稳定运行,无需增加。

  • -M romulus-bmc:指定仿真机型,固定为 romulus-bmc(稳定首选)。

  • -nographic:无图形界面,直接在终端显示串口控制台,避免图形化报错。

  • -drive ...:指定镜像文件路径和格式,确保镜像文件名与下载的一致。

  • -net user,...:端口映射,将主机端口映射到仿真 BMC 端口,后续登录需用到。

5.2 启动成功标志

启动后等待 1-2 分钟,终端出现以下提示,即为启动成功:

romulus login:

六、端口映射说明(必看)

启动命令中已配置端口映射,主机通过以下端口访问仿真 BMC,无需修改防火墙(本地访问):

主机端口 仿真端口 功能描述 访问方式
2222 22 SSH远程登录 ssh root@localhost -p 2222
2443 443 Web UI / Redfish 管理 浏览器访问 https://localhost:2443
2623 623 IPMI 远程管理 ipmitool 命令访问

七、登录与功能验证(稳定验证步骤)

仿真启动成功后,通过以下4种方式验证功能,确保环境稳定可用。

7.1 串口控制台登录(最直接)

启动成功后,终端直接出现登录提示,输入以下默认账号密码:

username: root
password: 0penBmc

登录成功后,执行 hostname,输出 “romulus” 即为正常。

7.2 SSH 登录(推荐,方便操作)

新开一个终端,执行以下命令登录,密码同上:

ssh root@localhost -p 2222

登录成功后,可执行 ipmitool power status,查看电源状态(默认开机)。

7.3 IPMI 功能验证

新开一个终端,先在主机安装 ipmitool 工具,再执行验证命令:

# 安装 ipmitool
sudo apt install -y ipmitool
# 查看电源状态
ipmitool -I lanplus -H localhost -p 2623 -U root -P 0penBmc power status
# 查看传感器列表
ipmitool -I lanplus -H localhost -p 2623 -U root -P 0penBmc sensor list

无报错、能正常输出电源状态和传感器信息,即为 IPMI 功能正常。

7.4 Web UI 访问

打开浏览器,输入地址:https://localhost:2443

操作步骤:

  1. 浏览器提示“不安全连接”,点击“高级”→“继续访问”(自签名证书正常现象)。

  2. 输入默认账号密码(root / 0penBmc),登录 Web 管理界面。

  3. 能正常显示 BMC 状态、传感器信息,即为 Web 功能正常。

八、退出 QEMU 仿真

在串口控制台(启动仿真的终端)中,执行以下操作退出:

先按 Ctrl + a (按住 Ctrl 不放,按一下 a)
再按 x (松开 Ctrl,按一下 x)

终端回到命令行,即为退出成功。

http://www.jsqmd.com/news/612844/

相关文章:

  • MacBook本地部署OpenClaw:对接Qwen3-14B镜像实现24/7资料收集
  • Kiro IDE + AIClient-2-API 实现Openclaw或者Claude code使用Claude Opus 4.6模型
  • 山东大学项目实训-大数据租房推荐智能体(一)
  • 零基础玩转Fun-ASR:钉钉通义语音识别WebUI保姆级入门指南
  • 【技术解析】Ryujinx模拟器:在PC上完美运行Switch游戏的完整指南
  • 告别本地配置!Core72在线IDE:5分钟打造云端开发环境终极指南
  • Java 25虚拟线程压测全对比:Spring WebFlux vs Virtual Threads vs Project Loom原生方案,谁才是百万QPS终极解?
  • BiliDownloader:B站视频高效下载终极指南
  • SolidWorks软件授权费用结构深度剖析与系统化降本增效方案
  • D3KeyHelper:解放双手的暗黑破坏神3智能辅助工具
  • D3KeyHelper完全指南:从入门到精通的暗黑破坏神3自动化战斗与资源管理
  • “INMS: Memory Sharing for Large Language Model based Agents“ 论文笔记梢
  • 营销自动化数据驱动 - 多源数据 OLAP 架构演进趟
  • 突破ControlNet图像质量瓶颈:3大核心参数优化指南
  • 2026口碑最佳广东祛痘去闭口产品OEM加工/敏感肌修护产品OEM加工横评:十款广东佛山企业实力单品精准测评 - 十大品牌榜
  • 7步实现电脑风扇智能控制:从安装到多场景优化全指南
  • 图片文字提取效率低?Umi-OCR离线工具让文字识别更简单
  • Nunchaku-flux-1-dev从零开始:Ubuntu+Supervisor+Gradio完整部署步骤
  • Ubuntu20.04 软件和更新故障排查与优化指南
  • 城市级低空空域动态管控与“电子围栏”物理安全防御体系:构建未来城市的安全基石(WORD)
  • KKS-HF Patch:为《Koikatsu Sunshine》打造的全能游戏增强解决方案
  • 盘点天津靠谱的纯蒸汽发生器销售商,前十都有谁 - 工业品牌热点
  • 2026年研究生写文献综述的痛苦终结者:AI工具完整攻略,从检索到成稿一站式解决
  • Python每日一练:字符串反转详解与实战
  • 练习4
  • Qwen3-ForcedAligner-0.6B入门教程:双模型架构,本地智能字幕生成工具
  • TP8556N外置 MOS 平均电流型 LED 降压恒流驱动器
  • ArkUI Stage模型企业级实用教程
  • 批量修改文件属性时间使用说明:固定时间、随机时间、时间偏移三种模式怎么选
  • 鸿蒙实战手记-离线语音识别:从零构建一个会议速记助手