激活sol默认不切换到os侧

使用ipmitool sol activate激活sol,sol默认不会切换到os侧,日志里没有切换日志

需要手动将sol切换到os侧

使用bmc_soc版本

image

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

关于激活SOL后未自动切换到OS侧的问题分析

根据您提供的信息,当前在使用 ipmitool sol activate 命令激活 SOL(Serial Over LAN) 后,系统并未自动将串行通道切换到OS侧,且日志中未记录切换动作。以下是基于已有上下文数据的综合分析与说明。


:magnifying_glass_tilted_left: 现象描述

  • 执行命令ipmitool sol activate
  • 预期行为:SOL激活后应自动将串行通信切换至主机OS侧,允许远程访问操作系统控制台。
  • 实际现象
    • SOL激活成功,但未自动切换到OS侧
    • 日志中没有出现与OS串行通道切换相关的记录
    • 需要手动切换才能使SOL连接OS。
  • 系统信息:运行 bmc_soc 版本为 1.80.25@openubmc/stable

:page_facing_up: 相关日志分析

从提供的日志片段可提取关键信息:

2026-01-16 10:10:15.291675 bmc_soc NOTICE: serial_mgmt.lua(479): reset uart connect successfully  
2026-01-16 10:10:16.849175 Tencent tencent_ipmi_func.lua(61): [tencent] start call ipmi from /bmc/kepler/IpmiCmds/06/48/ActivatePayload  
2026-01-16 10:10:16.856634 bmc_soc ERROR: serial_mgmt.lua(248): serial_sw_obj is null  
2026-01-16 10:10:16.857001 bmc_soc ERROR: serial_mgmt.lua(268): serial_remote_obj is invalid or system id is not exist, system_id: nil  
2026-01-16 10:10:16.859768 bmc_soc NOTICE: serial_mgmt.lua(346): Setting uart interconnect with port 2  
2026-01-16 10:10:16.861237 bmc_soc NOTICE: serial_mgmt.lua(197): Set serial direction to (PANEL COM <-> BMC COM) successfully  

日志解读:

日志条目 含义
reset uart connect successfully UART连接已重置,初始化正常
serial_sw_obj is null 关键的串行交换对象未创建,可能原因:驱动未加载或配置缺失
serial_remote_obj is invalid or system id is not exist 远端系统对象无效或系统ID未识别,可能导致无法建立到OS的链路
Set serial direction to (PANEL COM <-> BMC COM) 串行方向被设置为“面板串口 ↔ BMC”,而非 ↔ OS

:warning: 核心问题:SOL成功激活,但串行通道方向仍停留在BMC内部通信模式(PANEL COM ↔ BMC COM),并未切换至“BMC ↔ OS”或“HOST OS”路径。


:puzzle_piece: 根本原因分析

1. 串行通道控制由 serial_mgmt.lua 脚本管理

  • 实体 Serial Mgmt Lua 是 BMC 中用于管理 UART 和串行通信的核心脚本。
  • 其负责执行以下操作:
    • UART端口映射
    • 串行方向切换(BMC ↔ PANEL / BMC ↔ HOST OS)
    • Bmc Soc 协同完成路由配置

2. SOL激活不自动触发OS侧切换是默认行为

  • 根据设计逻辑,SOL激活仅建立网络串行通道(IPMI Payload),不强制修改底层UART路由。
  • 是否切换到OS侧取决于:
    • SOL配置参数(如 [Set SOL Configuration Parameters](./details/Transport-0Ch/21h.md) 是否设置了默认串行方向)
    • 平台策略实现(部分厂商需显式调用命令切换)

3. serial_sw_objserial_remote_obj 异常说明资源初始化失败

  • 这两个对象是实现“串行路由切换”的关键组件。
  • 当前出现“null”和“invalid”错误,表明:
    • 系统未正确识别远程目标(如Host OS)
    • 或底层串行服务(bmc_soc)未完全加载相关模块
  • 可能原因包括:
    • Host未就绪(未开机或BIOS未初始化串口)
    • 缺少必要的设备树或驱动支持
    • 固件版本兼容性问题(特别是 openUBMC/bmc_soc

:white_check_mark: 解决方案建议

方案一:手动执行串行通道切换命令

若平台支持,可通过如下命令手动切换串行方向至OS侧:

# 示例(具体命令依平台而定):
ipmcset -t sol -d hostconnect -v 1
# 或调用特定Lua脚本接口

注:当前知识库中无直接命令示例,需确认平台是否提供类似 Set Serial Host Connect 的IPMI命令。


方案二:检查并配置 SOL 默认串行方向

使用以下命令查看SOL配置:

ipmitool sol info

输出应包含:

  • SOL Enabled:是否启用
  • Privilege Level
  • Character Accumulate/Flush Time
  • Force Encryption

若需修改默认串行路由行为,应通过:

ipmitool sol set [parameter] [value]

例如:

ipmitool sol set nonvolatile-bit-rate 115200
ipmitool sol set volatile-bit-rate 115200

但注意:标准IPMI不直接支持设置“默认切换到OS”选项,需平台扩展支持。


方案三:升级或修复 bmc_socserial_mgmt.lua 组件

当前 bmc_soc 版本为 1.80.25@openubmc/stable,可能存在以下问题:

问题 建议
serial_sw_obj is null 检查是否缺少串行交换服务依赖项
system_id: nil 可能 Host 未响应或未广播身份信息
Set serial direction to (PANEL COM <-> BMC COM) 表明系统默认回退至安全模式

:backhand_index_pointing_right: 建议措施

  1. 升级 bmc_soc 到稳定修复版本。
  2. 确保 serial_mgmt.lua 脚本为最新版,并确认其逻辑包含激活SOL后尝试连接Host OS的分支。

方案四:确认Host侧串口状态与配置

  • Host OS是否启用串行终端(如Linux中console=ttyS0)?
  • BIOS是否启用串口重定向(Serial Port Console Redirection)?
  • 串口线缆或虚拟通道是否连通?

:books: 知识点总结

概念 说明
SOL (Serial Over LAN) 基于IPMI的远程串行控制协议,允许通过网络访问设备串行控制台
IPMI SOL Activation 触发SOL会话建立的标准流程,由 Activate Payload 命令控制
串行方向控制 由BMC固件脚本(如 serial_mgmt.lua)管理,决定数据流向(BMC ↔ Panel / Host)
serial_sw_obj / serial_remote_obj 关键运行时对象,用于管理串行路由交换;若为空则无法连接Host
openUBMC / bmc_soc 开源BMC项目中的组件,该问题多见于早期或定制版本

:white_check_mark: 结论

SOL激活后未自动切换到OS侧的根本原因在于:

  • serial_mgmt.lua 脚本在处理激活事件时未能成功初始化到Host OS的串行链路;
  • 存在 serial_sw_obj is nullsystem_id: nil 错误,导致无法完成路由切换;
  • 默认行为是连接BMC自身而非Host,切换到OS需额外显式操作或平台策略支持

:wrench: 推荐操作步骤

  1. :white_check_mark: 确认Host已上电且串口已启用;
  2. :white_check_mark: 使用 ipmitool sol info 检查SOL配置;
  3. :white_check_mark: 检查并升级 bmc_socserial_mgmt.lua 到最新稳定版本;
  4. :white_check_mark: 手动执行串行切换命令(如有);
  5. :white_check_mark: 在平台支持前提下,配置“SOL激活后自动切换至OS”的策略。

如需进一步诊断,请提供完整日志及平台型号、BMC固件版本信息。

相关链接:

  1. IPMI sol命令阻塞
  2. 【问题交流】不保留配置BMC升级后,操作日志中不存在升级的记录,是否可以优化
  3. 无签名UBMC上无法继续更新BMC固件
  4. ipmcset -t sol -d activate命令报错
  5. 时间管理问题手册 | 文档中心 | openUBMC

看看 rmcpd 组件是否是 1.90.72 及以上版本呢

rmcpd/1.90.70@openubmc/stable#5c1a758610a587363687f2a321c51caf%1764674869.266

使用新版本试试呢,该问题在 1.90.72 版本修复