qemu仿真一直打印maca error

问题描述

使用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

环境信息

  • 软件版本:26.03

答案内容由AI生成,仅供参考:
:white_check_mark: 总结:解决流程清单

步骤 操作 目标
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卡加载。以下将结合系统上下文信息进行综合分析并提供解决方案。


:magnifying_glass_tilted_left: 问题现象

  • 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_mgmtsensoripmi_core等。
  • Web界面无法正常加载并显示PCIe卡信息。
  • 软件版本为:26.03。

:warning: 根本原因分析

1. 系统初始化阻塞于“Starting”状态

日志中反复出现:

[module]StartupCheck failed, error: initialization is not complete... status: Starting

表明多个核心服务(如电源管理、传感器、IPMI)处于未完成初始化的状态。系统启动检查机制持续重试(check count递增),但无法进入“Completed”状态。

此类问题在知识库中有明确关联:

QEMU Startup Error 是由于多个组件未完成初始化导致的启动错误,其中 bmc_soc 组件未适配QEMU是主要原因之一。

:cross_mark: 关键故障点: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卡未能正确识别或显示:

:white_check_mark: 已支持的PCIe卡类型(来自文档《QEMU 仿真与 BMC 业务开发指南》)

卡型号 类型 支持情况
SP680 网卡 大部分功能已支持
SAS 3152 RAID卡 基础仿真,支持识别和查询

您提到“Web界面看不见PCIe卡”,说明设备可能未成功模拟、未正确加载仿真数据,或BMC服务未完全运行以暴露Redfish资源。

:cross_mark: 潜在问题:

  • 缺少对应的CSR仿真数据:未在VPD仓库中添加对应卡的.sr文件或JSON配置。
  • PCIe地址信息获取失败:知识图谱提及 "failed to get_pcie_addr_info" 错误,由 biz_topo.lua 报出,导致设备无法正确定位。
  • 驱动或服务缺失:例如 pcie_device 服务未启动,或 bmc.kepler.pcie_device 无对应 .service 文件定义。

:hammer_and_wrench: 解决方案

步骤一:确认并修复 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. 添加正确的仿真数据

参考文档《如何新增仿真数据和仿真驱动》操作:

  • vpd 仓库中找到目标PCIe卡的CSR信息;
  • 创建对应 .sr 文件并放入正确路径;
  • pcie_card.json 中添加设备定义;
  • 示例结构:
    "PCIeDevice_1": {
      "DeviceName": "PCIe Card $ (SP670)",
      "FunctionClass": 2,
      "LinkStatus": "Up"
    }
    

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 使用与固件匹配的版本(避免兼容性问题)

:light_bulb: 建议参考 OpenUBMC 社区近期 issue 统计,关注【需求】支持PCIe卡的通用功能仿真(2025-09-05)、MCTP协议仿真等进展,提升仿真完整性。


:white_check_mark: 总结:解决流程清单

步骤 操作 目标
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版本 彻底排除配置污染

:books: 参考资料

  • 《QEMU 仿真与 BMC 业务开发指南》
  • 《如何新增仿真数据和仿真驱动》
  • 知识节点:QEMUbmc_socPcie Devicefailed to get_pcie_addr_info
  • 用户案例:mahuihui 成功通过重装+换SDK解决问题

如有具体卡型号,可进一步指导仿真数据添加方法。

目前是已知问题,qemu仓有issue在跟踪

好的

有其他问题继续回复