openUBMC编译版本BMC终端模式一些疑问

当前使用了25.12版本的代码进行编译,使用bingo build编译出包。出包后升级到BMC中,后续登录到ssh终端后,发现只能使用指定的几个命令,使用不了linux命令。由于需要调试,已经在manifest.yml中添加了busybox组件,但是现在编译出包的固件根本用不了linux命令,这种情况下需要如何切换到linux命令模式。manifest.yml需要修改什么配置吗?还是默认编译选项有问题需要修改?

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

openUBMC编译版本BMC终端模式问题分析与解决方案

根据您提供的问题描述,您在使用 openUBMC 25.12 版本代码通过 bingo build 编译固件后,发现 SSH 登录终端仅支持受限命令(如 ipmcget, ipmcset 等),无法执行标准 Linux 命令(如 ls, ps, ifconfig 等)。尽管已在 manifest.yml 中添加了 busybox 组件,但仍无法进入完整的 shell 环境(如 bash)。以下是对该问题的全面分析和解决方案。


:magnifying_glass_tilted_left: 问题核心原因

1. 固件构建类型决定终端行为

openUBMC 的默认终端行为取决于构建类型(build type):

  • Release 构建-bt=release):使用受限 CLI(openUBMC:/ ->),禁止切换到 bash,安全性高。
  • Debug 构建-bt=debug):默认进入完整 Linux shell(~#),支持所有 Linux 命令。

:white_check_mark: 您当前使用的很可能是 release 模式构建,因此无法切换到 bash。

相关证据:

来自文档块 #1

这个就是BMC正常ssh登录看到的命令行(BMC定制化后的), release包(bingo build -bt release)默认命令行。
平时你看到的~,是bash命令行,  debug包(bingo build -bt debug)默认命令行...
release包就是这样,不能切换到bash命令行,没有后门。

:white_check_mark: 解决方案

:white_check_mark: 方案一:使用 Debug 构建模式(推荐用于调试)

要获得完整的 Linux shell 访问权限,请使用 debug 构建模式 编译固件。

修改构建命令:

bingo build -bt debug
# 或者更完整地指定:
bingo build --build=debug -sc qemu

:warning: bingo build 默认即为 debug 模式,但若您之前显式指定了 -bt=release,则必须改为 -bt=debug

验证方式:

编译并升级 HPM 包后,通过 SSH 登录会直接进入类似 ~# 的提示符,此时即可使用 ls, ps, cat, ifconfig 等标准命令。


:white_check_mark: 方案二:在 Release 包中临时切换到完整命令行(若支持)

某些版本允许从受限 CLI 手动切换到底层 bash shell。

尝试执行以下命令:

clp_commands

注意:部分 release 固件会禁用此命令。如果该命令不存在或提示权限不足,则说明已被关闭。

若成功切换,可尝试退出受限模式:

exit

25.12 版本默认 release 包已禁用此功能(如 LiJiang#1 中所述:“release包就是这样,不能切换到bash命令行”),因此本方法可能无效。


:toolbox: 配置确认:manifest.yml 与 Busybox 集成

虽然您已添加 busybox,但仍需确保其被正确引入并构建进镜像

:white_check_mark: 步骤 1:检查 manifest.yml 是否包含 busybox

确保 manifest.yml 中有如下条目:

- conan: busybox/1.34.1@openubmc/stable

或者使用开发版本(适用于自定义构建):

- conan: busybox/1.34.1@openubmc.dev/testing

:white_check_mark: 步骤 2:验证 Conan 仓库中是否存在 busybox

运行命令确认组件存在:

conan search busybox -r openubmc_dev

输出应显示可用版本,例如:

busybox/1.34.1@openubmc/stable

:white_check_mark: 步骤 3:确保 busybox 被集成进 rootfs

仅声明依赖不保证集成。需确保构建系统将 busybox 安装到最终镜像中。

可参考社区实践,在 .bmcgo/config 中添加配置以确保 busybox 被包含:

创建或修改 .bmcgo/config 文件:

[hpm_encrypt]
enable=true

来自文档块 #6:rodrick 提到集成 busybox 后需在 .bmcgo/config 中启用 hpm 加密,这间接保证了自定义组件被处理。


:package: 出包与升级注意事项

:warning: 确保生成的 HPM 包有效

使用 debug 模式和 busybox 集成后,构建出包时应观察日志是否成功包含 busybox。

出包命令示例:

# 确保在 manifest 目录下
cd manifest
python3 init.py -path ./bmc_sdk.zip  # 确保 SDK 正确加载
bingo build -bt debug

验证输出文件:

构建成功后应生成:

rootfs_openUBMC.hpm

将其上传后,通过 SFTP 和 ipmcset 命令升级:

sftp> put rootfs_openUBMC.hpm /tmp/
ipmcset -d upgrade -v /tmp/rootfs_openUBMC.hpm

:warning: 若提示 “The package for upgrading firmware is invalid.”,说明签名/格式错误(#1livein2ndworld 遇到过),请确保使用官方 SDK 和正确构建流程。


:hammer_and_wrench: 其他调试建议

1. 使用 QEMU 仿真调试(推荐)

避免反复刷写物理设备,可使用 QEMU 模拟运行:

bingo build -sc qemu
vemake_1711.py start

然后通过 Telnet 或 SSH 连接 localhost:10022 登录测试。

2. 启用 Debug 日志

如遇构建失败,启用详细日志排查:

export LOG=debug
bingo build -bt debug

查看日志路径:

  • ~/.bmcgo_log/bingo.log
  • task.log 文件(如有)

:white_check_mark: 总结与建议

项目 推荐做法
构建类型 必须使用 -bt=debug 模式才能获得 bash shell
manifest.yml 添加 busybox/1.34.1@openubmc/stable
SDK 版本 使用与 25.12 匹配的 bmc_sdk,避免版本不一致
出包方式 建议在 manifest 目录下执行 bingo build
终端访问 Debug 包自动进入 ~#;Release 包限制访问

:green_circle: 最终结论: 您目前无法使用 Linux 命令的根本原因是使用了 release 构建模式。请改用 bingo build -bt debug 构建,并确认 busybox 已正确添加,即可获得完整的 shell 环境用于调试。


:books: 参考资料

相关链接:

  1. 通过ssh升级hpm时让修改密码
  2. 如何自定义bingo组件构建的user
  3. 25.06版本storage组件编译问题
  4. 25.12版本编译报错
  5. coredump问题定位方法介绍 | 文档中心 | openUBMC
1 个赞

集成telnet服务(busybox组件提供),使用23号端口登录。

目前已经解决了,编译时-bt=debug出包就是linux终端模式