问题描述
[在这里详细描述您遇到的问题]
环境信息
-
操作系统:openeuler 2203sp4
-
BMC芯片:1712
重现步骤
-
[第一步]
按照iBMA正常静默安装 -
[第二步]
启动iBMA服务
期望结果
iBMA可以安装和启动服务
实际结果
iBMA安装成功,但是服务启动失败
尝试过的解决方案
卸载后重新安装iBMA,仍然有相同问题
[在这里详细描述您遇到的问题]
操作系统:openeuler 2203sp4
BMC芯片:1712
[第一步]
按照iBMA正常静默安装
[第二步]
启动iBMA服务
iBMA可以安装和启动服务
iBMA安装成功,但是服务启动失败
卸载后重新安装iBMA,仍然有相同问题
答案内容由AI生成,仅供参考:
根据您提供的信息,iBMA 2.20.0 已成功安装,但在启动服务时失败。系统日志显示驱动模块加载异常,特别是 host_cdew_drv 和 host_veth_drv 模块无法加载。以下是对该问题的详细分析和解决建议。
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
从错误日志来看,iBMA 启动脚本尝试加载两个内核驱动模块 host_cdew_drv 和 host_veth_drv 失败,导致服务启动中断。以下是可能的原因:
host_veth_drv.ko、host_cdew_drv.ko),这些模块需要针对当前系统的内核版本进行编译。.ko 模块可能与当前内核版本不兼容,导致 modprobe 无法加载。kernel-devel 或 kernel-headers 包,则无法在安装时重新构建驱动模块。host_cdew_drv 可能依赖于特定硬件(如华为定制 PCIe 设备或管理通道),若 BMC 芯片(1712)或平台未提供相应设备支持,模块将无法加载。host_veth_drv 用于创建虚拟网络接口,用于 iBMA 与 openUBMC 之间的通信。该模块依赖于内核配置中启用 CONFIG_VETH。ExecStart=/opt/huawei/ibma/ibMA.sh start 表明启动依赖一个 shell 脚本。若脚本中硬编码路径或执行权限不足,也可能导致失败。find /opt/huawei/ibma -name "*.ko"
lsmod | grep -i host
查看是否存在 host_cdew_drv.ko 和 host_veth_drv.ko 文件。
rpm -qa | grep kernel-devel
uname -r
ls /lib/modules/$(uname -r)/build
确保当前运行的内核对应有开发头文件,否则需安装:
dnf install kernel-devel-$(uname -r)
modprobe veth # 先确认标准 veth 支持正常
insmod /opt/huawei/ibma/driver/host_veth_drv.ko
如果失败,使用 dmesg | tail 查看更详细的错误。
mokutil --sb-state
若显示 Secure Boot 已启用,考虑临时禁用或使用已签名的驱动包。
确认 /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
systemctl start ibMA
若拥有源码:
kernel-devel 和编译工具链。cd /opt/huawei/ibma/driver
make KDIR=/lib/modules/$(uname -r)/build
insmod host_veth_drv.ko
insmod host_cdew_drv.ko
| 项目 | 内容 |
|---|---|
| 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 需验证兼容性 |
dmesg 输出;journalctl -xeu ibMA.servicedmesg | grep -i hostuname -als /lib/modules/$(uname -r)/extra/建议您向 华为技术支持 提交此问题,提供完整日志,并明确指出:
在 openEuler 2203 SP4 上安装 iBMA 2.20.0 后,
host_cdew_drv和host_veth_drv模块加载失败,请求提供兼容的安装包或驱动补丁。
同时可参考《[iBMA 2.0 用户指南](Huawei Support Portal)》中关于静默安装和驱动部署的部分。
如能提供更多日志(如 dmesg 输出、/opt/huawei/ibma/log/ 目录内容),可进一步精准定位问题。
相关链接:
【问题原因】
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、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/*/device,lspci -d :1712 查询OS内是否存在相应的PCIe设备
为什么需要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暂时没有支持过这种场景