我必须更新一些过时的嵌入式系统。但RAUC Update包含四个分区,而旧系统只有三个分区。
附加分区位于磁盘的开头,我无法使用外部适配器刷新设备。
我拥有的是对设备上现有 Linux 的 SSH 访问权限。
我可以在正在运行的系统中以某种方式更改分区表,从而移动系统分区吗?
或者我能以某种方式dd
用新映像覆盖整个磁盘吗?
我只是无法解决这个问题,而且我不确定我是否在这里缺少一个好的解决方案。
答案1
我在嵌入式系统上做了类似的事情。拯救我的是新磁盘(及其所有分区)的压缩映像足够小,可以保存在内存中。
我所做的是修补 initramfs 以包含自定义脚本。启动时,在安装任何内容之前,它将(压缩的)磁盘映像复制到 ramfs 文件系统中,并将其解压缩为dd of=/dev/<disk>
,完全覆盖一切,包括新的分区。
(我不得不费点力气才能保留某些文件。最后,我对想要保留的内容进行了 tarball,将其也放入 tmpfs 中,并将其解压到新的文件系统上。它运行得很好。)
我确信有更漂亮的解决方案,但这对我有用。
[编辑添加:]
另一种选择是在 initramfs 中添加一个小脚本,该脚本将通过网络拉入磁盘映像。在没有完整系统的帮助下,您必须弄清楚 IP 设置等,这可能会很尴尬。但我认为将脚本放在 initramfs 中可能是最好的选择,因为它可以从 ram 运行,无需安装任何磁盘,这样您就可以覆盖大部分内容。