问题描述
在920B机型通过ipmi发送sel time set命令不生效

环境信息
-
软件版本:55.00.01.16
-
硬件配置:920B
分析结论
查看日志,发现rtc芯片时间已被修改,但在后续被设置回原时间了;怀疑为os或ntp时间同步有影响,但是ntp未开启,os下电再发送ipmi命令依旧无法成功设置
在920B机型通过ipmi发送sel time set命令不生效

软件版本:55.00.01.16
硬件配置:920B
查看日志,发现rtc芯片时间已被修改,但在后续被设置回原时间了;怀疑为os或ntp时间同步有影响,但是ntp未开启,os下电再发送ipmi命令依旧无法成功设置
日志体积超过论坛限制大小,如需日志辅助分析我会通过邮件发送
答案内容由AI生成,仅供参考:
| 项目 | 内容 |
|---|---|
| 问题本质 | BMC每隔6秒从RTC同步时间,导致IPMI设置的SEL时间被覆盖 |
| 根本原因 | 时间管理机制设计为以RTC为权威时间源 |
| 解决方案 | 使用 date -s + hwclock -w --systohc 修改系统并写入RTC |
| 是否可直接用IPMI设置? | |
| 适用场景 | 所有基于openUBMC的平台(包括920B机型) |
ipmitool sel time set命令不生效问题分析与解决方案根据提供的日志和系统行为分析,920B机型上通过IPMI设置SEL时间(sel time set)后立即失效的根本原因是:BMC系统存在一个定时机制,每隔6秒从RTC(实时时钟芯片)同步时间,覆盖了通过IPMI手动设置的时间。此机制优先级高于IPMI命令,导致设置操作被自动还原。
执行命令:
ipmitool sel time set "01/01/14 01:01:01"
命令返回成功,显示时间为 2014-01-01 01:01:01。
查询结果:
ipmitool sel time get
返回时间为 2026-04-10 15:13:04,与设置值严重不符。
关键日志证据:
bmc_core NOTICE: timeiptables.c(59): bmc_time = 1774927488, rtc time = 1341558161, update time
该日志表明:BMC正在用RTC的时间(rtc time)更新自身时间(bmc_time),即BMC时间正被RTC覆盖。
在
openUBMC系统中,BMC每隔6秒主动读取一次RTC芯片的时间,并以此更新自身的系统时间。
因此,即使通过ipmitool sel time set修改了SEL时间,最多6秒后就会被RTC时间覆盖。
这在以下信息中得到验证:
知识图谱关系:
BMC <--(reads every 6 seconds)--> RTC
“BMC code reads time every 6 seconds from the RTC chip to update the system time, causing any manually set time via IPMI to be overwritten.”
论坛讨论佐证(Document Chunk #2):
“当前机制是每隔6秒从RTC时钟芯片同步时间,所以ipmi设置后会被同步……”
| 可能原因 | 是否成立 | 说明 |
|---|---|---|
| NTP服务影响 | 否 | 已确认NTP未开启,且Time Setting受NTP控制时才会禁用IPMI修改,当前未启用NTP |
| OS时间同步干扰 | 否 | 即使主机下电后重试,问题依旧存在,说明与OS无关 |
| 命令格式错误 | 否 | ipmitool 返回成功,格式为 "m/d/Y H:M:S",符合要求 |
| 权限不足 | 否 | 使用管理员账户Administrator,且命令可执行 |
| RTC写入失败 | 否 | 日志显示RTC时间已被修改(短暂生效),说明写入有效 |
由于直接通过IPMI设置的时间会被RTC覆盖,正确做法是:先通过带内系统修改OS时间 → 同步到RTC → BMC自动读取RTC新时间
适用于主机可访问且处于运行状态的场景。
# 1. 登录主机操作系统,设置系统时间
date -s "2024-11-11 17:40:40"
# 2. 将系统时间写入RTC芯片(关键步骤)
hwclock -w --systohc
# 3. 等待BMC自动读取RTC(约6秒内)
# BMC将自动获取新时间,无需使用ipmitool sel time set
优势:时间持久,不会被覆盖
符合设计规范:这是openUBMC推荐的时间同步路径
若必须通过IPMI直接控制时间,可尝试关闭RTC同步机制(需确认CSR配置支持)
RtcSupported 是否允许关闭:{
"Name": "RtcSupported",
"Type": "Boolean",
"Default": true,
"Description": "是否启用从RTC芯片同步时间"
}
false,重启BMCipmitool sel time set 才能生效
警告:此操作非常规手段,可能影响系统日志准确性,仅限测试环境使用
用户报告中曾出现 “设置时间-8小时” 或 “显示时间-8小时” 的现象,这通常是因为:
ipmitool sel time get 命令本身不处理时区逻辑(见Ipmitool Sel Time Get实体描述)
解决方案:前端或工具应自行完成UTC到本地时区的转换,避免误解。
| 项目 | 内容 |
|---|---|
| 问题本质 | BMC每隔6秒从RTC同步时间,导致IPMI设置的SEL时间被覆盖 |
| 根本原因 | 时间管理机制设计为以RTC为权威时间源 |
| 解决方案 | 使用 date -s + hwclock -w --systohc 修改系统并写入RTC |
| 是否可直接用IPMI设置? | |
| 适用场景 | 所有基于openUBMC的平台(包括920B机型) |
hwclock操作ipmitool sel time set作为长期时间配置手段”如需进一步调试RTC通信状态,可通过以下命令查看RTC芯片通信情况:
ipmitool raw 0x30 0x90 0x48 # 查询RTC状态(视具体平台而定)
设置是否成功日志可以看下操作日志
sel time set只会设置BMC时间,不会将时间设置至RTC
根据贴的日志,可以看到,是由于当前时间和RTC时间有时间差,因此同步了RTC时间。
因此出现此现象的原因是,sel time set设置BMC时间之后,监测到BMC时间与RTC时间有时间差,重新同步至RTC
建议:可以打开NTP,NTP同步失败后,再通过sel time set设置时间查看是否生效
![]()
但是这里rtc时间是我修改的1341558161(2012-07-06 15:02:41),bmc时间是1774927488(2026-03-31 11:24:48),这条日志的意思我理解是从rtc芯片同步时间到bmc吧
从操作日志看是成功的
2012-07-06 15:02:41 ``IPMI,Administrator@192.168.43.232``,bmc_time,Set time to (Fri Jul 06 15:02:41 2012) successfully
麻烦附一下完整日志
你可以截全以前bmc_time的日志
上面的日志不是从rtc同步的
只是表征2012是你设置的时间
只是会和rtos作比较
用于更新一个变量而已
设置时间被刷新回去就是因为rtc时间会轮询同步的
本身ipmi命令主要就是针对无时间源的场景使用的
app.log.txt (1.7 MB)
需要完整的一键收集日志麻烦发下邮箱,日志太大了没法发在论坛
这是ipmi设置的时候bmc的软件时间,每隔6秒bmc又会从rtc同步时间,所以设置了又会被修改