更新固件包后,在os下更改账号密码,ssh无法登陆,密码输入无误,web界面暂无,无法使用telnet登陆,所以现在想要在uboot下切换为备区启动,还原成之前的bmc固件
以下是当前uboot的环境
问题:
目前没有看到切换备区启动的命令,执行setenv boot_bank 1 然后reset,依然是主区启动
能否提供一下在uboot下切换到备区启动的流程
更新固件包后,在os下更改账号密码,ssh无法登陆,密码输入无误,web界面暂无,无法使用telnet登陆,所以现在想要在uboot下切换为备区启动,还原成之前的bmc固件
以下是当前uboot的环境
问题:
目前没有看到切换备区启动的命令,执行setenv boot_bank 1 然后reset,依然是主区启动
能否提供一下在uboot下切换到备区启动的流程
答案内容由AI生成,仅供参考:
当 BMC 固件更新后出现 SSH 登录失败、Web 无法访问等问题时,可以通过 U-Boot 切换至备用启动分区(backup bank)恢复系统。以下是基于 Hi1711 平台的完整操作指导。
当前情况:
关键提示:
setenv boot_bank 1无效是因为平台未启用boot_bank变量控制;Hi1711 平台依赖 分区设备名(如umcblk0gp1,umcblk0gp2)和fw_upgrade命令 实现主备切换。
在串口终端上电启动设备,看到如下提示时快速按 Ctrl + B 进入 U-Boot shell:
Hit 'ctrl + b' to stop autoboot: 0
进入后应显示类似:
=>
Hi1711 平台通常使用 eMMC 的多个 GPP 分区作为固件区,例如:
/dev/umcblk0gp0 → 主区(active)/dev/umcblk0gp1 → 备区(backup)虽然 U-Boot 环境中不直接列出设备,但可通过常见命名规则判断。
fw_upgrade 命令切换启动分区
![]()
fw_upgrade是 Hi1711 平台专用命令,用于切换主备固件分区
语法格式(根据 Document Chunk 1 中用户实践):
fw_upgrade <新 active> <新 backup> <原 active> <原 backup>
=> fw_upgrade 5 4 5 6
其中:
5:对应 /dev/umcblk0gp1(常用映射)6:对应 /dev/umcblk0gp2dboot_probe_info 输出)
目的:将原 backup 区设为新的 active 区,实现回退。
来自知识库证据:
- 文档片段 1 中提到:“
fw_upgrade 5 4 5 6” 成功实现切换。- “我找到了在 uboot 下切换启动分区的方法,当前每个启动分区都可以切换并且启动”
运行以下命令查看上次启动信息(如有):
=> printenv
查找是否有 boot_from 或相关变量记录启动源。
也可尝试:
=> dboot_probe_info
来自知识图谱:
dboot_probe_info包含boot source,BMC reset count等关键数据。
执行重启:
=> reset
重启后,观察日志中是否加载了旧版本固件(如版本号、时间戳不同),确认是否已从备区启动。
登录系统后运行:
ipmcget -d version
比对输出中的 active 和 backup 版本,确认当前运行的是旧版固件。
运行:
dmesg | grep -i "boot\|load"
查看是否从 /dev/umcblk0gp1 等备用设备加载。
| 项目 | 说明 |
|---|---|
不支持 boot_bank 变量 |
当前 Hi1711 平台 U-Boot 不解析 boot_bank,设置无效 |
| 避免随意烧写 | 错误操作可能导致双区损坏,最终需返厂维修 |
| 建议预设恢复点 | 若支持 ipmcset -d restore,应在升级前设置恢复点 |
| 双区均损坏的后果 | 如主备都异常,则必须使用 JTAG 或返厂修复(见 DC4) |
| 步骤 | 操作 |
|---|---|
| 1 | 使用串口连接目标设备 |
| 2 | 上电时按 Ctrl+B 进入 U-Boot |
| 3 | 输入 fw_upgrade 5 4 5 6(或其他已知有效组合) |
| 4 | 输入 reset 重启系统 |
| 5 | 观察是否恢复正常 SSH/Web 访问 |
| 6 | 成功后使用 ipmcset -d upgrade 重新刷入正确固件 |
| 命令 | 功能 |
|---|---|
printenv |
查看 U-Boot 环境变量 |
fw_upgrade a b c d |
设置下一启动分区 |
reset |
重启系统 |
dboot_probe_info |
查看启动设备及重置计数(若有) |
ipmcget -d version |
获取固件版本信息(系统运行后) |
结论:
在 U-Boot 中无法通过setenv boot_bank 1实现切换,必须使用平台专用命令fw_upgrade修改启动顺序。通过该方式可以成功切换至备区启动,恢复先前可用的 BMC 固件版本,进而完成问题修复或重新升级。
如有需要,请联系项目支持人员获取 精确的分区编号映射表 以确保切换准确无误。
相关链接:
参考AI答复操作一下
=> fw_upgrade 5 4 5 6
Unknown command ‘fw_upgrade’ - try ‘help’
我当前环境下的uboot没有这个切换分区的命令
可以试试:
Uboot下敲reg_wr 0x8740148 1
之后再ctrl b进入L1
fw_upgrade 5 4 5 6(后面456是分别指/dev/mmcblk0gp0 /dev/mmcblk0gp1 /dev/mmcblk0gp2)
boot_a55
4 5 6就是从0开始启动的,换成645试试
感谢,这边改成645就是备区启动了