当我们的远程Linux机箱启动时,我希望它检查更新的启动文件,并重新启动该新文件(首先验证其完整性)。
是否有Linux功能可以从给定的启动文件重启Linux? 例如: reboot_function(filepath); ..文件路径是Linux引导文件的路径和文件名,与之前引导的路径和文件名不同。
目的: 我试图创建一个100%电源中断容忍方式远程升级现场Linux软件。如果在上传的任何阶段断电,那么当重新启动时,Linux机箱需要返回上一个工作启动文件。
答案 0 :(得分:1)
你有什么版本的Linux?我不太了解但您想更新所有系统,库还是内核?这不是包装工具的责任,比如apt-get?
答案 1 :(得分:1)
只需使用kexec即可执行新内核,而无需触及引导加载程序配置。
答案 2 :(得分:1)
需要仔细考虑嵌入式系统的现场更新。我遇到的最常见的方法基本上有以下几个要素:
基本思想是引导参数包含当前引导库,而引导程序将引导内核映像驻留在该特定库中。在更新过程中,将使用较新的内核映像编写备份库。然后可以更新引导参数扇区。发生重置(执行此操作的方法很多),并且引导程序将知道引导备用库。请注意,更新或写入闪存的顺序在这里至关重要。必须最后写入引导参数扇区。
这可以有两种思想流派。第一个是永远不会更新一个引导库,并且包含足够稳固的映像以至少提供更新到更新引导库中。
另一个想法是有一个当前的引导库和以前的引导库。前一个银行将始终将更新写入其中。
除了这个基本思想外,还有几种方法可以帮助确保完整性。例如,内核映像可以具有与引导参数一起存储的校验和或散列。下载过程也应该有类似的检查。引导参数扇区的校验和也有助于确保其完整性。
这个基本想法可以扩展到满足您的特定需求。请记住,写订单非常重要。