问题描述
使用qemu仿真时,一直打印如下信息,也无法在web界面看见pcie卡加载,麻烦指导解决一下
2023-08-15 09:20:53.138962 maca ERROR: init.lua(194): [power_mgmt]StartupCheck failed, error: initialization is not complete while checking the startup status, status: Starting, check count: 54
2023-08-15 09:20:59.583634 maca ERROR: init.lua(194): [sensor]StartupCheck failed, error: initialization is not complete while checking the startup status, status: Starting, check count: 57
2023-08-15 09:21:01.962101 maca ERROR: init.lua(194): [ipmi_core]StartupCheck failed, error: initialization is not complete while checking the startup status, status: Starting, check count: 60
2023-08-15 09:21:09.176806 maca ERROR: init.lua(194): [power_mgmt]StartupCheck failed, error: initialization is not complete while checking the startup status, status: Starting, check count: 55
2023-08-15 09:20:50.349328 maca ERROR: init.lua(194): [sensor]StartupCheck failed, error: initialization is not complete while checking the startup status, status: Starting, check count: 58
2023-08-15 09:20:53.333024 maca ERROR: init.lua(194): [ipmi_core]StartupCheck failed, error: initialization is not complete while checking the startup status, status: Starting, check count: 61
2023-08-15 09:20:59.924993 maca ERROR: init.lua(194): [power_mgmt]StartupCheck failed, error: initialization is not complete while checking the startup status, status: Starting, check count: 56
2023-08-15 09:21:06.389387 maca ERROR: init.lua(194): [sensor]StartupCheck failed, error: initialization is not complete while checking the startup status, status: Starting, check count: 59
2023-08-15 09:20:47.858342 maca ERROR: init.lua(194): [ipmi_core]StartupCheck failed, error: initialization is not complete while checking the startup status, status: Starting, check count: 62
2023-08-15 09:20:54.852683 maca ERROR: init.lua(194): [power_mgmt]StartupCheck failed, error: initialization is not complete while checking the startup status, status: Starting, check count: 57
2023-08-15 09:21:01.096148 maca ERROR: init.lua(194): [sensor]StartupCheck failed, error: initialization is not complete while checking the startup status, status: Starting, check count: 60
环境信息
答案内容由AI生成,仅供参考:
总结:解决流程清单
| 步骤 |
操作 |
目标 |
| 1 |
检查 bmc_soc 是否适配QEMU |
解决初始化卡死问题 |
| 2 |
确认 pcie_card.json 与 .sr 文件存在 |
确保PCIe卡仿真数据完整 |
| 3 |
检查 pcie_device 服务是否正常启动 |
保证PCIe设备管理服务运行 |
| 4 |
验证Redfish API能否访问卡信息:
GET /redfish/v1/Chassis/1/PCIeDevices/PCIeCard4 |
确认后端识别成功 |
| 5 |
检查Web前端服务(nginx/webui)状态 |
解决Web界面不显示问题 |
| 6 |
必要时重装环境并更新SDK版本 |
彻底排除配置污染 |
点击此处查看详细分析解答
QEMU仿真中持续打印maca ERROR及PCIe卡未显示问题分析与解决方案
根据您提供的日志信息,QEMU仿真环境中出现持续的maca ERROR: init.lua(194)错误,且Web界面无法看到PCIe卡加载。以下将结合系统上下文信息进行综合分析并提供解决方案。
问题现象
- QEMU仿真启动后,持续打印以下格式错误日志:
maca ERROR: init.lua(194): [module_name]StartupCheck failed, error: initialization is not complete while checking the startup status, status: Starting, check count: N
涉及模块包括:power_mgmt、sensor、ipmi_core等。
- Web界面无法正常加载并显示PCIe卡信息。
- 软件版本为:26.03。
根本原因分析
1. 系统初始化阻塞于“Starting”状态
日志中反复出现:
[module]StartupCheck failed, error: initialization is not complete... status: Starting
表明多个核心服务(如电源管理、传感器、IPMI)处于未完成初始化的状态。系统启动检查机制持续重试(check count递增),但无法进入“Completed”状态。
此类问题在知识库中有明确关联:
QEMU Startup Error 是由于多个组件未完成初始化导致的启动错误,其中 bmc_soc 组件未适配QEMU是主要原因之一。
关键故障点:bmc_soc 未适配QEMU
- 知识图谱关系显示:
"QEMU Startup Error" → "bmc_soc":bmc_soc 的未适配状态是QEMU启动错误的部分原因。
"QEMU" → "bmc_soc":bmc_soc 尚未适配QEMU环境,导致初始化检查失败。
- 日志中的
init.lua 来自QEMU仿真环境的初始化脚本逻辑,其对各服务状态轮询检测失败,直接反映底层服务依赖未就绪。
2. PCIe设备加载失败或仿真不完整
尽管QEMU支持部分PCIe卡加载与热插拔,但以下因素可能导致PCIe卡未能正确识别或显示:
已支持的PCIe卡类型(来自文档《QEMU 仿真与 BMC 业务开发指南》)
| 卡型号 |
类型 |
支持情况 |
| SP680 |
网卡 |
大部分功能已支持 |
| SAS 3152 |
RAID卡 |
基础仿真,支持识别和查询 |
您提到“Web界面看不见PCIe卡”,说明设备可能未成功模拟、未正确加载仿真数据,或BMC服务未完全运行以暴露Redfish资源。
潜在问题:
- 缺少对应的CSR仿真数据:未在VPD仓库中添加对应卡的
.sr文件或JSON配置。
- PCIe地址信息获取失败:知识图谱提及
"failed to get_pcie_addr_info" 错误,由 biz_topo.lua 报出,导致设备无法正确定位。
- 驱动或服务缺失:例如
pcie_device 服务未启动,或 bmc.kepler.pcie_device 无对应 .service 文件定义。
解决方案
步骤一:确认并修复 bmc_soc 初始化问题
1. 验证 bmc_soc 服务状态
检查仿真环境中 bmc_soc 是否存在且版本匹配:
busctl list | grep bmc.kepler.bmc_soc
查看其日志:
journalctl -u bmc.kepler.bmc_soc --no-pager
若服务不存在或报错,说明该组件尚未适配QEMU环境。
2. 手动触发或跳过StartupCheck(临时措施)
若为调试用途,可尝试修改 init.lua 中最大重试次数或超时时间,避免无限等待。
注意:长期方案应为升级 bmc_soc 到支持QEMU的版本(如 ≥ 1.110.20)。
步骤二:确保PCIe卡仿真配置正确
1. 添加正确的仿真数据
参考文档《如何新增仿真数据和仿真驱动》操作:
2. 使用热插拔方式动态加载
确保使用支持热插拔的QEMU镜像,并执行以下命令启动:
python3 build/works/packet/qemu_shells/vemake_1711.py > qemu_stdout.log 2> qemu_stderr.log
然后修改 pcie_card.json 并触发重新加载。
步骤三:验证Web与Redfish接口是否正常
即使设备模拟成功,若Web服务异常仍无法显示。
1. 检查Web登录状态
知识库指出:Qemu仿真环境允许SSH登录但Web登录UI加载失败。
这属于常见问题,尤其在SDK版本不兼容时。
2. 检查nginx与webui服务
systemctl status nginx
journalctl -u webui --no-pager
用户 mahuihui 曾通过重装开发环境 + 更换SDK版本解决Web登录问题。
步骤四:升级环境与依赖项
推荐配置
| 组件 |
推荐版本/状态 |
| QEMU |
≥ 8.2.10(支持更多仿真特性) |
| bmc_soc |
≥ 1.110.20(已知稳定版本) |
| pcie_device |
1.71.0@openubmc/stable |
| SDK |
使用与固件匹配的版本(避免兼容性问题) |
建议参考 OpenUBMC 社区近期 issue 统计,关注【需求】支持PCIe卡的通用功能仿真(2025-09-05)、MCTP协议仿真等进展,提升仿真完整性。
总结:解决流程清单
| 步骤 |
操作 |
目标 |
| 1 |
检查 bmc_soc 是否适配QEMU |
解决初始化卡死问题 |
| 2 |
确认 pcie_card.json 与 .sr 文件存在 |
确保PCIe卡仿真数据完整 |
| 3 |
检查 pcie_device 服务是否正常启动 |
保证PCIe设备管理服务运行 |
| 4 |
验证Redfish API能否访问卡信息:
GET /redfish/v1/Chassis/1/PCIeDevices/PCIeCard4 |
确认后端识别成功 |
| 5 |
检查Web前端服务(nginx/webui)状态 |
解决Web界面不显示问题 |
| 6 |
必要时重装环境并更新SDK版本 |
彻底排除配置污染 |
参考资料
- 《QEMU 仿真与 BMC 业务开发指南》
- 《如何新增仿真数据和仿真驱动》
- 知识节点:
QEMU、bmc_soc、Pcie Device、failed to get_pcie_addr_info
- 用户案例:
mahuihui 成功通过重装+换SDK解决问题
如有具体卡型号,可进一步指导仿真数据添加方法。