iBMA 2.20.0安装成功,但是服务启动失败

问题描述

[在这里详细描述您遇到的问题]

环境信息

  • 操作系统:openeuler 2203sp4

  • BMC芯片:1712

重现步骤

  1. [第一步]
    按照iBMA正常静默安装

  2. [第二步]
    启动iBMA服务

期望结果

iBMA可以安装和启动服务

实际结果

iBMA安装成功,但是服务启动失败

尝试过的解决方案

卸载后重新安装iBMA,仍然有相同问题

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

iBMA 2.20.0 服务启动失败问题分析与解决方案

根据您提供的信息,iBMA 2.20.0 已成功安装,但在启动服务时失败。系统日志显示驱动模块加载异常,特别是 host_cdew_drvhost_veth_drv 模块无法加载。以下是对该问题的详细分析和解决建议。


:magnifying_glass_tilted_left: 问题描述

  • 现象:iBMA 安装成功,但服务启动失败。
  • 关键错误日志
    modprobe driver host_cdew_drv Failed.
    modprobe: ERROR: could not insert 'host_veth_drv': No such device or address
    Failed to load module host_veth_drv
    
  • 系统环境
    • 操作系统:openEuler 2203 SP4
    • BMC芯片:1712
    • iBMA版本:2.20.0
    • 服务管理器:systemd

:puzzle_piece: 根本原因分析

从错误日志来看,iBMA 启动脚本尝试加载两个内核驱动模块 host_cdew_drvhost_veth_drv 失败,导致服务启动中断。以下是可能的原因:

1. 内核模块未正确编译或不存在

  • iBMA 的运行依赖于特定的内核模块(如 host_veth_drv.kohost_cdew_drv.ko),这些模块需要针对当前系统的内核版本进行编译。
  • 在 openEuler SP4 上,如果使用的是未经适配的 iBMA 安装包,其内置的 .ko 模块可能与当前内核版本不兼容,导致 modprobe 无法加载。

2. DKMS 未启用或内核头文件缺失

  • 驱动模块的自动编译通常依赖 DKMS (Dynamic Kernel Module Support)
  • 如果系统缺少 kernel-develkernel-headers 包,则无法在安装时重新构建驱动模块。

3. 模块签名验证失败(Secure Boot)

  • 若服务器启用了 Secure Boot,而驱动模块未经过有效签名,则内核会拒绝加载这些模块,报错为 “No such device or address” 或 “Operation not allowed”。

4. 设备节点或硬件支持缺失

  • host_cdew_drv 可能依赖于特定硬件(如华为定制 PCIe 设备或管理通道),若 BMC 芯片(1712)或平台未提供相应设备支持,模块将无法加载。
  • host_veth_drv 用于创建虚拟网络接口,用于 iBMA 与 openUBMC 之间的通信。该模块依赖于内核配置中启用 CONFIG_VETH

5. 服务脚本路径或权限错误

  • ExecStart=/opt/huawei/ibma/ibMA.sh start 表明启动依赖一个 shell 脚本。若脚本中硬编码路径或执行权限不足,也可能导致失败。

:white_check_mark: 验证步骤与排查建议

:white_check_mark: 步骤 1:检查内核模块是否存在

find /opt/huawei/ibma -name "*.ko"
lsmod | grep -i host

查看是否存在 host_cdew_drv.kohost_veth_drv.ko 文件。

:white_check_mark: 步骤 2:确认内核开发环境是否安装

rpm -qa | grep kernel-devel
uname -r
ls /lib/modules/$(uname -r)/build

确保当前运行的内核对应有开发头文件,否则需安装:

dnf install kernel-devel-$(uname -r)

:white_check_mark: 步骤 3:尝试手动加载模块

modprobe veth  # 先确认标准 veth 支持正常
insmod /opt/huawei/ibma/driver/host_veth_drv.ko

如果失败,使用 dmesg | tail 查看更详细的错误。

:white_check_mark: 步骤 4:检查 Secure Boot 状态

mokutil --sb-state

若显示 Secure Boot 已启用,考虑临时禁用或使用已签名的驱动包。

:white_check_mark: 步骤 5:检查 systemd 服务文件

确认 /usr/lib/systemd/ibMA.service 内容是否正确,尤其是路径和依赖项。

示例(应类似):

[Unit]
Description=ibMA service
After=network.target

[Service]
Type=forking
ExecStart=/opt/huawei/ibma/ibMA.sh start
ExecStop=/opt/huawei/ibma/ibMA.sh stop
Restart=on-failure

[Install]
WantedBy=multi-user.target

:light_bulb: 解决方案建议

:hammer_and_wrench: 方案一:使用适配 openEuler SP4 的 iBMA 安装包

  • 联系 华为技术支持(Huawei PAE) 或访问 华为支持门户(Huawei Support Portal),获取专为 openEuler 2203 SP4aarch64 架构 构建的 iBMA 2.20.0 安装包。
  • 确保安装包包含针对该内核版本预编译或支持 DKMS 自动构建的驱动模块。

:hammer_and_wrench: 方案二:关闭 Secure Boot(仅测试环境)

  • 进入 BIOS 设置,关闭 Secure Boot。
  • 重启后再次尝试启动 iBMA 服务:
    systemctl start ibMA
    

:hammer_and_wrench: 方案三:手动编译驱动模块(高级)

若拥有源码:

  1. 安装 kernel-devel 和编译工具链。
  2. 设置内核构建路径:
    cd /opt/huawei/ibma/driver
    make KDIR=/lib/modules/$(uname -r)/build
    
  3. 安装模块:
    insmod host_veth_drv.ko
    insmod host_cdew_drv.ko
    

:hammer_and_wrench: 方案四:联系厂商确认硬件兼容性

  • BMC 芯片型号为 1712,需确认其是否支持 iBMA 所需的底层通信机制(如 CDew 接口、虚拟以太网通道)。
  • 某些老版本芯片可能不再支持新版本 iBMA 功能。

:books: 参考信息(来自知识库)

项目 内容
iBMA 服务管理 使用 systemd[1] 管理 iBMA.service,启动脚本位于 /opt/huawei/ibma/ibMA.sh
驱动依赖 host_veth_drv 是 iBMA 虚拟网口通信的关键模块
虚拟网络接口 iBMA 使用 veth 虚拟接口与 openUBMC 通信(端口 8090/Redfish)
安装路径 默认安装路径为 /opt/huawei/ibma
日志位置 /opt/huawei/ibma/log/common.log
支持的操作系统 已知支持 EulerOS 2.0 SP8 on aarch64,openEuler 需验证兼容性

:pushpin: 建议操作流程总结

  1. :white_check_mark: 检查内核头文件与模块文件是否存在;
  2. :white_check_mark: 尝试手动加载模块并查看 dmesg 输出;
  3. :white_check_mark: 关闭 Secure Boot 测试是否可启动;
  4. :white_check_mark: 确认是否使用了适配 openEuler SP4 的 iBMA 包;
  5. :white_check_mark: 如仍失败,提交日志至 华为 PAE 支持团队,附上:
    • journalctl -xeu ibMA.service
    • dmesg | grep -i host
    • uname -a
    • ls /lib/modules/$(uname -r)/extra/

:telephone_receiver: 后续支持

建议您向 华为技术支持 提交此问题,提供完整日志,并明确指出:

在 openEuler 2203 SP4 上安装 iBMA 2.20.0 后,host_cdew_drvhost_veth_drv 模块加载失败,请求提供兼容的安装包或驱动补丁。

同时可参考《[iBMA 2.0 用户指南](Huawei Support Portal)》中关于静默安装和驱动部署的部分。


如能提供更多日志(如 dmesg 输出、/opt/huawei/ibma/log/ 目录内容),可进一步精准定位问题。

相关链接:

  1. OS侧安装iBMA后openUBMC下不显示iBMA版本等信息
  2. general_hardware 服务部署问题
  3. 【问题咨询】openEuler OS安装iBMA后,带外web无法获取软件信息
  4. web页面缺少更新安装iBMA界面
  5. IPMI管理定位问题 | 文档中心 | openUBMC

【问题原因】

1、iBMA驱动适配Hi1712芯片的版本是0.4.0(已合入openEuler 6.6内核,对应发布版本为openEuler 24.03 LTS SP3),openEuler 22.03 LTS SP4系统自带的iBMA驱动版本为0.3.6,不支持Hi1712

2、iBMA软件适配Hi1712芯片的版本是2.19.0

(1)在Hi1712场景下,iBMA安装时,会判断系统自带iBMA驱动版本是否小于0.4.0,如果小于,则尝试从iBMA软件包解压后的iBMA2.0/drivers/目录下查找匹配当前操作系统的iBMA驱动包并安装

(2)iBMA适配Hi1712时对应的服务器兼容的openEuler操作系统版本为openEuler 24.03 LTS SP2,因此iBMA软件包中仅携带了openEuler 24.03 LTS SP2系统的驱动,并没有openEuler 22.03 LTS SP4系统的驱动

所以最终选择系统自带的0.3.6版本的iBMA驱动,无法正常加载,导致iBMA服务启动失败

【解决方案】

1、部署openEuler 24.03 LTS SP3操作系统后,重新安装iBMA

2、通过iBMA驱动源码包,编译0.4.0版本的适配openEuler 22.03 LTS SP4的iBMA驱动

(1)从support网站获取iBMA 0.4.0驱动源码包:iBMA-dkms_0.4.0_Driver_aarch64_src.tar.gz

(2)将源码包上传至操作系统,参考iBMA用户指南-编译iBMA驱动章节手动编译iBMA驱动

(3)将编译好的驱动包 kmod-iBMA_driver-xxx.rpm 放到iBMA软件包解压后的 iBMA2.0/drivers/openEuler 目录下,重新安装iBMA

或 通过rpm -ivh kmod-iBMA_driver-xxx.rpm 命令手动安装iBMA驱动rpm包后,重启iBMA服务

1 个赞

【问题原因】

1、iBMA驱动适配Hi1712芯片的版本是0.4.0(已合入openEuler 6.6内核,对应发布版本为openEuler 24.03 LTS SP3),openEuler 22.03 LTS SP4系统自带的iBMA驱动版本为0.3.6,不支持Hi1712

2、iBMA软件适配Hi1712芯片的版本是2.19.0

(1)在Hi1712场景下,iBMA安装时,会判断系统自带iBMA驱动版本是否小于0.4.0,如果小于,则尝试从iBMA软件包解压后的iBMA2.0/drivers/目录下查找匹配当前操作系统的iBMA驱动包并安装

(2)iBMA适配Hi1712时对应的服务器兼容的openEuler操作系统版本为openEuler 24.03 LTS SP2,因此iBMA软件包中仅携带了openEuler 24.03 LTS SP2系统的驱动,并没有openEuler 22.03 LTS SP4系统的驱动

所以最终选择系统自带的0.3.6版本的iBMA驱动,无法正常加载,导致iBMA服务启动失败

【解决方案】

1、部署openEuler 24.03 LTS SP3操作系统后,重新安装iBMA

2、通过iBMA驱动源码包,编译0.4.0版本的适配openEuler 22.03 LTS SP4的iBMA驱动

(1)从support网站获取iBMA 0.4.0驱动源码包:iBMA-dkms_0.4.0_Driver_aarch64_src.tar.gz

(2)将源码包上传至操作系统,参考iBMA用户指南-编译iBMA驱动章节手动编译iBMA驱动

(3)将编译好的驱动包 kmod-iBMA_driver-xxx.rpm 放到iBMA软件包解压后的 iBMA2.0/drivers/openEuler 目录下,重新安装iBMA

或 通过rpm -ivh kmod-iBMA_driver-xxx.rpm 命令手动安装iBMA驱动rpm包后,重启iBMA服务

请问我按上面的步骤操作后仍然加载失败,是什么原因呢?

当前问题的原因是iBMA在OS内没有找到依赖的PCIe设备

需要排查iBMC web 系统日志 界面上PCIe接口是否已打开;

同时,在OS内,执行 grep “0x1712” /sys/bus/pci/devices/*/devicelspci -d :1712 查询OS内是否存在相应的PCIe设备

cpu和bmc之间是通过LPC连接,请问为什么需要pcie设备呢?iBMC web是打开的,我的BMC是1711芯片。

OS内是确实没有相应的PCIe

image

为什么需要PCIe设备?

该PCIe设备是iBMA和BMC通信的物理链路,iBMA驱动依赖该PCIe设备,没有设备时驱动无法加载,iBMA和BMC也无法通信

1711芯片的PCIe设备device id是 0x1710;1712芯片的device id 是 0x1712

所以1711芯片环境,要用`grep “0x1710” /sys/bus/pci/devices/*/device` 命令查询。若查询结果仍为空,需要BMC侧检查PCIe设备是否使能。

我们的物理链路是LPC,不是pcie接口,所以会有需要pcie疑问

“物理链路是LPC” – 是指1711和CPU的链路吗?
iBMA暂时没有支持过这种场景