在嵌入式闪存上替换linux库的安全方法

时间:2010-11-17 16:45:22

标签: linux embedded-linux

我在芯片上有一个基于linux busybox的系统。我想在现场为用户提供更新,这需要更新/ lib / usr / bin和/ etc中的一些文件。我不认为直接解压缩文件是安全的。有没有一种安全的方法来执行此操作,包括可能正在使用的/ lib文件?

3 个答案:

答案 0 :(得分:2)

我非常喜欢嵌入式系统中的一些内容:

a)让根文件系统成为从flash中的映像解压缩的ramdisk。这很棒,因为你可以通过实验来了解它的内容,如果你搞砸了,你所需要的只是重新启动以恢复闪存配置。当您测试了一组您喜欢的更改后,您将生成一个新的压缩根文件系统映像并闪存。

b)使用诸如u-boot之类的引导程序来进行更新 - 刷新一个新的完整映像 - 而不是在运行时尝试更改linux系统。虽然闪存副本不是实时的,但实际上你可以在运行时闪烁。如果你刷了一个糟糕的版本,u-boot仍然可以闪现一个好的版本。

c)具有掩膜UART(甚至是USB)自举程序的处理器,使得系统不可砌成 - 只需要笔记本电脑和串行电缆或USB /串行转换器就可以进行维护(即获取)在flash上​​运行u-boot映像,然后使用它来获取正常工作的linux内核+压缩的根fs图像)

答案 1 :(得分:1)

理想情况下,您的闪存设备足够大,可以分成两个完整的文件系统,每次更新都会更新其他端(如果需要,还可以复制配置文件),并更新启动配置以从更新端启动

不太理想的是就地更新,但有一些检测启动失败的方法(例如,直到启动后才触摸看门狗),并且有一个较小的回退分区,它能够接受另一个更新并修复主分区

就实时文件系统的就地更新而言,只需使用一个真正的安装程序(在替换之前将目标文件移开,以避免您描述的问题)。

答案 2 :(得分:0)

上面你得到了两个很好的答案,我强烈建议你做你所建议的。

然而,有一种更简单的方法。事实上,如果执行此操作的过程是静态链接的,那么可以只是解压缩您的库。