在上一章节《Openwrt sysupgrade系统升级》中,我们描述了sysupgrade升级系统的过程,这种升级过程会直接firmware分区进行写入,无法保证系统的安全性,只要在写入过程突然断电就会出现系统写入失败,升级失败无法启动系统的问题。
为了解决该问题一般会使用双固件升级的方式,有一个主分区firmware和一个备份分区firmware_backup,常见的有双固件升级方式有很多种,这边只介绍一种通用方式
1.升级流程
- 1.根据sysupgrade的过程,将固件进行校验写入,不过写入的时候将升级文件写入到备份分区firmware_backup,不直接写主分区firmware。
- 2.写完备份分区后,设置备份分区写入完成标志位(一般会开辟一块很小的分区用来写标志位),然后重启系统
- 3.uboot启动的时候,检测到备份分区标志位被置位,则读取备份分区firmware_backup的固件内容。
- 4.对firmware_backup的内容进行校验,校验一切正常后,将firmware_backup的内容写入到firmware分区。
- 5.firmware写入完成后,启动系统,系统启动完成后将备份分区标志位清零,这样下次启动后就不会再次升级系统。
通过双固件的方式就不会出现升级失败系统启动不了的问题。
- 如果步骤1写入过程被断电也不会出问题,因为主分区正常启动,只是没有升级到最新的分区而已。
- 如果是步