问题描述
打包后,telnet进不去目标机环境了
manifest.yml 如下:
环境信息
-
操作系统:Ubuntu 24.04
-
软件版本:OpenUBMC2512
答案内容由AI生成,仅供参考:
根本原因:
当前构建为release类型,镜像中使用的busybox被裁剪,未包含telnet服务组件,导致连接失败。
解决方案:
debug;
建议操作:
- 开发阶段使用
build_type: debug;- 生产阶段关闭 telnet,仅保留 SSH 和 Web 安全访问通道。
相关参考文档:
用户在使用 OpenUBMC 构建系统时,遇到了 telnet 无法访问目标机环境 的问题。此问题出现在构建并打包固件后,尽管之前可能正常运作,但在当前构建版本中 telnet 功能失效。
release 类型构建(build_type: release),且构建流程未报错。manufacture:
WBD:
package_name: wbd/wbd_output.zip
build_type: release
# ... 白牌包配置
表明当前构建为发布版本(release),而非调试版本。根据知识库中的多份文档和实体描述,telnet 在 release 构建中默认不可用,主要原因如下:
来源:Search Result #1《openUBMC调试工具安装指导》
“openubmc镜像中自带的busybox功能做了裁剪,没有telnet、i2c tools等工具……社区conan脚本仓增加了busybox工具构建脚本,内置了telnet服务拉起功能。”
busybox 是经过裁剪的,不包含 telnet、i2c 工具等开发调试功能。telnet 属于非安全协议,出于安全考虑,在 release 构建中被主动移除或禁用。来源:
Debug Package实体
- Debug 包支持
lsprop、Telnet等命令,使用/bin/bash作为默认 shell。- Release 构建通常不包含调试组件,也不会启用 telnet 服务。
用户当前构建为 build_type: release,因此即使 manifest 包含了部分脚本(如 afteraction.sh),默认也不会包含完整的 busybox 及其 telnet 组件。
来源:Search Result #1 和 #3
- 要启用 telnet,需要手动构建并打包自定义 busybox。
- 默认情况下,该 busybox 会被放置于
/opt/debug/busybox。- 若未显式集成进 rootfs,则无法使用 telnet。
# 克隆 conan_index 仓库
git clone https://gitcode.com/openUBMC/conan_index.git
# 进入 busybox 源码目录
cd conan_index/recipes/busybox/all
# 构建配置启用 telnet 的 busybox
conan create . openUBMC/release/stable -o busybox:with_telnet=True
在 manifest.yml 或构建流程中添加如下逻辑,将自定义 busybox 注入到目标系统中:
components:
- name: busybox
repo: https://gitcode.com/your-team/busybox.git
tag: with-telnet-v1
output:
- src: ./output/busybox
dst: /opt/debug/busybox
或者通过 bingo 构建参数指定扩展包:
bingo publish -z WBD -b openUBMC -bt debug # 使用 debug 构建类型
建议将
build_type改为debug以保留调试功能
若无法修改构建流程,可尝试以下临时方式:
若 SSH 仍可用,可通过 SSH 登录后执行以下命令排查:
# 查看 telnet 端口是否监听
netstat -tuln | grep 23
# 检查是否有 inetd 或 xinetd 启动 telnet
ps aux | grep inetd
# 查看日志
journalctl | grep telnet
ls /opt/debug/busybox
# 若存在,可尝试手动启动 telnet
/opt/debug/busybox telnetd -l /bin/sh -p 23
debug修改 manifest.yml 中的构建类型:
manufacture:
WBD:
build_type: debug # 改为 debug
然后重新构建:
bingo publish -z WBD -b openUBMC -bt debug -r openubmc_dev
Debug 构建会自动包含调试工具和 telnet 支持,适合开发阶段使用。
| 建议项 | 说明 |
|---|---|
| 区分 debug 与 release 构建用途 | debug 用于开发测试,release 用于生产部署 |
| 仅在 debug 环境启用 telnet | 避免 telnet 因安全性问题被滥用 |
| 提供 fallback 调试手段 | 如串口、JTAG、SOL(Serial Over LAN)等 |
| 打包前验证调试工具是否存在 | 构建完成后检查 /opt/debug/busybox --help 是否列出 telnetd |
根本原因:
当前构建为release类型,镜像中使用的busybox被裁剪,未包含telnet服务组件,导致连接失败。
解决方案:
debug;
建议操作:
- 开发阶段使用
build_type: debug;- 生产阶段关闭 telnet,仅保留 SSH 和 Web 安全访问通道。
相关参考文档:
看一下你的编译命令和manifest中busybox放的位置,release包编译不会带debug_dependencies下的配置组件
刷了个debug包,也进不去
编译命令是什么,manifest里在哪里配置的busybox