1.4. 总结整个升级过程

整个runtime的升级linux的过程,其实很简单。

如果说有难度的话,那么算是,在升级数据之前,你自己本身要清楚你原先的数据,即uboot,kernel,rootfs,都是放在哪个分区的哪个位置的,然后分别擦除数据,写入新数据即可。

另外有个要注意的是,升级rootfs的话,尽量把其他非内核必须的进程都关闭掉,防止在升级过程中,还有进程或和程序去读取nand flash上的rootfs。

此外,在烧写某个文件之后,如果希望查看当前写入的数据,是否是我们所期望的,那么可以用nanddump工具,将对应部分的数据“打印”出来,比如:

查看uboot的第一page的数据:

./nanddump -l 0x1000 -s 0x80000 -p /dev/mtd0

其他mtd-util的工具的用法,请自己参考mtd-util中源码的具体实现,通过看源码,可以了解其具体是如何实现,以及参数的完整的含义。

1.4.1. 一些提示

1.4.1.1. 把东西放到ramdisk中以避免影响

之前遇到很多人问这个问题了。那就是,如果在升级的时候,由于也会升级rootfs,但是本身升级过程中,所利用到的文件,如果是放在rootfs中,岂不是会导致系统崩溃了?

答案是,不会。因为我之前介绍的方法中,是把升级所需的mtd工具,放到U盘的。而U盘是单独mount系统中的。

不过,更加好的做法是,把此处升级所相关的,所有的文件,包括mtd工具,要升级的各个文件,甚至其他可能用到的reboot等工具,设置是这些工具可能依赖的到库文件等等,都全部拷贝到ramdisk中。这样,通过运行ramdisk中的所有工具,访问ramdisk中的要升级的文件,去升级系统,就不会对升级rootfs而有啥负面影响,也不会由于升级rootfs而可能导致任何的系统崩溃了。

[注意] 关于ramdisk

所谓的ramdisk,我个人也不是非常熟悉。

只是对更不熟悉的人解释一下,可以简单理解为把你的内存划分出来,当做一块分区使用

所以这个小分区,说白了就是内存。所以,读写速度很快,也和nand 或nor flash无关,不会影响到Nand或Nor的升级。

一般来说,多数都是将ramdisk挂载到/tmp下面的,所以,如果你啥都不熟悉,直接把相关文件拷贝到/tmp,即可。

更多的,关于ramdisk或tmpfs,自己google吧。