基于嵌入式 Linux 的设备通常需要一种机制来更新应用程序和系统文件。例如,带有 USB 端口的(非联网)实验室仪器可以从 USB 内存棒获取软件更新。
运行脚本将文件复制到设备内部闪存上的位置将是一件简单的事情。但是,存在设备在更新过程中断电并最终变成砖 block 的危险。
应用程序文件的情况稍微容易一些,因为有空间复制应用程序目录、更新一个副本并快速交换新旧目录,从而最大限度地减少故障窗口。
内核和系统文件的事情更加棘手,因为它们分布在整个文件系统中。
我们在文件系统中使用了硬链接(hard link)和软链接(soft link)来识别关键文件。我们对文件和文件使用哈希来验证文件完整性。如果从更新的文件系统启动失败,我们已经考虑在内核中使用紧急 ramfs 来提供回退。
你对这个要求有什么方法?
最佳答案
如果一定要保证可靠性,可以有两个flash分区(甚至是芯片),一个是当前工作配置,一个是新配置。然后使用硬件看门狗,它将重置单元并将事件的引导闪存分区切换到“最后一次正确”配置。
关于linux - 现场安全更新嵌入式 Linux 的推荐技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/287331/