linux - 现场安全更新嵌入式 Linux 的推荐技术

标签 linux embedded maintenance reliability

基于嵌入式 Linux 的设备通常需要一种机制来更新应用程序和系统文件。例如,带有 USB 端口的(非联网)实验室仪器可以从 USB 内存棒获取软件更新。

运行脚本将文件复制到设备内部闪存上的位置将是一件简单的事情。但是,存在设备在更新过程中断电并最终变成砖 block 的危险。

应用程序文件的情况稍微容易一些,因为有空间复制应用程序目录、更新一个副本并快速交换新旧目录,从而最大限度地减少故障窗口。

内核和系统文件的事情更加棘手,因为它们分布在整个文件系统中。

我们在文件系统中使用了硬链接(hard link)和软链接(soft link)来识别关键文件。我们对文件和文件使用哈希来验证文件完整性。如果从更新的文件系统启动失败,我们已经考虑在内核中使用紧急 ramfs 来提供回退。

你对这个要求有什么方法?

最佳答案

如果一定要保证可靠性,可以有两个flash分区(甚至是芯片),一个是当前工作配置,一个是新配置。然后使用硬件看门狗,它将重置单元并将事件的引导闪存分区切换到“最后一次正确”配置。

关于linux - 现场安全更新嵌入式 Linux 的推荐技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/287331/

相关文章:

java - LDAP绑定(bind)与搜索

linux - 根据文件内的模式匹配移动文件中的附件名称

linux - 如果临时文件存在于 Ubuntu 操作系统中,如何清理(删除)它们?

javascript - 使用压缩的 JavaScript 文件(不是运行时压缩)

http - 临时维护页面的最佳实践方法和状态代码是什么?

language-agnostic - 定期性能调优和维护

linux - 如何编译要使用 Gprof 进行分析的驱动程序

assembly - itte 臂组件

c - 我如何通过慢速 CAN 总线进行 printf 样式调试 - 在远程工具而不是嵌入式系统上使用常量字符串

client-server - 什么是维护与添加新功能?