答案内容由AI生成,仅供参考:
解决方案建议
方案一:升级 rmcpd 组件(推荐)
社区确认该问题已在 rmcpd v1.90.72 及以上版本 中修复。
- 检查当前版本:
ipmcget -d version -t rmcpd
- 若低于 v1.90.72,请升级至修复版本。
方案二:手动切换串口方向(临时规避)
若无法立即升级,可在会话建立 之后 再执行串口切换,避免被默认路由覆盖。例如:
# 先建立会话
ipmitool sol activate 或 您的自定义会话命令
# 再手动切换串口方向到目标设备
ipmitool raw 0x3a 0x1c <byte0> <byte1>
注意:此方法仅在会话建立后切换才有效,因为此时 BMC 已完成默认路由,后续切换不再被会话激活流程覆盖。
方案三:检查 platform.sr 配置文件
问题可能源于 platform.sr 中串口路由策略的修改。建议对比工作正常的版本(如 25.03)与当前版本的该文件,重点关注:
SOL_DEFAULT_TARGET
serial_switch_config
uart_route_policy
若发现异常,恢复为已知正确的配置即可。
方案四:确认串口方向的持久化策略
根据 Document Chunk #8,SerialManagement 对象中的 RetainedPolicy 和 ConnectStatusResetPer 属性控制串口连接在掉电/复位后的保留行为。如果策略配置为“复位保留”,会话激活时可能重置为默认值。可尝试修改相关配置以保持手动切换状态。
结论
您遇到的现象是 openUBMC 已知的串口路由逻辑缺陷(尤其在 25.09 版本中),会话建立时强制回退默认连接是根本原因。推荐优先升级 rmcpd 组件至修复版本,或在会话建立后再切换串口作为临时措施。完整验证步骤可参考社区建议:
- 检查
rmcpd 版本 → 确保 ≥ v1.90.72
- 查看
journalctl -u rmcpd 中是否有 Failed to get serial remote object 等错误
- 使用手动命令
ipmcset -t sol -d activate -v 2 0 测试标准 SOL 是否正常,以确认底层路由是否正常
- 若问题持续,对比
platform.sr 文件差异并修正
以上分析均基于您提供的 Context(特别是 Document Chunk #5、#8 及相关 Search Results),未引入外部知识。如有其他细节需补充,请提供更多日志或命令输出。
点击此处查看详细分析解答
根据您提供的问题描述,该现象(开启会话时会自动切到默认连接,导致先切换串口后再开会话不符合预期,需要先开会话再切换才能生效)在 openUBMC 社区中已有明确记录,其核心原因是 SOL(Serial Over LAN)或类似会话建立时串口路由逻辑存在缺陷,导致系统自动回退到默认连接路径(如 PANEL COM),忽略了用户事先的手动切换。
问题原因分析
1. 串口路由默认回退机制
- 当 BMC 收到建立会话的命令(如标准
ipmitool sol activate 或您使用的自定义 raw 0x3a 0x57 等)时,会调用 serial_mgmt 模块执行串口路由切换。
- 如果该模块中的关键对象(如
serial_sw_obj、serial_remote_obj)初始化失败或配置异常,BMC 会强制 fallback 到默认安全路径(即 PANEL COM ↔ BMC COM),而非期望的 SOL COM ↔ SYS COM 路径。
这一行为导致用户先通过 ipmitool raw 0x3a 0x1c 等命令切换串口后,在建立会话时被重置为默认连接。
2. 直接证据(社区已知问题)
在 openUBMC 25.09 版本中已报告相同表现(参考 Document Chunk #5):
问题本质:ipmitool sol activate 未正确将串口路由至主机 OS(SYS COM),而是停留在 BMC 本地(PANEL COM)。
根本原因:rmcpd 组件存在串口路由逻辑缺陷,或 platform.sr 配置变更导致默认路径错误。
表现:会话建立成功,但无输出、无交互;用户手动切换后开会话,切换无效。
您的问题场景(使用自定义 raw 命令而非标准 SOL)同样受此底层路由逻辑影响,因为会话激活流程最终通过同一套串口管理机制(serial_mgmt / rmcpd)完成。
解决方案建议
方案一:升级 rmcpd 组件(推荐)
社区确认该问题已在 rmcpd v1.90.72 及以上版本 中修复。
- 检查当前版本:
ipmcget -d version -t rmcpd
- 若低于 v1.90.72,请升级至修复版本。
方案二:手动切换串口方向(临时规避)
若无法立即升级,可在会话建立 之后 再执行串口切换,避免被默认路由覆盖。例如:
# 先建立会话
ipmitool sol activate 或 您的自定义会话命令
# 再手动切换串口方向到目标设备
ipmitool raw 0x3a 0x1c <byte0> <byte1>
注意:此方法仅在会话建立后切换才有效,因为此时 BMC 已完成默认路由,后续切换不再被会话激活流程覆盖。
方案三:检查 platform.sr 配置文件
问题可能源于 platform.sr 中串口路由策略的修改。建议对比工作正常的版本(如 25.03)与当前版本的该文件,重点关注:
SOL_DEFAULT_TARGET
serial_switch_config
uart_route_policy
若发现异常,恢复为已知正确的配置即可。
方案四:确认串口方向的持久化策略
根据 Document Chunk #8,SerialManagement 对象中的 RetainedPolicy 和 ConnectStatusResetPer 属性控制串口连接在掉电/复位后的保留行为。如果策略配置为“复位保留”,会话激活时可能重置为默认值。可尝试修改相关配置以保持手动切换状态。
结论
您遇到的现象是 openUBMC 已知的串口路由逻辑缺陷(尤其在 25.09 版本中),会话建立时强制回退默认连接是根本原因。推荐优先升级 rmcpd 组件至修复版本,或在会话建立后再切换串口作为临时措施。完整验证步骤可参考社区建议:
- 检查
rmcpd 版本 → 确保 ≥ v1.90.72
- 查看
journalctl -u rmcpd 中是否有 Failed to get serial remote object 等错误
- 使用手动命令
ipmcset -t sol -d activate -v 2 0 测试标准 SOL 是否正常,以确认底层路由是否正常
- 若问题持续,对比
platform.sr 文件差异并修正
以上分析均基于您提供的 Context(特别是 Document Chunk #5、#8 及相关 Search Results),未引入外部知识。如有其他细节需补充,请提供更多日志或命令输出。