设备在进行固件升级时,传统单分区方案会直接覆盖运行中的系统,若出现断电、固件异常等问题,极易造成设备无法开机且无法自动恢复。而具备双分区冗余存储、启动故障自动回滚机制的Linux A/B系统模式,能够解决传统单分区升级易失效、无法回滚、设备瘫痪的问题。

▍什么是Linux A/B系统模式
Linux A/B系统模式是一种高可靠的固件升级方案,划分A、B两套对等系统分区,设备单分区运行,另一分区存放备用固件,具备三大核心能力:
(1)系统升级:在当前运行系统将新固件写入备用分区,无需进⼊升级模式,完成后重启即可进入新系统。
(2)故障回滚:若升级失败导致系统故障,系统可回退到当前版本,避免变砖。
(3)双重防护:升级失败、当前分区损坏等故障,系统会自动切换到另一分区恢复运行。
Reset retry是Linux A/B的容错机制:当系统从当前分区启动失败时,Bootloader记录失败次数并切换备用分区重试;累计7次启动失败后,固定从另一分区引导。

以下基于创龙科技RK3506工业评估板,下载升级固件至存储分区“userdata”进行系统升级。
本次操作从slot_b分区(B系统)启动系统,对slot_a分区(A系统)进行升级。


等待约5分钟后,系统更新完成,评估板将自动切换从slot_a分区(A系统)启动。
以下基于创龙RK3506工业评估板,验证Linux A/B系统模式Reset retry引导的作用。本次验证模拟A系统分区损坏导致启动失败场景,内核或文件系统损坏均可自动切换至备用分区恢复,本次以内核分区损坏为例演示。
执行如下命令破坏boot_a分区(A系统内核分区),并重启评估板。

评估板上电重启后,由于内核分区被破坏,系统将无法完成正常的启动流程。此时,U-Boot会自动触发内核的重新引导机制。通过查看系统打印信息,可清晰地观察到tries-remain参数的值会随着U-Boot重新引导内核启动次数的增加而逐步递减。


若在U-Boot阶段尝试连续7次从slot_a分区(A系统)启动,均无法启动成功后,将自动切换至slot_b分区(B系统)启动。

经本次验证可知:当多次尝试从损坏的slot_a分区(A系统)启动均失败后,系统能够自动切换至正常的slot_b分区(B系统)完成启动。
无论是系统升级,还是系统故障场景,Linux A/B系统模式都能够从容应对,为您的系统保驾护航!

客服











