基础通用问题FAQ

-----------------------------------------------------【通用】-----------------------------------------------------
Q1:openUBMC开源代码在哪里?(注:这里是实时最新的代码,如果是要开发商用版本,建议基于社区发行版代码)
A: https://gitcode.com/openUBMC

Q2:社区发行版的开源代码和二进制bmc_sdk哪里下载?(每个季度发布一次)
A:开源代码: 社区发行版下载 | openUBMC
二进制bmc_sdk: 鲲鹏BMC-管理软件解决方案-下载-鲲鹏社区

Q3:社区学习文档资料在哪?
A: 文档中心 | openUBMC

Q4:社区conan怎么配置?
A:参考 openubmc社区conan仓使用指导 - CICD SIG - openUBMC 论坛

Q5:如何在openUBMC社区提交代码(PR)
A:参考 社区代码PR指南 - bmc_core SIG - openUBMC 论坛

Q6:bmc_sdk的API文档在哪里?
A:https://openubmc-website.test.osinfra.cn/docs/zh/development/api/SDK.html

Q7:哪里有openUBMC配套IPMI接口文档?
A: IPMI接口文档

Q8:如何获取bmc_sdk的model.json和ipmi.json文件?
A: 闭源组件接口文件获取(model.json、ipmi.json)

Q9:哪里有openUBMC的白皮书?
A: 技术白皮书 | openUBMC

Q10:哪里有iBMC V2的白皮书?(注:2020年的,供参考)
A: 华为产品与解决方案-华为ICT设备-华为商用-华为企业业务

Q11:哪里可以获取iBMC V2的用户指南?
A:以S920X10机型为例,其他机型可能有细微差异https://support.huawei.com/enterprise/zh/doc/EDOC1100252159?idPath=23710424|251364417|251364851|254541331

Q12:能否从iBMC V2直接升级到openUBMC?
A:可以,但是V2的配置信息都不会保留(比如新增的用户,设置的web超时时间等等,除了ip)参考 BMC 3.xx.xx.xx版本升级openubmc指导

Q13:如何出白牌包?
A:参考 openUBMC品牌包定制指南 - Docs SIG - openUBMC 论坛

Q14:社区贡献看板在哪?
A: openUBMC DATASTAT

Q15:串口如何配置bmc的ip?
A:串口登录bmc,执行ipmcset -d ipaddr -v ip地址 掩码 网关,例如ipmcset -d ipaddr -v 76.76.17.95 255.255.0.0 76.76.16.1

Q16:能ping通bmc,ssh能连上,但是为什么web访问不了?
A:大概率需要导入ssl证书后才能访问web。参考https://discuss.openubmc.cn/t/topic/2489

Q17:BMC如何收集日志?
A:方法一:登录bmc网页,点击“一键收集”即可
方法二:ssh登录bmc,执行ipmcget -d d,收集完成后,去tmp目录取日志压缩包

Q18:openUBMC一键收集日志怎么看?
A:参考 openUBMC一键收集介绍 - 交流互助区 - openUBMC 论坛

Q19:1711 BMC有几个分区
A:3个分区,每次升级刷新两个分区

Q20:如何在线升级BMC固件
A:方法一:web登录->BMC管理->固件升级
方法二:先通过sftp把固件包传到BMC(默认是tmp目录),然后ssh登录bmc,执行ipmcset -d upgrade -v /tmp/包名

Q21:为什么通电后BMC串口有输出,过一段时间会卡住,无输出,无法输命令
A:出厂默认串口方向是在OS侧,通电后,BMC启动过程中串口输出的是BMC的启动信息,BMC启动完成后,串口会自动切到OS侧,如果没上电,或者没装OS,串口就不会有输出,也无法输入

Q22:如何将串口强制切到BMC侧?
A:通过ssh登录BMC,执行ipmcset –d serialdir –v 1,即可将串口切到BMC,如果要再切到OS侧,执行ipmcset –d serialdir –v 0

Q23:BMC网络不通有哪些排查手段
A:1、通过串口ipmcget -d eth查看当前管理网口是否linkup,用以排查网线是否接好
2、通过串口ipmcget -d ipinfo查看当前环境的配置信息,IP、网关、掩码是否符合要求
3、通过ifconfig命令查看上述ip地址配置信息是否在协议栈生效

Q24:为什么用openUBMC升级BIOS/CPLD固件,会提示“无效的升级包”?
A:可能原因是BIOS/CPLD固件的签名不是开发者自己的,比如是HW提供的固件,签名就是HW的,而openUBMC都是开发者自己的签名和证书,只能升级自己签名的BMC/BIOS/CPLD等固件。当前支持各固件签名替换成自己的签名。

Q25:BMC出现异常后如何恢复?(比如web无法访问,账号无法登陆)
A:参考 BMC固件损坏时恢复环境指导

Q26:为什么Support网站下载iBMA软件没有权限?

A:可能原因是没绑定公司,如果所属公司是华为计算认证的伙伴,则有权限下载,账号关联上公司即可。

Q27:社区每个版本合入的需求清单,哪里可以看?

A:在 release_management:Management of openUBMC community release - AtomGit ,到对应版本目录下的release-note.md文件

Q28:社区每个版本的release-note在哪里?

A:在 release_management:Management of openUBMC community release - AtomGit ,到对应版本目录下的release-plan.md文件

Q29:哪里查询社区支持的兼容性部件?(注意:部件调速策略等需要基于具体产品进行适配)

A:见https://www.openubmc.cn/zh/compatibility/list

Q30:社区需求类issue处理流程是什么?

A: release_management/openUBMC社区版本需求类ISSUE处理流程与规范.md · openUBMC/release_management - AtomGit

Q31:社区缺陷类issue处理流程是什么?

A: release_management/openUBMC社区版本缺陷类ISSUE处理流程与规范.md · openUBMC/release_management - AtomGit

Q32:为什么gitcode上需求issue已接纳状态,评论命令后,无法往下走到开发中或转测中,提示没权限

A:因为角色不对,不是Contributor,需要作为Contributor等角色加入openUBMC才行,可以找gitcode上openUBMC的管理员邀请加入,管理员在组织成员里可以看到

Q33:如何强制加载某个CSR文件?

A:将Connector对象的IdentifyMode配成2,Presence配成1,把要加载sr文件名取名为Bom_Id.sr即可(其中Bom和Id为Connector对象的属性值,比如Bom是”14191046”,Id是”PSU”,则sr取名14191046_PSU.sr)

Q34:要往openUBMC社区合入新功能,可以直接提交PR合入吗?

A:合入新特性,需要先去RM SIG评审,可以在社区官网日历里找到RM SIG会议,在Etherpad链接里提前登记议题,然后开会时完成评审,即可创建需求issue

Q35:如何在社区申请创建新的组件代码仓?

A:创建代码仓需要去社区TC评审,TC会议时间见社区官网日历

Q36:社区vpd仓有soft.sr结尾的文件,是否都要这么配置?

A:soft.sr是早期的机制引入的,当前社区不需要拆分soft.sr

Q37:发现openUBMC的代码缺陷,怎么处理?

A:到对应组件下提缺陷类issue跟踪,bmc_sdk的问题,提到 AtomGit - 全球开发者的开源社区,开源代码托管平台

Q38:要成为社区的Committer或Maintainer,需要满足什么要求?

A:见 SIG角色说明 | openUBMC

Q39:ipmitool执行ipmi命令报“Unable to establish IPMI v2 / RMCP+ session”错误

A:默认BMC只开启安全性较高的C17秘钥对,ipmitool命令要加”-C 17”参数,且ipmitool版本需要在1.8.18-6及以上

Q40:是否有开源代码与sdk的兼容性配套要求?

A:有,在每个社区发行版的版本发布说明书

Q41:哪里有社区版本解决的问题和遗留的问题?

A:在每个社区发行版的版本发布说明书

Q42:openUBMC发行版生命周期是怎么样的?

A:详见https://www.openubmc.cn/zh/download/lifecycle

Q43:往社区合代码需要提前准备什么?

A:参考https://www.openubmc.cn/zh/contribution

Q44:贡献者协议CLA在哪里签署?

A:https://clasign.osinfra.cn/sign/gitee_openubmc-1732941016829438030

Q45:社区的组织架构是怎么样的?

A:https://www.openubmc.cn/zh/organizations

Q46:哪里可以看到社区的活动规划?

A:https://www.openubmc.cn/zh/events

Q47:为什么date -s 设置时间后又马上变回去?

A:BMC会从时间源周期性的同步准确时间过来,要么NTP要么RTC,所以修改本地时间后过一会就会被刷新回去

Q48:如何设置BMC时间?(从RTC获取)

A:

1、把BMC的NTP使能状态关掉,BMC才会从RTC芯片同步时间
2、OS下执行以下命令
(1)设置东八区时区
timedatectl set-timezone Asia/Shanghai
(2)RTC使用UTC模式
timedatectl set-local-rtc 0
(3)关闭NTP
timedatectl set-ntp false
(4)设置本地东八区时间
date -s “2026-08-01 10:30:55”
(5)写入RTC(自动转UTC存入芯片)
hwclock -w --utc
(6)校验
hwclock --show

Q49:为什么BMC时间每次重启后都会恢复到1970年?

A:首先时间戳的起点就是1970-01-01T00:00:00,1就是在这个时间的基础上过去了1秒,那么复位后,BMC肯定是没有时间戳的,自然就是1970,等到拿到时间戳后才会恢复

Q50:ping BMC管理IP时断时续,是什么原因?

A:可能是MAC地址冲突,在OS修改MAC地址:ipmitool raw 0x30 0x90 0x44 0x02 0x20 0x22 0x01 0x90 0x85 0x3b

Q51:写/清空电子标签ipmi命令报错0x80,可能什么原因?

A:当前非标电子标签不支持写/清空,返回0x80

Q52:为什么gitcode上openUBMC没有提交PR的入口?

A:原因是未加入到openUBMC组织,找openUBMC项目的任一管理员邀请即可,有时候加入组织也不行,是因为有的组件需要单独再邀请,找组件管理员邀请即可

Q53:如果要给社区官网、论坛、代码托管门户提建议,可以怎么做?

A:到infrastructure sig会议申报议题反馈,链接 infrastructure | SIG中心 | openUBMC

Q54:为什么电子标签写扩展域多次报错0xc9(Parameter out of range)

A:扩展域最长写入501字节,超过则报错0xc9

Q55:为什么电子标签写入成功,复位后消失

A:标准电子标签写入eeprom即持久化,所以大概率是写入操作异常,由于写eeprom是异步操作,所以资源树会正常更新,过滤frudata日志会记录写入结果,一般是eeprom异常

Q56:ipmcget -d fru报错,提示内部错误,可能是什么原因?

A:用telnet进入再查询一次,如果能查询,就说明某个fru有非法字符
非法字符不可能是通过命令写进去的,因为会做校验
一般只有2个场景会造成这个问题:
(1)直接烧录
(2)直接替换带有非法字符的fru

Q57:哪里有社区版本测试策略?

A: QA/Test_Template/openUBMC社区版本总体测试策略模板.md · openUBMC/QA - AtomGit

Q58:哪里有社区版本安全测试策略?

A: QA/Test_Template/openUBMC社区版本安全测试策略模板.md · openUBMC/QA - AtomGit

Q59:哪里有社区版本特性测试方案模板?

A: QA/Test_Template/openUBMC社区版本特性测试方案模板.md · openUBMC/QA - AtomGit

Q60:哪里有测试用例设计模板?

A: QA/Test_Guide/openUBMC社区测试用例设计规范.md · openUBMC/QA - AtomGit

Q61:哪里有社区用例自动化开发规范?

A: QA/Test_Guide/openUBMC社区用例自动化开发规范.md · openUBMC/QA - AtomGit

Q62:哪里有Darwin测试平台的使用指导?

A: 用户指南

Q63:哪里有iTestSmart自动化测试工具的使用指南?

A:下载软件后见工具右上角帮助下拉栏的“操作指南”

Q64:哪里有社区版本SIT DFX测试指导

A:QA/Test_Guide/openUBMC SIT DFX测试指导.md · openUBMC/QA - AtomGit

Q65:开发iTestSmart自动化用例使用什么工具?

A:使用KPTest

Q66:哪里获取KPTest?

A: Index of /QA/

-----------------------------------------------------【KP模组相关】-----------------------------------------------------

整体FAQ见 模组开发FAQ(开发构建问题持续补充)

Q1:1711模组(也叫BMC模组)是否预置了BMC固件?
A:是,1711模组出厂flash里已经烧录了BMC固件,用于BMC软件能启动和升级客户自己定制的BMC新固件。

Q2:1711模组出厂自带固件是openUBMC吗?如果不是,能升级到openUBMC吗?
A:当前920/920S/920Lite模组配套的1711模组预置的BMC固件是基于iBMC V2架构的,不是openUBMC(iBMC V3架构),支持升级到openUBMC固件。

Q3:openUBMC已经适配了模组相关产品吗?
A:BMC模组出厂自带的固件,适配的是模组的demo载板,且不是openUBMC的,对于客户自己的载板,openUBMC支持公共特性,针对载板和模组需要做适配。

Q4:1711模组BMC默认管理网口IP是什么?
A:bmc默认的ip是192.168.2.100

Q5:1711模组BMC启动后,无法ping通BMC默认管理ip 192.168.2.100,默认账户无法登陆串口,提示密码错误
A:可能原因是模组载板PlatformId或BoardId不符合预期(从开机串口日志可以看这两个Id,早期1711模组自带的BMC固件对Id有要求),导致关键的配置文件都没加载,将裁板的PlatformId配置成0,BoardId配置成0xff即可解决。

Q6:为什么1711模组BMC一键收集上来的日志,app_debug日志里有很多反复报错?
A:因为BMC模组预置的固件,不适配客户自己开发的模组载板(对于模组demo板,也仅仅是保障bmc软件能启动成功,能升级,不可用作商用),所以对于大家各自自己开发的模组载板,BMC模组预置的固件是用于启动的,不建议直接拿去发货给客户,大家需要针对自己的载板,做BMC软件的适配和功能测试,务必确保没有大量快速刷的报错日志(日志存储容量有限,会导致有用日志被冲刷,而且对BMC模组flash寿命也有影响)

Q7:如果要用openUBMC适配鲲鹏模组,有什么可以参考的配置吗?
A:目前鲲鹏920/920S模组和工具载板(demo板)的参考配置已合入社区,支持的功能见PR上附的验证报告,大家可以在此配置基础上,根据自己的产品做差异化开发,也欢迎大家把自己实现的功能合入到社区。
920模组和工具载板参考代码链接 支持KP920模组-vpd-AtomGit
920S模组参考代码链接 支持920s模组-vpd-AtomGit
920L模组参考代码链接 AtomGit - 全球开发者的开源社区,开源代码托管平台

Q8:如何从BMC模组预置的V2版本升级到openUBMC版本?
A:参考 BMC 3.xx.xx.xx版本升级openubmc指导

Q1:社区版本测试报告在哪里归档?

A: QA/Test_Reports · openUBMC/QA - AtomGit

Q2:openUBMC规格基线有哪些?

A: release_management/openUBMC 需求规格基线.xlsx · openUBMC/release_management - AtomGit

Q3:openUBMC性能规格哪里看?

A:可参考: QA/Test_Guide/openUBMC SIT DFX测试指导.md · openUBMC/QA - AtomGit

Q4:新增ipmi命令指导

A: 【教学培训篇】新增IPMI命令

Q5:社区特性设计文档在哪里归档?

A: https://gitcode.com/openUBMC/docs/tree/main/docs/zh/development/design_reference/key_feature

Q6:社区特性详细设计文档在哪里归档?

A:归档在对应组件的doc下面,以rackmount为例: rackmount/doc/26.06 · openUBMC/rackmount - AtomGit

Q7:openUBMC关键特性的介绍在哪里?

A: docs/docs/en/development/design_reference/key_feature · openUBMC/docs - AtomGit

Q8:屏蔽告警后恢复出厂是告警否恢复?

A:会恢复,屏蔽告警是local模式,不会写入还原点

Q9:硬盘适配发现厂家信息显示ATA,怎么排查定位?

A:一般是由于代码中没有适配对应厂商的vendor id,优先结合OS下查出来的结果进行排查;

Q10:社区需求的提交流程是怎样的?

A:登录RM-SIG→查看历史会议纪要→填写相关的议题信息,后续会在RM-SIG上评审是否通过;

Q11:上电之后kvm显示nosignal,如何定界?

A:在近端通过VGA口接显示屏查看,由于KVM从VCE寄存器获取的数据与VGA同源,若近端显示屏同样无显示,说明数据源头本身就没有图像数据,则可以交由硬件继续定位;

Q12:系统事件和传感器事件的差异?

A:传感器事件是严格按照IPMI标准协议规范来定义的(即sel),是业界通用的规范,系统事件是精细化告警的呈现,当达到事件触发条件就会生成告警或事件

Q13:VRD升级有哪些注意点?

A:升级必须在系统下电状态执行,否则可能影响CPU供电,升级主要包括4个阶段:准备阶段、 处理阶段 、完成阶段、生效阶段。

Q14:社区加入某个SIG组后,如何参与对应的SIG例会?

A:首页点击进入SIG中心,找到对应的SIG,点击订阅邮件,完成认证后即可在openUBMC 开发者日历中看到对应的议程

Q15:如何查看openUBMC的兼容性列表?

A: openUBMC

Q16:天池组件的服务器如何了解其硬件形态?

A:以TS2280为例,在https://support.huawei.com/enterprise/zh/doc/EDOC1100297711/be23682d用户指南中看到其物理结构

Q17:硬件自发现是什么意思?

A:BMC启动时,会自动发现支持天池协议的组件,支持不同产品的灵活配置

Q18:iBMC_sdk下载链接在哪?

Q19:精细化告警报内存in poor contact是什么原理?

A:两种场景:1、10秒发生10个CE里存在至少2个Rank同号Device报错,且该同号的Device内累计报错Bank数量≥3;2、10秒10个CE里存在至少一个Device中BG≥2,且该Device内累计报错Bank数量≥3

Q20:内存的CE overflow上报是什么原理?

A:内存Rank每次CE都会进行计数,当计数达到一定阈值后(BIOS菜单可设置)后FDM会上报一次 CE_OverFlow

Q21:内存的CE Bucket上报是什么原理?

A:对内存同一Rank、同一Bank、不同颗粒连续3次CE_OverFlow后,BIOS会上报CE_Bucket

Q22:定制化verify执行后报错,如何查看失败的定制化项?

A:查看对应0502xx_save.txt文件,里面有打印失败的定制化项

Q23:什么事持久化?

A:持久化是指数据在应用程序运行结束后,仍然能在存储介质中保存,并能够在后续的程序启动时被重新读取和使用的特性。持久化数据一般保存在磁盘等可永久保存的存储设备中。目的是数据不丢失,在BMC复位重启或掉电重启后仍能为用户提供正常服务。

Q24:持久化数据库在哪个目录下?

A:dump_info\AppDump\persistence 目录下,每种持久化类型的数据导出到一个json文件

Q25:OS无法上电的定位步骤?

A:检查环境上是否有上电超时或异常下电的告警,如果有告警,则表明cpld逻辑上报了故障信息,优先找硬件定位,按上电后检查单板是否上电,如果是M4状态,说明单板已经上电,可找BIOS定位

Q1:如何带内os侧访问bmc(适用于无法直接访问bmc的场景)?

A:
1.通过ipmitool工具带内发送ipmi命令进行操作
2.os的网络有veth设备正常up的情况下,可以通过ssh Administrator@fe80::9e7d:a3ff:fe28:6ffa%veth ssh登录bmc

Q2:查询不到sr里配置的对象有什么排查思路吗?

A:
通过GetObjects方法可以查询某个position下框架分发的对象,例如
busctl --user call bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/01011604 bmc.kepler.ObjectGroup GetObjects a{ss}s 0 general_hardware

如果分发对象是正常的,则问题出在对应对象管理的组件侧。

Q3:装备定制项问题如何排查

A:
查看装备定制项FAQ

Q4:怎么从零开始搭建openubmc构建环境

A: 参考文档中心资料https://www.openubmc.cn/docs/zh/development/quick_start/prepare_environment/env_introduction.html

Q5:出现web缺少页面,或部分北向接口无法调用调用

A: rackmount组件有oem的options配置
webui组件有ldap_enabled、energy_enabled等options配置
检查配置是否打开

Q6:构建组件失败,报CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage

A: 使用ls /opt命令检查opt下的文件目录
查看/opt/RTOS和/opt/hcc_arm64le是否存在,若不存在,则该环境缺少编译需要的依赖组件
初始化本地环境bmcgo build -t install_sdk
此命令也初始化本地组件构建时的dt相关二进制
同时切换1711、1712时的差异也会导致组件build失败,需要删除重新/opt下路径install_sdk

Q7:openUBMC如何一键拉取代码?

A: 在manifest下面执行bingo fetch命令,拉取的代码在source_code目录下

Q8:升级330基线版本后网络不通

A:330版本platform.sr缺少配置 Ipv4/Ipv6/EthernetInterface对象
当前630版本默认无配置时该对象也会正常上树

Q9:openUBMC启动时间长(大于四分钟)

A:查看framework.log abnormal关键字,是否有异常组件。
build/product/BMC/openUBMC/rootfs/etc/system/system/multi-user.target.wants路径下的.service文件必须为软链接

ls -l build/product/BMC/openUBMC/rootfs/etc/systemd/system/multi-user.target.wants

如果不是软链接则在manifest执行以下命令:

cd build/product/BMC/openUBMC/rootfs/etc/systemd/system/multi-user.target.wants

ls *.service |awk -F’,’ ‘{print $1}’| xargs -P 12 -I {{}} ln -sf ../{{}} {{}}

Q10:如何出包自带ssl证书

A:manifest目录下rootfs/opt/bmc/trust/partner/ssl路径下放置证书,会在升级后没有证书的情况下自动导入,当前只支持导入空密码的证书

Q11:构建时,签名阶段出错怎么排查

A:构建的temp/log/task.log的error信息一般会提示哪里有问题

如果是manifest.tml配置问题
manifest仓库中的manifest.yml文件中配置有
schema: /usr/share/bingo/schema/manifest.schema.json

可以通过该文件查看关于manifest.yml文件如何配置

其中包括signature、gpp两部分,可以看是否按照要求配置

Q12:journal日志信息提示一直在重启devmon组件

A:devmon是南向部件驱动相关组件
如果manifest.yml删除了配置

  • conan: libmcpp
  • conan: component_drivers
  • conan: devmon
    则需要把对应的devmon.service也删除

Q13:新增组件如何配置启动

A:1.选择使用现有的.service例如hardware.service(使用新增组件单独增加的.service文件也可以)
修改build/product/BMC/openUBMC/rootfs/opt/bmc/apps/hica/subsys/hardware/config.cfg添加app
2.修改build/product/BMC/openUBMC/rootfs/opt/bmc/conf/launch_control.json
对应的.service中增加组件配置

Q14:如何升级第三方签名的包

A:1.替换hpm签名

2.能拿到第三方的公钥证书的情况下,放置manifest目录 rootfs/opt/bmc/trust/partner/rootca.der
后构建出的包可支持第三方签名包升级

Q15:openUBMC如何通过出包修改网络相关配置

A:5.13.0.1bmc_sdk及之后的版本支持通过csr对象配置网络,具体支持属性可查看bmc_network的model.json,Ipv4/Ipv6/EthernetInterface对象的可配置属性

Q16:构建时闭源组件缺包,需要源码构建,导致构建出包失败,如何查看哪里有问题

A:搜索temp/log/task.log、temp/log/conan_Build_XX.log(XX为组件名)文件中的关键字[options],可以查看构建的参数。通过conan list XX/X.X.X@openubmc/stable:* 排查是否对应option的Package包缺失,或者manifest.yml配置参数不合理

Q17:conan2的二进制本地怎么整理和合并?

A: conan2的本地缓存路径在~/.conan2/p目录下,发布二进制压缩包格式为tar.gz,解压后的dependencies目录等效于p目录,本地合并二进制可以将待合并的二进制放到~/.conan2/p_tomerge目录,运行以下脚本进行合并

Q18:硬件代理hwproxy报错问题如何排查

framework.log中如果出现i2c read fail或 i2c write fail,可以找统一时间一键收集日志dump_info\LogDump\linux_kernel_log中的i2c链路报错
格式为I2C-bus-RT<xfer_ret|ret>] M<addr|flag|protocal|retries|timeout> L<wlen|rldn|cmd_len> C<wcnt|rcnt|outstanding> E<cmd_error|msg_error|status|abort_source> I<irq_status|irq_raw_status|irq_mask>

如[I2C-11-RT<-5|-5>] M<0x4a|0x1|0x0|1|10> L<1|2|0> C<1|0|2> E<0x801|0x0|0x0|0x1> I<0x0|0x710|0x0>
关注返回码和错误码

Q19:本地构建组件时总是拉远端最新依赖的版本,如何使用想要的配套版本

A:在manifest里构建一次(保证本地缓存),然后组件build时加个-nc参数,就会用本地缓存去构建

Q20:升级csr时异常断电(或其它原因)导致csr对象加载不到无法升级,如何恢复

A:bmc的升级包可以内置一个较高版本的csr,通过修改connector属性手动加载,然后升级csr的升级包恢复

Q21: bmc的sgmii接交换芯片无法访问bmc网络

A:platform.sr的EthMac对象中默认是自协商,但是在没有接phy芯片直连交换芯片的场景下,不能使用自协商。
修改以下属性,与交换芯片侧保持一致
“SpeedDuplexEnable”: true,
“SpeedSetting”: 0,
“DuplexSetting”: 0

Q22:升级定制bios启动logo的bios,定制bios未生效

A: 商用版本升级bios是平滑升级,不更新logo那部分的寄存器。如果要生效需要使用全擦升级命令升级

Q1:社区需求ISSUE端到端交付流程
A:参考:

Q2:BMC有几个分区,升级会如何处理
A:iBMC系统存在3个分区镜像

  • 主用分区(active):当前生效分区
  • 备用分区:主用分区镜像的备份,通常主备一致
    • 当主区异常,备区切为主,主区降为备并同步当前主区的镜像,主备一致
    • 升级时主备会一起升级
  • 可用分区:真正承载备用的BMC版本
    • “可用分区镜像倒换”生效可用分区,可用分区切为主,原主分区同步新主分区镜像后切为备,原备用分区切为可用分区
  • 升级时:主用分区与可用分区互换,同时升级主分区+备分区

Q3:如何通过BMC转发ipmi命令
A:桥接转发命令:

# 例:0x02是数据长度,0x06 0x01是要转发的命令
./ipmitool.exe -I lanplus -H 90.94.13.110 -U Administrator -P password -C 17 raw 0x30 0x93 0xdb 0x07 0x00 0x7a 0x01 0x2c 0x02 0x06 0x01

Q4:为什么新建的组件拉起会有异常
A:加入到某一进程拉起的组件(如hardware、framework等进程),需要在manifest中配置组件拉起白名单:build/customization/prototype.py,在subsys_startup_components中新增组件名

Q5:telnet连接如何访问busctl
A:执行export $(cat /dev/shm/dbus/.dbus)

Q6:如何在调试版本中默认带上telnet
A:将busybox组件打包到manifest中带上即可

Q7:北向映射器rackmount组件的lua脚本中如何加日志打印调试
A:配置类型为script的lua代码无法打印日志,配置类型为plugins的lua代码中可以直接使用通用的日志接口

Q8:如何让日志不受限流机制的影响,强制打印
A:如:log:error_easy(fmt, ...),日志接口名加上_easy后缀

Q9:如何关闭日志限流机制
A:在/dev/shm/dbus/.dbus里加一行MCC_DEBUG=1重启相关进程即可关闭日志限流功能

Q10:如何查看某一个Position下对应的所有对象资源
A:例:busctl --user call bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/00 bmc.kepler.ObjectGroup GetObjects 'a{ss}s' 0 'hwdiscovery'

Q11:rackmount中的配置文件在环境上如何修改?
A:实机环境上json映射文件在对应的接口组件目录下,如:/opt/bmc/app/redfish,可以直接修改进行调试

Q12:EEPROM中的csr和内置的csr的选择策略和优先级是怎么样的?
A:比较Eeprom中读取的格式版本号和内置CSR的格式版本号,选择版本较高的,格式版本一致则比较数据版本DataVersion,选择版本较高的,若数据版本也一致则优先选择加载内置的CSR

Q13:组件拉起出现异常,总是自动重启,不方便定位问题根因怎么办?
A:关闭框架的组件运行状态检查:在mdbctl下执行 attach maca setmonitorstatus running false

Q14:如何记录和监控内存占用情况
A:常用命令:

  1. top -c -e M
  2. cat /proc/meminfo | grep -E '^MemTotal|^MemFree|^MemAvailable' | awk '{printf "%s: %.2f MB\n", $1, $2/1024}'

Q15:组件如果是通过C代码开发的,如何上环境调试?
A:C代码不像lua代码可以直接在环境上修改源码调试,通常可以在本地构建出对应的so,然后去环境上直接替换(通常在/usr/lib64下),重启对应的服务后可以生效

Q17:如何内置默认的证书用于调测?
A:以ssl证书为例,打包时放在目录/opt/bmc/trust/partner/ssl/ssl.p12下,升级后会默认自动导入

Q18:如何查询所有组件的busctl命令的用法
A:1)dbus接口支持的全部方法在环境上通过dbus命令都可以查询到,通过busctl --user introspect bmc.kepler.hwdiscovery <对象path>可以看到某一个对象下挂的每一个方法以及需要的入参数量和类型;2)官网文档也有部分介绍和示例:account | 文档中心 | openUBMC

Q19:社区当前支持哪些BMC芯片
A:可以根据目录结构判断:manifest/build/product/BMC/,该目录下每一个单独的目录对应一款BMC芯片的构建工程

Q20:新的BMC芯片如果要接入社区应该如何入口?
A:参考:bcal:基于工厂模式和动态加载机制的 BMC 系统硬件抽象层框架项目 - AtomGit 社区提供一个bmc soc驱动适配层以及一套配套的接口实现上层业务和芯片驱动解耦,不同的bmc soc可以通过实现这一条标准的接口规范实现接入社区版本

Q21:BMC芯片是否一定要搭配eMMC
A:是,openUBMC社区版本当前的设计方案是从eMMC启动

Q22:BMC如果登录不上如何排查?
A:如果无法ping通, 1)串口登录参考1.1查询关键信息,比如网口、路由是否存在等;2)wireshark抓包./tcpdump -i eth2 -s 0 -v -w caps_eth2.pcap ,查看报文是否到达网口;3)查看iptables规则:报文是否被拦截等

Q23:BMC ssl证书为什么导入不上?
A:首先排查系统时间,如果时间异常需要使用date命令更新时间尝试。大概率是系统时间异常导致证书导入报证书过期错误

Q24:BMC时间有哪些更新方式?
A:1)从RTC芯片同步时间;2)配置NTP服务器;3)调用设置时间的资源协作接口,可以从mdb仓查询

Q25:BMC时间更新,NTP与RTC的优先级是怎么样的?
A:开启ntp服务后,就会停止从rtc同步时间,但是ntp需要配有效的ntp服务器地址才可以进行时间同步

Q26:组件健康状态检查机制会自动重启组件和服务,如何临时关闭?
A: 在mdbctl中执行

attach maca
setmonitorstatus running false

Q27:如何在出包的时候关闭MACA的组件健康状态检查?
A:修改manifest仓中产品目录下的mc_control.json文件配置,将其中的使能状态置为false

Q28:如何追踪监控ipmi数据收发?
A:以BT通道为例:busctl --user call bmc.kepler.ipmi_core /bmc/kepler/Debug/IpmiCore/TraceIpmi bmc.kepler.Debug.IpmiCore.TraceIpmi Trace a{ss}bsyyss 0 true "bt" 0xff 0xff "" "file" 记录下来的消息会保存在/tmp/ipmi.txt中

Q29:持久化类型有哪些种类
A:临时持久化(TemporaryPer) /run/persistence/per_temporary.db
复位持久化(ResetPer) /opt/bmc/pram/persistence/per_reset.db
掉电持久化(PoweroffPer) /data/trust/persistence/per_poweroff.db
永久持久化(PermanentPer) /dev/mmcblk0p8

Q30:日志中如何查看持久化数据信息
A:通过一键收集查看持久化数据库内容,收集后持久化数据存放在 dump_info\AppDump\persistence 目录下,每种持久化类型的数据导出到一个json文件,可以通过表名进行搜索

Q31:openubmc_sdk.lock文件如何更新组件版本号
A:使用命令:bingo lock -u 组件名,按提示一步步操作即可

Q32:软件包升级大小限制默认为110M,如何临时解除限制
A:1、必须带上的公共修改:
nsm组件:在dist/user_conf/rootfs/opt/bmc/web/nginx/conf/nginx.conf 中配置 client_max_body_size
2、web接口需要修改:
webui组件:搜索“文件大小限制”关键字,修改限制的大小值
web_backend组件:src/lualib/firmware_inventory.lua FILE_SIZE_110M
3、redfish接口修改:
redfish组件:src/lualib/UpdateService/firmware_inventory.lua 有个FILE_SIZE_110M

Q33:组件如果构建报错,如何定位组件依赖关系和实际生效的构建选项
A:复制报错结尾的create命令:ERROR: 执行命令 conan create xxx 并执行,查看生成的json文件,里面有详细的组件构建信息

Q34:manifest中的管脚复用ioconfig.sh如何配置
A:如下规则

每4字节一组写入,以第一组数据0x07FF01EF为例
二进制数据:00000111 11111111 00000001 11101111
对应io复用表中 bit31 -> bit0(大端,与索引顺序相反排布)

Q1:社区docs仓库更新说明

A: docs/release_notes.md-代码预览-docs:基于 Node.js 的社区文档中心项目 - AtomGit

Q2:如何往openUBMC插件新增自己想要的CSR检查项

A:在openubmc_dsl_rulepack仓库提交issue: AtomGit - 全球开发者的开源社区,开源代码托管平台

Q3:如何进行装备定制

A: 装备定制化介绍 | 文档中心 | openUBMC

Q4:BMC密码忘记了怎么处理

A: S920X20/S20机型中,如何针对BMC忘记用户名密码这种状态给出解决方法?

Q5:如何申请itestsmart工具使用

A:

申请license步骤如下:
一、打开darwin.openubmc.cn并登录(需要注册openubmc帐号)。
二、如果页面状态码为418,请提供外网ip用于添加ip白名单
三、 如果用户未拥有合作伙伴角色,需要提供账号名用于添加角色权限。
四、拥有角色权限后点击上方的工作台进入,再点击左侧的license申请,点击创建申请,并按照要求填写。
五、等待审批,审批完成后,进入license申请页面,点击最右边的下载。

Q6:代码/bmc_sdk和bingo/bmcgo配套关系

A:原则上要使用配套的bingo/bmcgo配套对应的社区发行版本的开源代码和bmc_sdk

Q7:社区是否有提供AI问答能力

A:下载openubmc studio 2.0.3版本,会附带支持社区RAG的MCP插件,使用claude等code agent可以外接。下载链接: openUBMC

Q8:社区是否有提供一键日志解析工具

A:下载openubmc studio 2.0.3版本,会附带一键日志解析工具bmcstudio_log_reviewer,可以直接打开一键日志压缩包打开日志。

Q9:社区论坛发帖所带附件大小限制

A:论坛限制附件不可大于20MB,如公司内网还有其他限制,则以最小限制为准。

Q10:如何模拟一张OCP卡加载(其他PCIE也类似)

A:

mdbctl setprop set Connector_OCP_1_0101 bmc.dev.Connector Id 19e51822

mdbctl setprop set Connector_OCP_1_0101 bmc.dev.Connector AuxId 19e5d136

mdbctl setprop set Connector_OCP_1_0101 bmc.dev.Connector Presence 1

Q11:社区开发者如果想烧片怎么办?

A:当前bingo不支持烧片能力,有诉求需要联系相关项目支持。

Q12:硬盘热插拔概率性出现信息获取不到

A:一般是因为硬盘插上后,内部的硬盘协议初始化没有完成,导致的时序问题,要基于实际通信的协议抓包定位。(临时规避可以延后BMC获取信息的线程,查看是否现象缓解)

Q13:当前社区是否支持AI检视

A:因为算力有限,部分仓开启了自动智能检视能力,其他仓库需要评论触发,后续会持续扩展。(2026/7/16)

Q14:社区当前是否有部件相关测试工具

A:2026年630已支持自动测试工具,当前已支持网卡和GPU,使用指导详见 QA/Test_Code/component_score/README.md · openUBMC/QA - AtomGit

Q15:社区版本精细化告警条数上限是多少条?

A:10000条(2026年7月)

Q16:社区版本传感器sel条数上限是多少条?

A:4000条(2026年7月)

Q17:社区openUBMC当前有几种自动化测试用例框架

A:基于Kptest的itestsmart和robot framework

Q18:如何修改带外ipmi命令发送的并发数?

A:通过配置导入导出修改RmcpMaxConcurrentSessions

Q19:下载了2.0.3的openUBMC studio并搭配opencode插件时,没有自动配置社区RAG MCP

A:是由于没有默认安装“openUBMC MCP HOST”插件,手动安装插件后可解决。

Q20:社区需求合入前有哪些必要动作?

A:在RM SIG例会添加议题,评审需求是否接纳,在hardware sig等业务sig评审方案,涉及接口变更在interface sig评审接口变更方案,QA SIG评审测试报告后方可合入。

Q21:当前社区日志刷屏测试标准。

A:1分钟1次,连续5分钟打日志算刷屏。

Q22:当前openUBMC redfish接口的分页规则是如何的?

A:接口默认分页,不分页返回的接口需要配置白名单。

Q23:studio MCP访问不通

A:设置中的lightrag属性不能设置,需要去掉。

Q24:组件启动状态检查失败次数乱序,看起来有两个检查任务,如:

policy blocked the reply, the reply timeout expired, or the network connection was broken., check count: 1
policy blocked the reply, the reply timeout expired, or the network connection was broken., check count: 4
policy blocked the reply, the reply timeout expired, or the network connection was broken., check count: 2

A:拉起了多个组件服务,需组件自行排查是否存在启动配置错误或其它不合理修改

Q25::新增的组件启动失败:maca ERROR: init.lua(240): [sync_mgmt]StartupCheck failed, error: org.freedesktop.DBus.Error.ServiceUnknown: The name bmc.kepler.sync_mgmt was not provided by any .service files, check count: 4

A:日志表明组件没有启动,重点检查 manifest 仓中的 launch_control.json 启动配置文件中是否有配置新组件,组件 mds/service.json 模型中的 deployConfig 字段对应的值是否配置为正确的子系统.service

Q26:BMC发生重启,但framework.log、operation.log、running.log 日志没有maca组件重启相关的打印

A:在bmc_health 组件对应重启时间点日志中发现重启记录,原因是bmc_health组件运行了监控共享内存使用的脚本,当共享内存使用超过80%时,会执行 reboot 重启BMC

Q27:解压后无预期文件

A:该文件内存在与压缩文件同名的硬链接,导致解压过程中压缩文件被覆盖

Q28:通过属性配置了远程引用对象后,可以调用到该对象下的方法,但是无法通过get_prop获取到的引用对象获取属性

A:引用对象时需要通过在model.json配置refInterface,依赖方法或属性所在的接口,涉及多个接口时需要使用refInterfaces,获取到引用对象后需要obj[bmc.kepler.xxx]:read()去使用

Q29:日志fail to retrieve the value of Scanner_ShortPressPowerOffEvt_0101 from aggregate, and it will no longer be updated by aggregate是什么意思

A:代表不会从dfx读值,只通过scanner自身读值,如果scanner配置了dfx属于非正常日志,未配置属于正常打印

Q30:scanner配置的防抖对象的的配置是否可以动态变化

A:防抖配置不能动态变化

Q31:signal match去监听以及通过调用propertychanged去监听有什么区别

A:signal match一般是监听自定义信号的 propertychanged是框架封装专门监听属性变更信号的

Q32:rpc调用的超时时长10分钟可以指定吗

A:上下文字段Timeout可以指定超时时间

Q33:event触发告警时,告警描述与实际告警值不符

A:告警对象的DescArg配置了同步存在触发告警时还未接收信号的场景,告警描述需要配置为引用

Q34:CSR的配置里面,如果上下级csr,bus对不上会有什么问题

A:导致下一级csr无法正常加载

Q35:为什么要有BMC?

A:BMC提供了人机接口(Web可视化、CLI命令,本地VGA接口),以及机机接口(其他设备与BMC通信,全程不需要人手动操作,用来自动化批量管理服务器,Redfish自动调取BMC数据、下发配置、批量升级固件,IPMI协议接口、SNMP协议)。

Q1:缓存机制中,write()返回是否等于数据落盘?

A:write()返回≠数据落盘

write()的返回仅表示数据已经成功提交到系统的写缓存区,并不等于数据已物理写入存储介质。在新款MCU,SSD,带缓存的存储控制器等场景下,该延迟可能显著增加

Q2:是不是用read()进行回读校验就可以保证数据落盘?

A:如果回读数据时未使用O_DIRECT标志,读取的同样是缓存中的数据,而非物理介质上的数据,即使回读校验“通过”,物理介质上的数据可能已经损坏或不完整。

Q3:如何保证数据落盘

A:使用fsync()保证数据落盘,fsync()返回成功后才执行后续依赖该数据操作,如果用回读校验,需要在fsync()和close()之后进行

Q4:如何对调速策略进行验证

A:

1. 修改传感器温度至目标值,查看风扇转速

2. 修改传感器温度至全速值,查看风扇转速

3. 修改传感器状态为一场,查看是否触发失效调速

4. 触发调速时,查看风扇数量是否一致

Q5:电压、功率类传感器读数如果数值超大时,需做什么特殊处理?

A:电压、功率类传感器读数如果数值超大会发生翻转,此时可以用ThresholdSensor的M属性设置,根据传感器计算公式,传感器最大值的读数为读数*M

Q6:热插拔机制自验项

A:

1.后处理机制是否完善

2.对象是否正常卸载

3.相关告警,传感器等属性是否恢复为默认值

4.是否存在日志刷屏

Q7:时间跳变的常见原因

A:

1.1970的跳变:复位后,时间戳未获取前是1970-01-01的初始时间,此时等待时间戳刷新即可

2.复位后1970跳变到了某个时间,并继续跳变:可能与时间戳的持久化有关,像强制重启这类的操作,会出现持久化的时间戳比较旧的情况,并且没有机会去持久化当前最新的时间戳,这类场景有app log”set bmc_time time_stamp=%s by persistent data”

3.时间源跳变:在NTP开启的情况下,就只从NTP读取时间,ipmcget -d ntp 如果Status为enabled,说明开启了,`Synchronize` 表征同步成功没有

此时分两种情况

(1)NTP同步成功后产生的跳变–说明RTC和NTP时间不一致,需要排查RTC和NTP哪个有问题

(2)NTP一直开着,突然跳变的–排查是否是NTP服务器的问题

(3)NTP没开–需要查看RTC芯片的时间,如果BMC和RTC芯片时间一致,需要找硬件同事继续排查

Q8:定制化需更新社区文档

A: 服务器出厂定制化配置 | 文档中心 | openUBMC

Q9:新增定制化的自验证注意事项

A:

config.sh主场景成功验证

verify.sh持久化验证——新增定制型必现掉电持久化,避免定制丢失

多次执行验证——可能会出现第一次定制化成功,第二次失效的问题,新增装备定制项必须保证3次验证

Q10:CPLD升级失败,有以下日志打印:“general_hardware NOTICE: process.lua(179): [cpld]get cpld device info failed”

A:此处日志打印为CPLD扫链操作,此处报错通常是说明CSR中链路配置不正确,或是硬件链路故障

Q11:CPLD升级扫链获取哪一份svf文件的流程

A:hpm解包后,会有多个svf文件,升级时,需要判断当前待升级的CPLD厂商信息,决定加载哪一份svf,扫链后会生成id_list,使用id_list拼出待加载的文件名

Q12:版本命名规范

A: 生命周期 | openUBMC

Q13:Issue处理规范

A:

缺陷issue: release_management/openUBMC社区版本缺陷类ISSUE处理流程与规范.md · openUBMC/release_management - AtomGit

需求issue: release_management/openUBMC社区版本需求类ISSUE处理流程与规范.md · openUBMC/release_management - AtomGit

Q14:openUBMC开源社区开发流程规范

A: AtomGit - 全球开发者的开源社区,开源代码托管平台

Q15:openUBMC社区编程规范

A: docs/docs/zh/development/specifications/coding_standards.md-代码预览-docs:基于 Node.js 的社区文档中心项目 - AtomGit

Q16:如何成为commiter/maintainer,commiter/maintainer的职责

A: SIG角色说明 | openUBMC

Q17:课程中心地址

A: 课程中心 | openUBMC

Q18:兼容性列表新地址

A: openUBMC

Q19:如何查询传感器列表

A:

1. web查询,系统管理→系统信息→传感器

2. ipmi查询,带外查询:ipmitool -I lanplus -H -p 623 -U -P -C 17 sensor list

3. redfish查询

4. CLI查询 ipmcget -t sensor -d list

Q20:CLA签署如何签到企业

A:

CLA签署到企业一定要使用企业邮箱登录,使用个人邮箱会签成个人贡献者

使用企业邮箱签署的前提是,企业已经加入CLA企业签,且设置了一名管理员

CLA签署全流程: 《企业签加入 openUBMC 社区:CLA签署全流程指南》 | openUBMC

Q21:CLA如果签署成个人了应该如何修改为企业

A:需要进行两步操作

首先,在CLA签署页面,点击“企业贡献者登记”,使用企业邮箱重新签署,如果输入企业邮箱后未弹出公司选项,请确认企业CLA是否注册

第二步,登录gitcode,点击个人设置,在电子邮箱处,将企业邮箱设置为默认邮箱

Q22:为什么企业签署CLA后,点击“企业贡献者登记”,输入企业邮箱后未弹出公司选项

A:企业签署CLA后,签署人会变成超级管理员,需要由超级管理员设置一名管理员账号后,才能进行签署

Q23:openUBMC ppt模板

A: community/docs/openUBMC_ppt模板v1.pptx-代码预览-community:社区治理、活动及开发者贡献指南平台 - AtomGit

Q24:docs仓文档上库要求

A: docs/README.md-代码预览-docs:基于 Node.js 的社区文档中心项目 - AtomGit

Q25:skillmarket上库目录结构要求

A: skills-marketplace/docs/README.md-代码预览-skills-marketplace:基于 VS Code 生态的 AI 技能管理平台项目 - AtomGit

Q26:openUBMC一键日志可视化工具分享和使用介绍

A: openUBMC一键日志可视化工具分享和使用介绍 | 课程中心 | openUBMC

Q27:openUBMC一键日志可视化工具代码地址

A: bmcstudio_log_reviewer:基于 Web 技术的日志可视化与诊断工具项目 - AtomGit

Q28:直播课录屏在哪里获取

A:社区课程中心,当前已上传直播课程: openUBMC社区工程实践分享——从设计方法到产品落地 | 课程中心 | openUBMC

Q29:直播课如何预约

A:关注openUBMC公众号,会提前发布直播预告,通过公众号内容进行预约即可

Q30:装备测试项指的是什么

A:是指一组用于检验被测硬件(器件、通路等)质量是否符合预期要求的软件对象,能够识别生产加工过程中产品的异常和缺陷

Q31:PCIe插槽和代码的抽象对象的对应关系

A:

插槽名称 代码抽象 BMC获取该信息的位置 注释
PCIe槽 PCIeAddrInfo CSR上报(在IEU一级) 作为IEU的下行(downstream)接口
UBCDD接口 BusinessConnector CSR上报(在哪个板就配置在哪一级) 存在上行和下行端口
SerDes接口 SerDes CSR上报(在BCU一级) 描述PCIe桥,分为一般设备的PCIeCore链路和存储设备的SAS链路

Q32:BIOS导入配置后未生效如何排查

A:1. 确认导入配置后是否重启os

2. 确认导入的配置是否存在联动修改情况

部分导入属性存在联动修改情况,例如修改a属性为enable会联动修改b属性
若导入的配置既有a属性又有b属性,且a属性在b属性之后,则导入的b属性修改后会被a属性联动的修改覆盖导致不生效

Q33:BIOS导入配置失败如何排查

A:

1. 确认导入的配置是否符合依赖关系

导入配置时会对依赖关系进行判断,如果a属性依赖b属性,则导入a属性时b属性的值不为对应值时导入会失败

Q34:对象持久化

A:

openUBMC 的对象持久化分为两大类:

维度 c_object(DB 持久化) 非 c_object(MDB + SR 持久化)
判定 业务代码用 c_object('类名') 创建类 业务代码用 class(基类) 创建类
属性访问 self.属性 = 值(直接,自动落库+发信号) self:set_prop('名',值) / self:get_prop('名')(显式,不自动落 DB)
与 DB 表关系 对象即是 DB 记录,属性变更自动同步 对象不自动落 DB,但可通过 db 句柄查询 DB 表(db.表名(条件))
代码生成 model.json 含 tableName → 生成 DB 表与 c_object 注册 无 tableName,不生成自家 DB 表
存储引擎 SQLite(lsqlite3) 属性持久化走 SR 配置文件(CSR)/ 共享内存(SHM)
典型场景 结构化、多记录、需查询/聚合的数据 单例资源对象、硬件在位对象、运行态属性

Q35:CPLD生效完成,环境AC上电后,立即升级CSR失败。失败日志中有如下打印

MactchRules[BiosInPostStateHWSR]exist,FirmwareType[HWSR]is not allowed upgrade now

A:CSR升级有规则限制,当bios处于POST阶段时不允许升级CSR。

Q36:CSR升级过程中,代码中有关闭写保护的操作,但未从示波器上观察到写保护高电平变为低电平

A:首先应该确认待升级的SRUpgrade对象是否正确配置了WriteProtect属性,可以使用mdbctl命令手动向Accessor写1,检查能否观察到电平变化。

Q37:BMC异常重启常见原因

A:

  1. 内存不足出发BMC操作系统OOM机制
  2. 内存不足BMC无法给BMC芯片喂狗导致BMC重启
  3. CPU占有率过高BMC无法给BMC芯片喂狗导致BMC重启
  4. 硬件问题(通常为emmc)导致BMC无法给BMC芯片喂狗导致BMC重启
  5. DDR问题导致BMC操作系统内核崩溃进而触发BMC重启
  6. 框架异常重启(coredump)
  7. 驱动异常崩溃

Q38:BMC常见挂死原因

A:

  1. EMMC损坏
  2. 文件系统损坏(EMMC损坏也是原因之一)
  3. 周边组件问题(CPLD或BIOS)导致BMC PCIE模块异常
  4. platformID或者boardID管脚问题

Q39:常用日志和作用

A:

  • Remote_log或eo_sel:记录BMC重启时间
  • 操作日志:operation.log
  • 框架日志framework.log:记录BMC重启原因及模块异常
  • dump_info/LogDump/bmc_health.log:记录是否存在BMC自愈重启
  • 内核相关日志linux_kernel_log/Kbox日志/bmccom.dat:记录EMMC,文件系统,OOM等异常
  • M3日志M3_log:记录前面校验异常导致bmc启动异常日志

Q40:BMC异常重启定位思路:

A:通过sel日志确认BMC重启时刻-》通过操作日志确认是否存在人为重启-》bmc_health.log确认是否为BMC自愈重启-》通过framework.log查看重启原因-》通过内核日志确认是否为EMMC,文件系统,OOM等异常-》通过M3日志确认是否存在签名校验失败