gpt4 book ai didi

linux - 通过 GPRS 部署到嵌入式设备

转载 作者:太空宇宙 更新时间:2023-11-04 10:51:38 27 4
gpt4 key购买 nike

这里让我很头疼。我们在相距数百公里的 field 上有多个树莓派。我们需要能够安全地(大概)远程升级它们,因为本地访问的价格可能高达几百欧元。

raspis 运行 rasbian,/位于安装在 RO 中的 SD 卡上,以防止断电时损坏(通常每天一次)。 SD 卡是从相同的基础镜像克隆的,但包含手动安装的软件包和修改后的文件,这些文件可能因设备而异。 raspis 都有一个 USB 闪存作为更抗腐 eclipse 的 RW 驱动器和一个脚本来在启动时格式化它以防驱动器损坏。他们通过可靠性不同的 GPRS 连接给家里打电话。

系统要求如下:

  • 配置文件、脚本和二进制文件的简单版本控制,至少是/etc、/root 和 home,最好是 Git
  • 通过 GPRS 从任何版本高效地升级/降级到其他版本 -> 仅传输文件增量
  • 如果连接不再有效,可以自动回滚最近应用的补丁
  • 下载更改时根文件系统不能处于RW模式,更改需要在应用到/之前存储在本地

简单的方法可能是在远程 git 存储库中保留文件系统的完整副本,在提交之间生成差异文件,将补丁上传到现场并应用它。但是,目前不同 raspis 上的文件并不相同。这意味着,至少在安装系统时,必须通过类似于 rsync -a 的方式同步文件。

该过程应该遵循“将/和 ssh 文件夹之间的差异保存到 USB 内存棒上的文件,装载/RW,从文件应用差异,装载/RO”。 Rsync 同时进行差异获取和应用,所以我的第一个问题变成了:

1 是否存在类似 rsync 的东西可以从本地和远程保存文件增量并在以后应用它们?

此外,我从来没有制作过这样的系统,而且 drawt 是“我能想到的最接近合法的”。这里有很多事件部件,我很害怕我事先没有想到的事情会导致事情变得非常糟糕。我的其余问题是:

  1. 我是不是偏离了基本点,实际上是否有更智能/安全的方法来做到这一点?
  2. 如果不是,我应该遵循什么样的最佳实践以及什么样的事情要格外小心(不要使设备变砖)?
  3. 我如何处理诸如安装新程序之类的事情?绕过数据包管理器,安装在/opt?
  4. 如何管理权限/所有者(root+1 用户用于应用程序逻辑)?以 root 身份运行一切并希望获得最好的结果?

最佳答案

是的,这是一个非常宽泛的问题。这不会直接回答您的问题,而是为您的研究提供指导。

防止文件系统损坏的一种方法是使用覆盖文件系统(例如,AUFS、UnionFS),其中根文件系统以只读方式挂载,tmpfs(基于 RAM)或基于闪存的读写挂载为“over "只读根。这需要您自己的初始化脚本,包括使用 pivot_root 命令。由于 RW 上没有安装任何重要的东西,因此系统可以稳健地处理断电。 Gist 在 pivot_root 之前,FS 看起来像

/      read-only root (typically flash)
/rw tmpfs overlay
/aufs AUFS union overlay of /rw over /

在 pivot_root 之后

/      Union overlay (was /aufs
/flash read only root (was /)

对/flash 文件系统的更新是通过将其重新挂载为可读写、执行更新和重新挂载为只读来完成的。例如,

mount -oremount,rw <flash-device> /flash
cp -p new-some-script /flash/etc/some-script
mount -oremount,ro <flash-device> /flash

您可能会或可能不会立即看到/etc 中反射(reflect)的更改,具体取决于 tmpfs 覆盖层中的内容。

您可能会发现自己大量使用 chroot 命令,尤其是当您决定使用包管理器时。快速示例

mount -t proc none /flash/proc
mount -t sysfs none /flash/sys
mount -o bind /dev /flash/dev
mount -o bind /dev/pts /flash/dev/pts
mount -o bind /rw /flash/rw #
mount -oremount,rw <flash-device> /flash
chroot /flash
# do commands here to install packages, etc
exit # chroot environment
mount -oremount,ro <flash-device> /flash

学习使用补丁 命令。有二进制补丁命令How do I create binary patches? .

要在出现所有问题时进行 super 恢复,您需要硬件支持看门狗定时器以及从备用(辅助)根文件系统进行故障安全引导的能力。

如果您想要防弹产品,预计会花费大量时间和金钱。没有捷径。

关于linux - 通过 GPRS 部署到嵌入式设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30730666/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com