散热模式配置CLI报错

问题描述

CLI报错

~ ~ # ipmcset -d fanmode
The request failed due to an internal service error.  The service is still operational.
Request failed.
~ ~ # ipmcset -d fanlevel
The request failed due to an internal service error.  The service is still operational.
Request failed.
~ ~ #

cooling服务状态

~ # systemctl status cooling
× cooling.service - cooling service
     Loaded: loaded (/etc/systemd/system/cooling.service; enabled; vendor preset: enabled)
     Active: failed (Result: resources) since Thu 1970-01-01 08:00:06 CST; 56 years 2 months ago

Jan 01 08:00:06 localhost systemd[1]: cooling.service: Failed to schedule restart job: Unit hica.service not found.
Jan 01 08:00:06 localhost systemd[1]: cooling.service: Failed with result 'resources'.

hica组件版本

~ # grep hica /etc/package_info
hica/1.70.14@openubmc/stable#2895a8f32706a7011a0d5b4081737338%1760007847.181

环境信息

  • 软件版本:如 OpenUBMC2509

答案内容由AI生成,仅供参考:

:pushpin: 总结

项目 分析结果
根本原因 cooling.service 启动失败,因其依赖的 hica.service 不存在
直接表现 所有风扇控制 CLI 命令返回“内部服务错误”
潜在成因 服务文件未部署、HICA 功能重构、跨版本依赖不匹配
可行性对策 检查服务存在性、启用正确服务、确认架构变更、修复部署包
点击此处查看详细分析解答

散热模式配置CLI报错问题分析与解决方案

根据您提供的信息,CLI命令 ipmcset -d fanmodeipmcset -d fanlevel 报错:“The request failed due to an internal service error”,同时发现 cooling.service 启动失败,并提示“Unit hica.service not found”。以下是从系统架构、依赖关系和服务状态角度进行的综合分析和解决建议。


:magnifying_glass_tilted_left: 问题根本原因分析

1. cooling.service 启动失败:资源依赖缺失

从服务状态日志中可以看到关键错误:

systemd[1]: cooling.service: Failed to schedule restart job: Unit hica.service not found.

这表明:

  • cooling.service 依赖于 hica.service
  • 当前系统中 hica.service 不存在或未正确安装/注册到 systemd,导致 cooling.service 因缺少依赖资源而启动失败。
  • 一旦 cooling.service 未运行,所有与其相关的 CLI 命令(如 ipmcset -d fanmodeipmcset -d fanlevel)都会因后端服务不可用而返回“内部服务错误”。

:white_check_mark: 结论:当前问题的本质是 cooling.service 因依赖 hica.service 未找到而无法启动,导致风扇模式与转速控制功能失效。


2. HICA 组件版本信息存在 ≠ HICA Service 存在

您已查询到 HICA 组件版本:

hica/1.70.14@openubmc/stable

说明 HICA 软件包已安装,但并不能保证:

  • hica.service 的 systemd 服务文件(如 /etc/systemd/system/hica.service)存在;
  • 该服务已正确启用(systemctl enable hica.service);
  • HICA 模块的启动脚本或二进制文件路径配置正确。

可能存在:

  • 服务单元文件缺失(软件包安装但未部署服务定义)
  • 服务名称变更或重命名
  • 构建配置中禁用了 HICA 服务自动注册

3. cooling.service 失败导致 IPMC 功能失效

ipmcset 是 OpenUBMC 中用于配置系统管理参数的命令行工具,其功能模块依赖后台守护进程。其中:

  • fanmodefanlevel 相关操作由 cooling.service 提供支持。
  • cooling.service 处于 failed (Result: resources) 状态,则无法响应来自 ipmcset 的请求。

:hammer_and_wrench: 解决方案建议

:white_check_mark: 步骤 1:检查 hica.service 是否存在

运行以下命令查看是否存在 HICA 的服务单元文件:

ls /etc/systemd/system/hica.service
ls /usr/lib/systemd/system/hica.service

若无输出,则说明服务文件未部署。


:white_check_mark: 步骤 2:确认 HICA 服务是否应存在(版本兼容性核查)

请核对您的 OpenUBMC 版本(OpenUBMC2509)与 HICA 组件(1.70.14)是否匹配:

  • 查阅对应版本的发行说明(Release Notes)或构建清单,确认:
    • HICA 是否仍作为独立服务存在;
    • 是否已被整合进其他服务(如 thermal_mgmtbmc_kepler);
    • 是否已改名(例如 hica-daemon.service)。

:pushpin: 注意:在部分新版 OpenUBMC 架构中,HICA 功能可能被归并至 thermal_mgmt 或通过 Lua 策略引擎动态加载,不再以独立服务运行。


:white_check_mark: 步骤 3:尝试手动启动或修复依赖

方法一:重新加载 systemd 配置并查找实际服务名

systemctl daemon-reexec
systemctl daemon-reload
systemctl list-units | grep hica
systemctl list-unit-files | grep hica

如果发现类似 hica-daemon.servicebmc-hica.service,尝试启用并启动:

systemctl enable hica-daemon.service
systemctl start hica-daemon.service

方法二:检查 cooling.service 的依赖定义

查看 cooling.service 文件内容:

cat /etc/systemd/system/cooling.service

关注 [Unit] 段中的 Requires=Wants= 字段,确认是否显式依赖 hica.service

如果是,则需:

  • 补全 hica.service 定义;
  • 或联系开发团队确认是否可改为软依赖(Wants 而非 Requires)。

:white_check_mark: 步骤 4:临时绕过问题 —— 使用替代命令测试风扇状态

在服务未恢复前,可尝试使用其他命令获取风扇信息,验证底层驱动是否正常:

# 获取风扇当前层级(非设置)
Get Fan Level

# 查询冷却策略
ipmitool raw 0x30 0x45

# 查看风扇对象状态
lsprop Fan*   # 或使用 bmc_cli_ls_prop_info

:light_bulb: 提示:scan_fan_status 函数负责周期性检测风扇健康并生成 0x04000007 类型告警(来自知识图谱),可配合日志排查物理设备状态。


:white_check_mark: 步骤 5:联系开发/部署团队确认构建完整性

结合以下线索判断是否为构建或部署问题:

  • hica.service 缺失但包存在 → 极可能是 部署流程遗漏了服务注册脚本
  • OpenUBMC2509 中预期使用新架构(如 thermal_mgmt 直接接管调速逻辑)→ 可能已废弃 HICA 独立服务,依赖未更新;
  • cooling.service 仍要求 hica.service配置陈旧或跨版本迁移不兼容

建议:

  • 提交构建日志,确认 hica.service 是否应被部署;
  • 确认 cooling.service 的依赖关系是否符合当前架构要求。

:pushpin: 总结

项目 分析结果
根本原因 cooling.service 启动失败,因其依赖的 hica.service 不存在
直接表现 所有风扇控制 CLI 命令返回“内部服务错误”
潜在成因 服务文件未部署、HICA 功能重构、跨版本依赖不匹配
可行性对策 检查服务存在性、启用正确服务、确认架构变更、修复部署包

:white_check_mark: 建议最终操作流程

# 1. 检查 hica.service 是否存在
ls /etc/systemd/system/hica.service

# 2. 搜索可能的服务名称
systemctl list-unit-files | grep -i hica

# 3. 若发现其他名称,启用并启动
systemctl enable hica-daemon.service
systemctl start hica-daemon.service

# 4. 重启 cooling.service
systemctl restart cooling.service

# 5. 验证服务状态
systemctl status cooling.service

# 6. 测试命令是否恢复
ipmcset -d fanmode

如果以上均无效,请:

  • 提供 cooling.service 文件内容
  • 确认 OpenUBMC2509 是否正式支持 HICA 独立服务架构
  • 联系 Wwhh 或 thermal_mgmt 开发者(参考社区讨论模式)进行深度诊断。

若后续 Thermal Mgmt 组件已接管冷却功能(参考知识图谱:Thermal Mgmt accesses Cooling Config),则建议将 cooling.service 依赖改为指向 thermal_mgmt.service,或整体迁移至新架构。

energy服务状态

~ # systemctl status energy
● energy.service - energy service
     Loaded: loaded (/etc/systemd/system/energy.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2026-03-22 12:14:53 CST; 2h 54min ago
    Process: 2323 ExecStartPre=/bin/bash -c uptime=`/bin/cat /proc/uptime |awk -F '.' '{print $1}'`; if [ $uptime -lt 100 ]; then /bin/sleep 35; fi (code=exited, status=0/SUCCESS)
    Process: 2646 ExecStartPost=/bin/bash -c echo 0x21 > /proc/$MAINPID/coredump_filter (code=exited, status=0/SUCCESS)
   Main PID: 2644 (secbox)
      Tasks: 15 (limit: 10416)
     Memory: 268.0K (high: 1000.0M max: 1.0G available: 999.7M)
     CGroup: /system.slice/energy.service
             ├─ 2644 secbox -f /opt/bmc/apps/hica/subsys/energy/secbox.cfg -c "exec -a energy /opt/bmc/skynet/skynet /opt/bmc/apps/hica/subsys/energy/config.cfg"
             └─ 2666 energy /opt/bmc/apps/hica/subsys/energy/config.cfg

Jan 01 08:00:22 localhost systemd[1]: Starting energy service...
Mar 22 12:14:53 localhost systemd[1]: Started energy service.

CoolingConfig对象加载失败导致的