linux系统下备份多个文件系统
在一些要求比较高的嵌入式系统中,要求做两个甚至三个系统,以防止在升级或者操作不当时候文件系统被损坏,从而这个设备就变砖啦。这个问题可以有两种比较好的方法解决。一是系统备份,也就是把根文件系统烧写到几个不同的分区,当一个分区损坏后,然后从备份的分区启动,这样可以有效的避免机器或者设备变砖,但是这也要求系统的存储要够大。二是在uboot里开发刷机程序,现在的android 手机基本上都支持,手持设备有这种方式还好,但是工业设备一般没有条件这样做,或者支持网口进入进行刷机,操作步骤有点繁琐。
我们的设备对这些电子芯片的价格不是很敏感,所以选择了第一种方式。
实现的功能
uboot根据启动的版本需求,引导linux内核,挂载Flash中相应版本根文件系统。
1) 能引导linux内核启动,挂载相应版本的根文件系统.
Uboot启动时根据EEPROM中的启动的版本标识,启动内核后,挂载相应版本的根文件系统。
2) 当前版本启动失败时,能自动回退到上一版本,上一版本无法启动时,继续退到原厂版本,原厂版本无法启动时则判断为设备损坏。
Uboot启动内核时,读取EEPROM中的启动版本分区标识,挂载相应版本的根文件系统,上电次数在uboot中自加1,运行次数会在系统启动之后的应用程序中自加,如果系统上电次数和运行次数相差超过三次,即系统启动三次不成功,此时更新启动版本标识为上一版本,回退到上一版本,如果回退到原厂版本也不能启动,则判断